- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Win-TC(1.9)俄罗斯方块游戏
俄罗斯方块是一个经典的游戏,很多人都玩过,也有很多人用C语言编写过这个游戏。要成功编写好它,首先要了解俄罗斯方块共有几种形状以及每形状又有几种表现形态。俄罗斯方块共有7种形状,如下所示:
口 2、口 口 3、 口 4、口 5、 口
口 口 口 口 口 口 口 口 口 口
口 口 口
口 6、 口 口 7、 口 口
口 口
口 口
由上1至7种形状可看出它们有一个基本共同点,它们占有的空间位置是一样的,都是由4个小方块组成。根据此共性可用编号的方法来表示每一种形状的方块在空间上的位置,如下图所示:(用0~3号小方块表示一种形状)
X: 0 1 2 3
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轴坐标的行数。如:int fk70[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种。
第二要了解方块在游戏中运动方向或形态发生改变时的描述。接触面:
1 2 3
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 graphics.h
#include stdlib.h
#include bios.h
#include time.h
#define ESC 0x001b
#define LEFT 0x4b00
#define RIGHT 0x4d00
#defin
文档评论(0)