俄罗斯方块游戏(C语言).docx
《俄罗斯方块游戏(C语言).docx》由会员分享,可在线阅读,更多相关《俄罗斯方块游戏(C语言).docx(48页珍藏版)》请在咨信网上搜索。
1、俄罗斯方块游戏(C语言)摘要俄罗斯方块是一款风行全球的掌上游戏机和PC机游戏,它造成的轰动与 创造的经济价值可以说是游戏史上的一件大事。它由俄罗斯人阿列克谢帕基 特诺夫创造,故得此名。俄罗斯方块的基本规那么是移动、旋转和摆放游戏自动 输出的各种方块,使之排列成完整的一行或多行并且消除得分。它看似简单却 变化无穷,俄罗斯方块上手极其简单,但是要熟练地掌握其中的操作与摆放技 巧,难度却不低。作为家喻户晓老少皆宜的群众游戏,其普及程度可以说是史 上任何一款游戏都无法相比的。相信大多数人都还记得为它痴迷得茶不思饭不 想的那个俄罗斯方块时代。由于俄罗斯方块具有的数学性、动态性与知名度, 也经常拿来作为游
2、戏程序设计的练习题材:关键词:俄罗斯方块开发游戏编程程序开发AbstractsTetris is a fashionable global handheld game and PC games,it caused stir and create the economic value of gaming history is a great event.lt is invented by the Russian Alexey Pazhitnov.The basic rule of tetris is moving,rotation and put the Game output squares,
3、It an,anged in a complete row or a complete multi row,eliminate and score.lt seems simple but Full of change.As household the mass games all ages,Its popularity is any games that cannot be compared.Tetris often used for game programming practice subject.3.1.5 游戏速度分数更新当判断出一行满时,score变量一固定值(如10),可以吧等级l
4、evel看作是速 度speed,因为速度speed是根据计分score值不断上升的,所以我们定义 Ievel=speed=score/speed_step,其中 speed_step 是每升一级所需要的分数。方 块下落速度加快,这是不断修改了定时计数器变量TimerCounter判断条件的 结果。速度越快,时间中断的间隔就越短。3.1.6 游戏帮助实现比拟简单,使用outtextxy。函数实现。3.2数据结构设计3.2.1 游戏底板BOARD结构体Struct BOARD(Int var;Int color;Table_boardVertical_boxsHorizontal_boxs;BOA
5、RD结构体表示游戏底板中每个小方块所具有的属性。其中var表示小 方块当前状态,只有0与1两个值,表示此小方块已被占用,0表示未被占 用。Color表示小方块的颜色,游戏底板的每个小方块可以拥有不同的颜色, 以增强美观。Vertical.boxs为游戏底板上垂直的方向上小方块的个数, Horizontal_boxs为游戏底板上水平的方向上小方块的个数。3.2.2 游戏方块SHAPE结构体struct SHAPEchar box2;int color;/*每个方块的颜色*/int next;/*下个方块的编号*/);SHAPE结构体表示某个游戏方块具有的属性。其中,char box2表示用2 个
6、字节来表示这个游戏方块的形状。每4位来表示一个游戏方块的一行。 Color表示每个游戏方块的颜色,颜色可设为BLACK、BLUE、GREEN、 CYAN、RE、MAGENTA、BROWN、LIGHTGRAY、DARKGRAY、 LIGHTBLUE LIGHTCYAN LIGHTRED. LIGHTMAGENTA YELLOW 和 WHITEonext表示下个游戏方块的编号,在旋转时需要用到此编号。如box0=0x88”,boxl=0xc0”,其中0x88和OxcO为十六进制表示形式,具 体表现的含义如图3.3所示。1000 口 口1000 口 口1100 口 口0000 口 口图3.3 SHA
7、PE结构示意图3.2.3 SHAPE结构数组初始化游戏方块内容,即定义MAX.BOX个SHAPE类型的结构数组,并 初始化。MAX_BOX为19。应为一共有19种不同形状的俄罗斯方块。struct SHAPE shapesMAX_BOX=*口 口口 口口* 口*口 口*/0x88,OxcO,CYAN,1,0xe8,0x0,CYAN,2,0xc4,0x40,CYAN,3,0x2e,0x(),CYAN,(),* 口 口*口 口口口* 口 口 口*/0x44,OxcO,MAGENTA, 5,Ox8e,0x0,MAGENTA, 6,Oxc8,0x80,MAGENTA, 7,0xe2,0x0,MAGEN
8、TA, 4,口口 口口 口口口 口0x8c,0x40,YELLOW, 9),0x6c,0x0,YELLOW, 8,* 口口口* 口*/k0x4c,0xc6,0x80,0x0,BROWN,BROWN,11,10),* 口口 口 口口 口*/0x4e,0x0,WHITE,13,0x8c,0x80,WHITE,14,0xe4,0x0,WHITE,15,0x4c,0x40,WHITE,12,k*口*口口口口*/0x88,0x88,RED,,kOxfO,0x0,RED,16),* 口*口 口*/Oxcc,0x0,BLUE,18)103.3函数功能描述(1) newtimer()函数原型:void int
9、errupt newtimer(void)Newtimer。函数用于为新的时钟中断处理函数。(2) SetTimer()函数原型:void SetTimer(void interrupt(*IntProc)(void)SetTimer。函数用于设置新的时钟中断处理过程。(3) KillTimer()函数原型:void KillTimer()KillTimer。函数用于恢复原有的时钟中断处理过程。(4) initialize()函数原型:void initialize( int x,int y,int m,int n)Initialize。函数用于初始化界面,具体为在传入参数x、y指明位置上画m
10、行 n列小方块,并显示积分、等级、帮助及预览游戏方块等。(5) DelFullRow()函数原型:int DelFullRow(int y)DelFullRow。函数用于处理删除一满行的情况。Y指明具体哪一行为满行。(6) setFullRow()函数原型:void setFullRow(int t_boardy)setFullRow()函数用于找到满行,并调用DelFullRow。函数来处理满行。 t_boardy为在游戏底板中的垂直方向的坐标值。(7) MkNextBox()函数原型:int MkNextBox(int box_numb)MkNextBox。函数用于生成下一个游戏方块,并返
11、回方块号。Box.numb表 示当前的游戏方块号。(8) EraseBox()函数原型:void EraseBox(int x,int y,int box_numb)iiEraseBox。函数用于清除(x,y)位置开始的编号为box_numb的游戏方块。(9) show_box()函数原型:void show_box(int x,int y,int box_numb,int color)show_box()函数用于显示(x,y)位置开始的编号为box_numb的、颜色值为 color的游戏方块。(10) MoveAble()函数原型:int MoveAble(int x,int y,int b
12、ox_numb,int direction)MoveAble。函数判断是否可以移动。(x,y)为当前方块位置,box_numb为方 块号,direction为方向标志,返回true和false。(11)主函数main。整个游戏的主控局部。4.程序实现4.1 源码分析4.1.1 程序预处理包括加载头文件,定义结构体、常量和变量,并对它们进行初始化工作。/*加载头文件*/#include #include #include #include /*图形函数库*/*定义按键码*/#define VK_LEFT 0x4b00#define VK_RIGHT 0x4d0012#define VK_DOWN
13、 0x5000 #define VK_UP 0x4800 #define VK_ESC 0x01 lb#define TIMER Oxlc/*设置中断号号/*定义常量*/#define MAX.BOX 19/*总共有19种各形态的方块*/#define BSIZE 20/*方块的边长是20个象素*/# define Sys_x 160/*显示方块界面的左上角x座标*/define Sys_y 25/*显示方块界面的左上角y座标列# define Horizontal_boxs 10 /*水平的方向以方块为单位的长度*/define Vertical_boxs 15/*垂直的方向以方块为单位的长
14、度*/# define Begin_boxs_x Horizontal_boxs/2 /*产生第一个方块时出现的起始位置*/define FgColor 3/*前景颜色,如文字.2-green*/# define BgColor 0/*背景颜色.0-blac*/define LeftWin_x Sys_x+Horizontal_boxs*BSIZE+46 /*右边状态栏的 x 座标*/# define false 0define true 1/*移动的方向刃define MoveLeft 1# define MoveRight 2define MoveDown 3# define MoveRo
15、ll 4/*以后坐标的每个方块可以看作是像素点是BSIZE*BSIZE的正方形*/*定义全局变量*/int current_box_numb; /*保存当前方块编号*/int Curbox_x=Sys_x+Begin_boxs_x*BSIZE,Curbox_y=Sys_y; /*x,y 是保存方块 的当前坐标的*/int flag_newbox=false; /*是否要产生新方块的标记0*/13int speed=O;int speed=O;/*下落速度*/int score=0;/*总分*/int speed_step=3();/*每等级所需要分数*/void interrupt (*old
16、timer)(void); /*指向原来时钟中断处理过程入口的中断处 理函数指针*/struct BOARD/*游戏底板结构,表示每个点所具有的属性*/int var; /*当前状态只有。和1表示此点已被占用*/int color;/*颜色,游戏底板的每个点可以拥有不同的颜色.增强美观*/Table_boardVertical_boxsHorizontal_boxs;/*方块结构*/struct SHAPEchar box2;行/*一个字节等于8位,每4位来表示一个方块的一如:box0=0x88”,boxl=0xc0” 表示的是:1000100011000000*/int color;/*每个
17、方块的颜色*/int next;/*下个方块的编号号);/*初始化方块内容.即定义MAX.BOX个SHAPE类型的结构数组,并初始化*/struct SHAPE shapesMAX_BOX= 口 口口14* 口*口 口*/0x88,OxcO,CYAN,“,0xe8,0x0,CYAN,2,0xc4,0x40,CYAN,3,0x2e,0x0,CYAN,0, 口 口口 口0x44, OxcO, Ox8e, 0x0, 0xc8, 0x80, 0xe2, 0x0,MAGENTA, 5,MAGENTA, 6,MAGENTA, 7,MAGENTA, 4,* 口* 口口口口* 口口口*/0x8c, 0x40,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 俄罗斯方块 游戏 语言
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。