用C语言写的小游戏-xcz

gucheng_bw 贡献于2014-12-25

作者 微软用户  创建于2011-04-14 09:45:00   修改者微软用户  修改于2012-04-21 11:01:00字数3803

文档摘要:第一步:创建角色首先,我们打开我们的编程软件,可以tc20或者tc30等,我这里就用win-tc作为演示。我们新建一个文件,先将其保存,并命名为game.c然后然我们通过简单的编程来显示我们的主角,这里我们以一个笑脸字符来代表主角。
关键词:

第一步:创建角色 首先,我们打开我们的编程软件,可以tc20或者tc30等,我这里就用win-tc作为演示。 我们新建一个文件,先将其保存,并命名为game.c 然后然我们通过简单的编程来显示我们的主角,这里我们以一个笑脸字符来代表主角。 #include main() { printf("%c",2); getch(); } 大家看到,我们这里调用stdio.h,这个头文件包含了很多输入输出的函数,我们这里用到printf函数和getch函数都包含在stdio.h头文件中。只要调用stdio.h才能使用以上两个函数。程序从main()开始执行后有两个语句。printf("%c",2);其中的2是显示ASCII码序号为2的那个字符,看起来就像一个笑脸,其他的ASCII码大家可以从网上搜索到。而对于getch();我们可以当做是等待按键输入的函数,如果没有按键输入,程序就被卡在getch();的地方,这样程序才不会很快就结束了。 第二步:控制角色 接下来,我们想方设法来让我们的主角可以根据我们的按键而动起来。当我们按下键盘“上”的时候,主角就往上移动。其他方向亦是如此。 我们先来看看如何判断按键的输入呢, 在bios.h头文件中有一个bioskey函数,可以判断我们的按键。我们可以通过如下的结构来判断按键: while("") { 当按键为上时发生什么事 当按键为下时发生什么事 当按键为左时发生什么事 当按键为右时发生什么事 } 其中的while(""){……}就是将{}里面的内容无限次地循环。同时我们可以通过switch语句来判断玩家到底按了哪个按键。 再来说说两个会用到的函数,clrscr函数是清屏函数,也就是把屏幕上的内容清空。gotoxy(横坐标, 纵坐标)这个函数会把光标移动到我们指定的坐标,使后面的输出在指定位置开始。 为了调用的方便,我们还添加一个函数draw专门来负责显示。 看看我们修改后的代码, 中间的内容是注释 #include #include int x=10, y=10;   void draw(int x,int y) { clrscr(); gotoxy(x, y); printf("%c",2); }     void main() { draw(x,y); while("") { switch(bioskey(0)) { case 18432: y-=1;draw(x,y);break; case 20480: y+=1; draw(x,y);break; case 19200: x-=1; draw(x,y);break; case 19712: x+=1; draw(x,y);break; }   } }   好了,大家接下来就可以运行一下看看效果了,我们现在可以按键盘上的上下左右键来控制屏幕中笑脸的移动了。效果如下图所示:       第三步:显示地图 接下来,让我们来开始制作地图。我们可以用一个二维数组把屏幕上每个“格子”都对应起来,当对应屏幕上相应格子的二维数组的值为0时,屏幕在那个位置不显示任何内容,而当它的值为1的时候,屏幕上显示一个“心”。 现在就让我们来定义这个二维数组,我这里以总共有15行和15列来作为演示,大家可以根据实际需要来增加。我们在int x=10, y=10;的后面加上以下代码: int map[15][15]={ 1,1,0,1,0,0,0,0,0,0,0,0,0,0,1, 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1,0,0,0,0,0,1,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,}; 这个数组总共有15*15=225个数,我在这里把花括号里面的数值分为15行,每行15列是为了让我们编辑时的代码格式和我们将来屏幕上显示的一致。数值中大部分的值是0,而有小部分是1,我们将在代码为1的地方(也就是屏幕上对应的坐标)来显示一个“心”的符号。 我们先在int x=10, y=10;后面定义两个变量,用来控制循环。代码如下: int i,j; 接下来我们来修改draw函数,让我们的地图被显示出来。修改后draw函数的代码如下,其中中间的内容是注释。 void draw(int x,int y) { clrscr(); for(i=0;i<15;i++) for(j=0;j<15;j++) { if(map[i][j]==1){gotoxy(j+1, i+1);printf("%c",3);} } gotoxy(x, y); printf("%c",2); }   现在让我们编译一下看看效果,大家应该能够看到地图上有许多“心”,如下图。 第四步:判断吃“心” 我们在void main()前面来定义一个函数tell(),这个函数的作用就是判断角色是否“吃”到“心”了,如果吃到了,就让相应地“心”消失。代码如下: void tell() { if(map[y-1][x-1]==1){map[y-1][x-1]=0;} } 然后我们在main()中来调用tell(),修改后的相应代码如下: …… switch(bioskey(0)) { case 18432: y-=1; tell();draw(x,y);break; case 20480: y+=1; tell();draw(x,y);break; case 19200: x-=1; tell();draw(x,y);break; case 19712: x+=1; tell();draw(x,y);break; } …… 我们就这样在主角坐标变化后进行判断。我们编译一下看看效果,你应该能把地图上的“心”给吃掉了。 第五步:胜利判断 我们要在主角吃完所有的“心”后显示胜利信息,因此我们在int i,j;后面定义两个变量n0和n,并让他们的初始值为0。其中n0将用来计算游戏开始时总共有多少个“心”,n将用来计算已经有多少个“心”被主角吃掉了。代码如下: int n0=0,n=0; 我们在main()后面来计算n0的值,代码如下: main() { for(i=0;i<15;i++) for(j=0;j<15;j++) if(map[j][i]==1)n0=n0+1; …… 这样我们就能对map中每个数进行列举并判断它的值是不是1,如果是1则让n0增加1。这样子n0就能计算游戏开始时总共有多少个“心”了。 我们现在来修改tell()让游戏能判断出我们是否已经胜利。修改如下: void tell() { if(map[y-1][x-1]==1){map[y-1][x-1]=0 ;n++;} if(n>=n0){ clrscr();printf("win");getch();} } 你可以通过各种办法把胜利画面做得更加漂亮,现在让我们运行一下。吃完所有的“心”后,你应该能看到如下画面。 第六步:美化 接下来,就让我们把游戏做得更漂亮些。我们添加一个头文件conio.h,很多文字效果函数都在这个头文件里面。代码如下: #include 我们先把背景颜色设置为白色,我们在main里面第一行添加: textbackground(15); textbackground是改变背景颜色的函数,括号里面的参数分别代表的颜色如下: 0 黑色 1 蓝色 2 绿色 3 青色 4 红色 5 洋红 6 棕色 7 淡灰 8 深灰 9 深蓝 10 淡绿 11 淡青 12 淡红 13 淡洋红 14 黄色 15 白色 如果你现在运行游戏的话,可能发现主角和“心”不见了,这是因为主角和“心”的颜色和背景的颜色相同。我们接下来来修改draw()让主角和心显示不同的颜色。其中textcolor(参数)就是一个可以设置输出字符颜色的函数,括号里的参数与textbackground()里的参数是一样的。同时为了能更好地显示带颜色的字符,我们把printf()换成一个更适用于显示带颜色字符的cprintf()。修改后的draw()代码如下: void draw(int x,int y) { clrscr(); textcolor(9); for(i=0;i<15;i++) for(j=0;j<15;j++) { if(map[i][j]==1){gotoxy(j+1, i+1);cprintf("%c",3);} } textcolor(2); gotoxy(x, y); cprintf("%c",2); } 这样子,一个简单的游戏例子就完成了,运行后大家应该能够看到如下界面:   感言 学习游戏制作,有利于我们对编程思想的了解贯通,希望大家在学习中再接再厉。本教程虽然只是从一个实例来说明c语言的游戏制作方法,但是你可以自己推广到其他类型或者其他游戏的开发中,也可以使用其他语言来尝试编程。

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档