俄罗斯方块:程序编写详解

俄罗斯方块:程序编写详解,第1张

俄罗斯方块:程序编写详解,第2张

Tc2.0写俄罗斯方块游戏
很多编程爱好者都写过俄罗斯方块游戏。很久以前,我也用Tc2.0做了一个;最近很多朋友看到我之前的俄罗斯方块程序,
问我怎么做的。一直想写一篇关于这个程序全过程的详细文章,分享给所有编程爱好者,但是一直没有空。现在正好放假,还有几天回家。于是我又写了这个程序,试图让程序的结构更清晰,更容易理解。同时,我写了以下内容。
俄罗斯方块的程序中使用了一些方法。为了更容易理解这些方法,我在讲述的同时,专门针对这些方法写了一些示例程序。这些示例程序尽可能短,目的是用最小的代码清楚地说明所使用的方法。这些样本程序都经过了tc2.0的测试,最后附上完整的俄罗斯方块游戏源代码和最终的可执行程序。如果你看完这篇文章后有任何意见和想法,请发邮件给我。我会继续更新这个内容,最新版本可以从我的个人主页下载。
以下问题是关于俄罗斯方块程序的。有些是朋友问的,有些我觉得可能会问。我试着从易到难排列这些问题。关于俄罗斯方块程序的一些问题:
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
TC 2.0中常用图形函数的用法?
如何获取键盘输入?
如何控制方块的移动?
如何控制时间间隔(用于控制游戏中形状的掉落)?
游戏中的各种形状以及整个游戏空是如何用数据表示的?
如何判断游戏中左右上下移动的可能性?
如何判断一个形状在游戏中旋转的可能性?
按下向下箭头键时,加速某个形状下落速度的过程?
如何判断某个形状已经到了尽头?
我怎么知道什么东西被填满了?
如何擦除已经填充的行?【/br/】某个形状掉到底部后,如何擦除所有可以擦除的线条?(比如在一个长条形里最多可以删除四行)
如何修改游戏板的状态?
如何统计分数?
升级后加速怎么处理?
如何判断比赛结束?
关于记分牌设计的问题。
关于“下一个”形状的选择问题。
剩下的问题。
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *[/br/
我想实现一个进度存储功能。我该怎么办?
TC 2.0中如何设置图形显示?
TC 2.0有两种显示模式,一种是大家熟知的字符模式,一种是图形模式。在字符模式下,只能使用显式字符,如ASCII字符。通常显示25
行80个字符。程序的默认设置是字符模式。在字符模式下,您不能显式地绘制图形。要显示和绘制图形,您必须切换到图形模式

在TC 2.0中,initgraph()函数可用于切换到图形模式,closegraph()可用于从图形模式切换回字符模式。initgraph()和closegraph()都是graph
函数,使用graph函数时必须包含头文件“graphics.h”。
void far init graph(int far * graph driver,int far *graphmode,char far * pathtodriver);Graphdriver是指向图形驱动序列号变量的指针;Graphmode是选择graphdriver后,指向图形显示模式的序列号变量的指针。Pathtodriver表示存储图形驱动程序文件的路径。
TC 2.0中的图形驱动有很多种,每种图形驱动都有几种图形显示模式。在我的程序中,图形驱动的序列号是VGA,图形显示模式的序列号是VGAHI。这是一种图形模式,分辨率为640*480(从左到右坐标为0-639,从上到下坐标为0-479),可以显示16种颜色。其他图形驱动程序序列号和图形显示模式序列号可在手册或在线帮助中找到。
PathToRiver表示存储图形驱动程序文件的路径。序列号不同,图形驱动文件也不同。VGA图形驱动的序列号对应图形驱动文件“egavga.bgi”。“egavga.bgi”一般在Tc目录下。
void far close graph(void);
没有参数,直接从图形模式返回字符模式。
init graph()和closegraph()的常用用法如下:
intgdriver = VGA,gmode = vgahi,错误代码;
/*初始化图形模式*/
initgraph(&gdriver,&gmode," e:\ \ tc2));
/*读取初始化结果*/
error code = graph result();
if(错误代码!= grOk) /*出现错误*/
{
printf("图形错误:%s\n ",grapherrormsg(error code));
printf("按任意键暂停:");
getch();
退出(1);/*返回错误代码*/
}
/*返回文本模式*/
closegraph();

TC 2.0中常用图形函数的用法?
下面是一些游戏中用到的画图的图形函数:
set color();
line();
rectangle();
settextjustify();
outtextxy();
setfillstyle();
bar();
void far set color(int color);
设置图形模式下绘制线条、框架和显示文本的当前颜色。该函数将影响line()、rectangle()和outtextxy()函数绘图的颜色。
颜色可以取常量颜色常量:
黑色?0
蓝色?1
绿色?2
青色?3
红色?4
洋红色?5
棕色?6
浅灰色?7
深灰色?8
浅蓝色?9
浅绿色?10
浅青色?11
浅红色?12
浅洋红色?13
黄色?14
白?15
void远线(int x1,int y1,int x2,int y2);
用当前颜色画一条从(x1,y1)到(x2,y2)的线段。
void far rectangle(int left,int top,int right,int bottom);
用当前颜色绘制一个左上角为(左,上)右下角为(右,下)的矩形框。
void far settextjustify(int horz,int vert);
设置图形模式下文本输出的对齐方式。主要影响outtextxy()函数。
horiz和vert可以取以下枚举常数:
horiz?LEFT_TEXT?0 ?文本左对齐
?CENTER_TEXT?1 ?居中文本
?右_文?2 ?右对齐文本
垂直?底_文?0 ?从底部对齐
?CENTER_TEXT?1 ?居中文本
?_TEXT?2 ?justify from top
void far out textxy(int x,int y,char * text string);
字符串textstring以当前字体(默认字体为DEFAULT_FONT)显示在(x,y)处,字符串的对齐方式由settextjustify()指定。
void far setfillstyle(int pattern,int color);
设置图形的填充方式和颜色,主要影响bar()等功能。
pattern一般取枚举常量值solid _ fill,color的值与setcolor(int color)中color的取值范围相同。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 俄罗斯方块:程序编写详解

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情