- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7 俄罗斯方块游戏界面的设计与实现
实验目的:
理解Windows API应用程序接口,并学会使用
掌握利用API函数控制光标在控制台移动的方法
掌握C程序的基本结构,编写规范的程序
掌握循环结构的程序设计方法
掌握全局变量的定义和使用
实验内容:
综合应用所学知识,设计俄罗斯方块游戏的界面,如下图1所示:
图1 俄罗斯方块游戏界面
游戏界面分为两大区域:游戏区域和信息提示区域。其中:
游戏区域高度为20个单位,宽度为10个单位,为该区域绘制边框时,上下边框使用“┅”,左右边框“┇”,四角的边框分别使用“┏”、“┓”、“┗”、“┛”进行绘制。
信息提示区域高度为20个单位,宽度为4个单位。除了边框外,还有三个信息,即“NEXT”、“SCORE”、“LEVEL”。他们分别表示下一个要下落方块的类型、玩家当前得分和等级。这三个提示文字分别在该区域的第2、8、14行显示,并在每一行空一个字符位置处显示。
一般情况下,控制台的光标是随着输入/输出向后移动的,而利用Windows API函数,可以将光标移动到控制台的任意位置,这里介绍一下移动光标的方法。
#include stdio.h
#includewindows.h
HANDLE g_hOutput; //声明一个句柄
void MySetCursor(int x, int y) //自定义的光标定位函数
{
COORD cd = {x, y}; //定义坐标
//调用Windows API中设置光标位置的函数,传入句柄和位置信息做参数
SetConsoleCursorPosition(g_hOutput, cd);
}
void main()
{
//通过调用Windows API函数返回一个标准输出的句柄,并为句柄变量赋值
g_hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
MySetCursor(2, 3); //将光标定位到标准输出的第3行第2列的位置
printf(World!);
MySetCursor(0, 0); //将光标定位到标准输出的第0行第0列的位置
printf(Hello);
}
输出结果为:
图2 输出结果图
实现俄罗斯方块游戏界面的源代码如下:
#include string.h
#include stdio.h
#includewindows.h
#includestdlib.h
#define HEIGHT 20 //定义游戏区域高度
#define WIDTH 10 //定义游戏区域宽度
const int SysAlign= WIDTH*2+4 + 3; //提示文字起始水平坐标
const int NextLine=2; //“NEXT”所在垂直坐标
const int ScoreLine=8; //“SCORE”所在垂直坐标
const int LevelLine=14; //“Level”所在垂直坐标
int iScore, iLevel; //玩家的即时得分,等级
HANDLE g_hOutput; //声明一个句柄
void MySetCursor(int x, int y) //本游戏中适用的光标定位函数
{
COORD cd = {x, y};
//调用Windows API中设置光标位置的函数,传入句柄和位置信息做参数
SetConsoleCursorPosition(g_hOutput, cd);
}
//注意:一个┅占2个字符宽度
void DrawBoarder(int x, int y, int h, int w)
{
int i;
for (i=0;iw;i++)
{
MySetCursor(x+2*i+2, y); //依次定位上边线边框位置的坐标 printf(┅);
MySetCursor(x+2*i+2, y+h+1); //依次定位下边线边框位置的坐标
printf(┅);
}
for (i=0; i h; i++)
{
MySetCursor(x, y+i+1); //依次定位左边线边框位置
您可能关注的文档
- 低碳经济与碳币论研究低碳经济与碳币论研究.doc
- 低碳经济与可持续发展考试(85分)低碳经济与可持续发展考试(85分).doc
- 低碳经济公需科目继续教育考试试题低碳经济公需科目继续教育考试试题.doc
- 低碳经济对企业理财环境的影响低碳经济对企业理财环境的影响.doc
- 低碳经济公需科目考试题库低碳经济公需科目考试题库.doc
- 低年级数学生活化的研究课题结题报告低年级数学生活化的研究课题结题报告.doc
- 低碳经济发展模式的初步研究—以中国为例低碳经济发展模式的初步研究—以中国为例.doc
- 低调的奢华——浅析珠绣在服装设计中的应用低调的奢华——浅析珠绣在服装设计中的应用.doc
- 低速电动小绞车毕业设计低速电动小绞车毕业设计.doc
- 低碳考试:杭州市建设低碳城市的标志性建筑低碳考试:杭州市建设低碳城市的标志性建筑.doc
- 俄罗斯民间故事人物形象俄罗斯民间故事人物形象.doc
- 俄罗斯的旅游纪念品带给我们的启示俄罗斯的旅游纪念品带给我们的启示.doc
- 俄罗斯钢琴乐派及其教学特点俄罗斯钢琴乐派及其教学特点.doc
- 俄罗斯方块游戏设计报告俄罗斯方块游戏设计报告.doc
- 俎亮平党的群众路线教育实践活动中查摆出的问题俎亮平党的群众路线教育实践活动中查摆出的问题.doc
- 保健品新常态下的制胜策略!保健品新常态下的制胜策略!.doc
- 保健食品、化妆品案例(转)保健食品、化妆品案例(转).doc
- 保健食品中非法添加化学药品的现状与危害保健食品中非法添加化学药品的现状与危害.doc
- 保健食品中低聚糖的选择保健食品中低聚糖的选择.doc
- 俄罗斯方块游戏的设计_java课设_含可运行程序俄罗斯方块游戏的设计_java课设_含可运行程序.doc
文档评论(0)