C语言小游戏开发

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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()
0 黑色
1 蓝色
2 绿色
3 青色
4 红色 8 深灰
5 洋红 9 深蓝
6 棕色 10 淡绿
来自百度文库
7 淡灰 11 淡青
12 淡红 13 淡洋红 14 黄色 15 白色
如果你现在运行游戏的话,可能发现主角和“心”不见了,这是因为主角和 “心”的颜色和背景的颜色相同。我们接下来来修改 draw()让主角和心显示不
接下来,就让我们把游戏做得更漂亮些。我们添加一个头文件 conio.h,很 多文字效果函数都在这个头文件里面。代码如下:
#include <conio.h>
我们先把背景颜色设置为白色,我们在 main 里面第一行添加:
textbackground(15);
textbackground 是改变背景颜色的函数,括号里面的参数分别代表的颜色如 下:
第二步:控制角色
接下来,我们想方设法来让我们的主角可以根据我们的按键而动起来。当我 们按下键盘“上”的时候,主角就往上移动。其他方向亦是如此。
我们先来看看如何判断按键的输入呢, 在 bios.h 头文件中有一个 bioskey 函 数,可以判断我们的按键。我们可以通过如下的结构来判断按键: while("") {
if(map[i][j]==1){gotoxy(j+1, i+1);printf("%c",3);}
} gotoxy(x, y); printf("%c",2); }
现在让我们编译一下看看效果,大家应该能够看到地图上有许多“心”, 如下图。
第四步:判断吃“心”
我们在 void main()前面来定义一个函数 tell(),这个函数的作用就是判断 角色是否“吃”到“心”了,如果吃到了,就让相应地“心”消失。代码如下: void tell() {
这个数组总共有 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++) {
现在就让我们来定义这个二维数组,我这里以总共有 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,};
感言
学习游戏制作,有利于我们对编程思想的了解贯通,希望大家在学习中再 接再厉。本教程虽然只是从一个实例来说明 c 语言的游戏制作方法,但是你可以 自己推广到其他类型或者其他游戏的开发中,也可以使用其他语言来尝试编程。
我的邮箱是 tyxxxx@qq.com 如果大家有好的想法,希望我们能共同分享,谢 谢大家的支持。
#include <bios.h> 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; }
{ if(map[y-1][x-1]==1){map[y-1][x-1]=0 ;n++;} if(n>=n0){ clrscr();printf("win");getch();}
} 你可以通过各种办法把胜利画面做得更加漂亮,现在让我们运行一下。吃
完所有的“心”后,你应该能看到如下画面。
第六步:美化
} }
好了,大家接下来就可以运行一下看看效果了,我们现在可以按键盘上的上 下左右键来控制屏幕中笑脸的移动了。效果如下图所示:
第三步:显示地图
接下来,让我们来开始制作地图。我们可以用一个二维数组把屏幕上每个“格 子”都对应起来,当对应屏幕上相应格子的二维数组的值为 0 时,屏幕在那个位 置不显示任何内容,而当它的值为 1 的时候,屏幕上显示一个“心”。
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); } 这样子,一个简单的游戏例子就完成了,运行后大家应该能够看到如下界面:
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() {
同的颜色。其中 textcolor(参数)就是一个可以设置输出字符颜色的函数,括号 里的参数与 textbackground()里的参数是一样的。同时为了能更好地显示带颜 色的字符,我们把 printf()换成一个更适用于显示带颜色字符的 cprintf()。修 改后的 draw()代码如下: void draw(int x,int y) {
大家看到,我们这里调用 stdio.h,这个头文件包含了很多输入输出的函数, 我们这里用到 printf 函数和 getch 函数都包含在 stdio.h 头文件中。只要调用 stdio.h 才能使用以上两个函数。程序从 main()开始执行后有两个语句。 printf("%c",2);其中的 2 是显示 ASCII 码序号为 2 的那个字符,看起来就像一个 笑脸,其他的 ASCII 码大家可以从网上搜索到。而对于 getch();我们可以当做是 等待按键输入的函数,如果没有按键输入,程序就被卡在 getch();的地方,这样 程序才不会很快就结束了。
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;
当按键为上时发生什么事 当按键为下时发生什么事 当按键为左时发生什么事 当按键为右时发生什么事 } 其中的 while(""){……}就是将{}里面的内容无限次地循环。同时我们可以通 过 switch 语句来判断玩家到底按了哪个按键。 再来说说两个会用到的函数,clrscr 函数是清屏函数,也就是把屏幕上的内 容清空。gotoxy(横坐标, 纵坐标)这个函数会把光标移动到我们指定的坐标,使 后面的输出在指定位置开始。 为了调用的方便,我们还添加一个函数 draw 专门来负责显示。 看看我们修改后的代码, 中间的内容是注释 #include <stdio.h>
第一步:创建角色
首先,我们打开我们的编程软件,可以 tc20 或者 tc30 等,我这里就用 win-tc 作为演示。 我们新建一个文件,先将其保存,并命名为 game.c 然后然我们通过简单的编程来显示我们的主角,这里我们以一个笑脸字符来代表 主角。 #include <stdio.h> main() { printf("%c",2); getch(); }
相关文档
最新文档