游戏代码编程教学文档(游戏编程代码大全)
怎么编程一个最简单游戏代码?
利用随机数猜大小,如下:
1、代码的第一行,是一个include语句。没有它我们的程序会编译不过。有了它就是告诉编译器在对代码进行编译之前,必须要包含程序需要的文件。这里的stdio.h就是我们需要的头文件。
2、代码第二行是一个main函数,这个main函数的返回值是一个int整型数据。刚开始学习编程的时候我们可以认为程序运行的时候是从main函数开始的。后续会专门给大家做一个介绍向大家说明在main函数之前还做了哪些事情。
3、每个函数都用一对“{}”进行包含,表示着函数体的开始和结束,当然后面说到控制语句的时候它还表示一段控制语句的开始和结束。
4、main函数中调用了一个printf函数。它是用来向控制台输出我们想要的内容。printf的函数定位格式为:int printf(constchar*format,...)。format中定义了输出内容和格式。
5、return函数执行完后。在退出函数体之前,会将函数进行返回。return后的内容根据函数返回值定义而定。在本段程序中返回的是整型数据0。
如何自己编程小游戏?
使用类编程思路清晰,可读性强,本例通过编写贪吃蛇展示类的基本应用。最终效果如下:
网页教学网:本文中全部的Fla源码在文章最后全部打包供大家下载研究学习使用。
看不懂链接名等内容的,可以看我的另一个教程“ 简单射击游戏教程 ”,或许有所帮助。全部源文件如下:贪吃蛇—类编程.rar
第一步:“蛇”类初始化
新建fla文件,同目录下新建as文件,取名Snake.as,类名必须和文件名相同。fla文件中新建蛇节点元件,链接名为node,第一帧和类中写入相应代码。
第一步:“蛇”类初始化.rar
第二步:蛇的移动
写个move方法,在init方法中设置时间间隔。
第二步:蛇的移动.rar
第三步: 键盘改变移动方向
写个changeDirection方法,在主场景第一帧用键盘事件调用该方法,控制蛇的方向。
第三步:键盘改变移动方向.rar
第四步:增加节点
写个addNode方法,新节点产生在蛇尾即nodes[length - 1]的位置上,暂时加个按钮调用addNode方法,观察结果。
第四步:增加节点.rar
第五步:碰撞判断
修改move方法,假如头节点与蛇身其他部位重合,clearInterval删除move的定时调用。同时changeDirection也要加多个判断,不能让头节点和第二节点重合,加多这个判断是为了防止一个Bug的产生,一些贪吃蛇程序并没有注意到这点。这个Bug产生原因如下:
假设蛇向右移动,是不能进行向左改变方向,但由于move方法是定时调用的,比如每300毫秒一次,所以在这300毫秒内可能进行了多次快速按键。第一次按向下,蛇的xDirection和yDirection改变为向下,但move的执行时间没到,又紧接着按左,因为蛇方向在数据上已经改变,所以捕捉不到不能向左的判断,快速按键造成蛇反向移动的Bug就产生了,加个上述判断就好了。
第五步:碰撞判断.rar
第六步:食物类编写
新建Food类,注意用extends继承MovieClip,这样元件才能链接它,在主场景中新建食物元件,链接Food类,实例名为food,拖入场景。在Food中写入appear和disappear方法,做两个临时按键调用它们观察效果。
第六步:食物类编写.rar
最终完成:吃食物
Food中定时调用appear,并通过setSnake引入Snake实例snake,判断蛇身坐标不让新食物与之重合。Snake中通过setFood引入Food实例food,判断是否吃到食物,做出相应处理,如食物消失,增加蛇节点,改变setSnake。场景第一帧也要setSnake引入蛇头。
以后还要增加新功能,如阻碍物设置等,都可以通过改变as文件完成。虽然类编程比直接控制影片较为繁琐,但由于使用了面向对象,以后再对程序进行完善时都可依照对象行为思考,每个方法就是对象的每个行为,什么行为需要改变就找对应的方法修改,思路清晰。
c++编程小游戏代码
以下是贪吃蛇源代码:
?
#includeiostream.h
#includewindows.h
#includetime.h
#includestdlib.h
#includeconio.h
#define?N?21
void?gotoxy(int?x,int?y)//位置函数{
COORD?pos;
pos.X=2*x;
pos.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
void?color(int?a)//颜色函数{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}
void?init(int?apple[2])//初始化函数(初始化围墙、显示信息、苹果)
{
int?i,j;//初始化围墙
int?wall[N+2][N+2]={{0}};
for(i=1;i=N;i++)
{
for(j=1;j=N;j++)
wall[i][j]=1;
}
color(11);
for(i=0;iN+2;i++)
{
for(j=0;jN+2;j++)
{
if(wall[i][j])
cout"■";
else?cout"□"?;
}
coutendl;
}
gotoxy(N+3,1);//显示信息
color(20);
cout"按?W?S?A?D?移动方向"endl;
gotoxy(N+3,2);
color(20);
cout"按任意键暂停"endl;
gotoxy(N+3,3);
color(20);
cout"得分:"endl;
apple[0]=rand()%N+1;//苹果
apple[1]=rand()%N+1;
gotoxy(apple[0],apple[1]);
color(12);
cout"●"endl;
}
int?main()
{
int?i,j;
int**?snake=NULL;
int?apple[2];
int?score=0;
int?tail[2];
int?len=3;
char?ch='p';
srand((unsigned)time(NULL));
init(apple);
snake=(int**)realloc(snake,sizeof(int*)*len);
for(i=0;ilen;i++)
snake[i]=(int*)malloc(sizeof(int)*2);
for(i=0;ilen;i++)
{
snake[i][0]=N/2;
snake[i][1]=N/2+i;
gotoxy(snake[i][0],snake[i][1]);
color(14);
cout"★"endl;
}
while(1)//进入消息循环
{
tail[0]=snake[len-1][0];
tail[1]=snake[len-1][1];
gotoxy(tail[0],tail[1]);
color(11);
cout"■"endl;
for(i=len-1;i0;i--)
{
snake[i][0]=snake[i-1][0];
snake[i][1]=snake[i-1][1];
gotoxy(snake[i][0],snake[i][1]);
color(14);
cout"★"endl;
}
if(kbhit())
{
gotoxy(0,N+2);
ch=getche();
}
switch(ch)
{
case?'w':snake[0][1]--;break;
case?'s':snake[0][1]++;break;
case?'a':snake[0][0]--;break;
case?'d':snake[0][0]++;break;
default:?break;
}
gotoxy(snake[0][0],snake[0][1]);
color(14);
cout"★"endl;
Sleep(abs(200-0.5*score));
if(snake[0][0]==apple[0]snake[0][1]==apple[1])//吃掉苹果后蛇分数加1,蛇长加1
{
score++;
len++;
snake=(int**)realloc(snake,sizeof(int*)*len);
snake[len-1]=(int*)malloc(sizeof(int)*2);
apple[0]=rand()%N+1;
apple[1]=rand()%N+1;
gotoxy(apple[0],apple[1]);
color(12);
cout"●"endl;
gotoxy(N+5,3);
color(20);
coutscoreendl;
}
if(snake[0][1]==0||snake[0][1]==N||snake[0][0]==0||snake[0][0]==N)//撞到围墙后失败
{
gotoxy(N/2,N/2);
color(30);
cout"失败!!!"endl;
for(i=0;ilen;i++)
free(snake[i]);
Sleep(INFINITE);
exit(0);
}
}
return?0;
}