1 / 35
文档名称:

WinTC俄罗斯方块游戏.doc

格式:doc   大小:109KB   页数:35页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

WinTC俄罗斯方块游戏.doc

上传人:镜花水月 2019/5/6 文件大小:109 KB

下载得到文件列表

WinTC俄罗斯方块游戏.doc

文档介绍

文档介绍:薇Win-TC()俄罗斯方块游戏肅俄罗斯方块是一个经典的游戏,很多人都玩过,也有很多人用C语言编写过这个游戏。要成功编写好它,首先要了解俄罗斯方块共有几种形状以及每形状又有几种表现形态。俄罗斯方块共有7种形状,如下所示:袄衿口2、口口3、口4、口5、口艿口口口口口口口口口口袄口口口羄口6、口口7、口口芀口口蚇口口羇由上1至7种形状可看出它们有一个基本共同点,它们占有的空间位置是一样的,都是由4个小方块组成。根据此共性可用编号的方法来表示每一种形状的方块在空间上的位置,如下图所示:(用0~3号小方块表示一种形状)肄X:0123蚁0莈3蚆肄肂1袆蒄膄膈2薈芃芄蕿肆芆莄羀螈Y:0肅1蒃2莁3膆螄图1、方块编号图示薃由图1可清楚看到:0号至2号方块位于X轴的第0列,位于Y轴分别为0行、1行、2行,3号方块位于X轴第1列,位于Y轴第0行。在程序中可用一个8位数组表示这个形状的数据,前4位表示X轴坐标的列数,后4位为Y轴坐标的行数。如:intfk70[8]={0,0,0,1,0,1,2,0};螂因为俄罗斯方块游戏的缓存区就是用一个二维数组表示的,用上方法描述方块的空间位置,正好对应上缓存数组。如在缓存数组的第3行第5列输出图1的形状方块,只要把表示图形的列行数据加上输出位置的列行数,就能正确的在游戏区域输出图1的方块。羈俄罗斯方块共有19种表现形态分别为:1有2种,2只有一种,3有4种,4和5各有2种,袇6和7各有4种。蚃第二要了解方块在游戏中运动方向或形态发生改变时的描述。接触面:罿123蚀0薆1蚃3莀肇0莅螃0螁1蝿2膃袃2膁芇膆1羃芈罿羅3肃虿蒇蚄膂2肀腿螇节蒁薇蒆节袂3荿芅莂罿螆肄上图形状1、2、3在自由下落时的接触面为橘黄小方块的底面,在左右移动时又各不相同。蒂2号形状在左右移动时都是0至3号小方块,只分左右两个侧面。莀1号形状在左移时为0和2号的左边面,在右移时为2和3号的右边面。蒈3号形状左为0和3,右为2和3。肆三消行的描述:检测游戏缓存区的每一行中的各列是否都已存了小方块,是消除此行方块,清空该行的缓存区,然后把上一行的方块下移一行存入相应的缓存区,再把原来的缓存区清空。程序描述用递归函数实现。薂四判断游戏结束描述:游戏区域没有足够的空间容纳将要输出的方块时结束游戏并退出。螀五程序执行间隔时间(时钟即方块移动速度)描述:本程序用delay()函数功能使程序暂停执行一段时间(毫秒)实现。羆作为一个C语言学****游戏编程案例,现在用WIN-TC纯C语言编译游戏过程,其功能如下:游戏开始后,游戏区域上方不断出现预定义好的方块形状下坠物,方块坠物可通过小键盘方向键(↑)旋转改变它的形态,向左移动(←),向右移动(→),加快下坠速度(空格键),并且不断地往下坠,直到它接触到游戏区域底部或其它之前已经累叠起的下坠方块。当下坠方块停止下坠后,它的位置矢量确定下来并占有该区域的缓存空间。当游戏区域的某一行缓存空间全部被占满后,则清除该行的所有方块,上面的方块向下移动一行占有该行的缓存空间,同时稀放原来的缓存空间。当新的下坠方块没有缓存空间出现在游戏区域时,游戏结束。袅游戏难易分三等级:初、中、高,分数在0到5000为初级,5000分以上为中级,10000以上为高级。级别越高,方块的下落速度越快。蚂膁蚈蚄螂蚂膆蚇袁蝿袈蒆袁膀薀膅羁薁羈羄肁羂螀图1、游戏界面图2、游戏中(中级)羇膁游戏程序源如下:肈#include<>***#include<>螅#include<>芁#include<>葿#defineESC0x001b衿#defineLEFT0x4b00薄#defineRIGHT0x4d00薅#defineUP0x4800袀#defineSPACE32莇#defineFKSIZE15/*方块大小*/薇#defineGFKSIZE(FKSIZE+2)/*方块列距大小*/蚅#definePSIZE11芁#definePSIZE2(GFKSIZE+1)聿#definePSIZE3(2*GFKSIZE+1)莆#definePSIZE4(3*GFKSIZE+1)螄#defineWTOP50/*游戏区域Y坐标起始值*/蚂#defineWLEFT180/*游戏区域X坐标起始值*/薇#defineROW15/*游戏区最大行数据*/肅#defineCOLUNM10/*游戏区最大列数据*/袄/*方块矢量位置(4个)*/衿intbegin0[4]={PSIZE1,PSIZE2,PSIZE3,PSIZE4};艿intGFKColor[7]={2,3,12,5,6,10,11};/*方块颜色列表*/袄/*羄方块形状共7种芀方块坠落形态共19种(用如下方式表示)蚇1:羇fk10[]“口”(x:位于列号[0,0