一步一步教你写贪吃蛇

来源:本站
导读:目前正在解读《一步一步教你写贪吃蛇》的相关信息,《一步一步教你写贪吃蛇》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《一步一步教你写贪吃蛇》的详细说明。
简介:一个完整的贪吃蛇游戏要包括显示控制、输入控制、运动控制、状态判断、随机数的产生、难度控制等等多个方面,通过对一个游戏完整的研究,会对自己的编程能力有一个很大的提升。

第一章 为什么闲着没事写贪吃蛇

很多人不明白,为什么我闲着没事要写个贪吃蛇游戏呢?小时候的游戏机这个游戏早就玩够了。其实我们写贪吃蛇,不是用来玩的,而是通过编写一个有些学习一下编程的思想。

一个完整的贪吃蛇游戏要包括显示控制、输入控制、运动控制、状态判断、随机数的产生、难度控制等等多个方面,通过对一个游戏完整的研究,会对自己的编程能力有一个很大的提升。

那么游戏很多,为什么我们要选择贪吃蛇来编写,而不选择俄罗斯方块、赛车、拳皇、超级玛丽来写呢?

第一、 贪吃的显示简单,你可以用LCD来显示、当让你可以用LED点阵来显示,甚至如果你有耐心的话可以焊几排发光二极管来显示。这样很多人都可以参与到,另外我们还可以利用这个特点探讨一下标准化编程,这个在以后我们再讨论。但是俄罗斯方块你恐怕最低也要整个3310来显示吧。拳皇呢?呵呵

第二、 贪吃蛇编写难度适中,如果你来编写俄罗斯方块,首先要取很多方块的模,它的规则也多,考虑的也多,这个就比贪吃蛇难了一层,第一次编写游戏,应该尽量选择难度相对较低的。

第三、 贪吃蛇有群众基础,我想这个就比较好理解了,我再和别人讨论贪吃蛇的时候,一般是不必向他介绍贪吃蛇是一种什么游戏,因为贪吃蛇几乎所有人都玩过,但是其它游戏就不见得有这么广泛的群众基础了

那么写贪吃蛇程序你要准备些什么呢?

处理部分:单片机最小系统。

显示部分:LCD1286433105110LED点阵发光二极管阵列 任意都可以

输入部分:就是按键,起码要5个吧,上、下、左、右、确定

编写部分:能看得懂c语言的人脑袋一个

有了这些,就可以开始编写我们的贪吃蛇了。

第二章 开始我们的准备工作

准备好了我们的几个硬件以后,我们就开始检查我们的硬件工作是否工作了。

首先,处理部分你做出一个单片机最小系统,随便下载一个程序进去,如果好使就说明你的最小系统工作啦。

第二、显示部分你要写出两个函数,让你的你的显示部分在任意位置显示一个点和熄灭一个点

Disp(unsigned char x,unsigned char y)

Mei(unsigned char x,unsigned char y)

这个是怎么怎么实现就要靠大家自己来做了(废话,我都不知道你用什么东西显示)

第三、输入装置你要再写出一个函数,要让你的输入装置工作Keydown()

我们调用这个函数以后,key这个变量会等于按下的按键的编号,如果没有俺家按下,那么key=0;

抱歉,这个也需要大家自己搞定(我也不知道你怎么接的电路图)至于脑袋就不用测了。

第三章 让你的蛇跑起来

下面节目正式开始:

我们这一章的任务是让蛇跑起来,我们把任务分成两个部分

第一、 让蛇显示出来

第二、 让蛇跑起来

首先我们让蛇显示出来,其实所谓的”蛇”,在我们的眼中就是一条连起来的点阵组成的线

比如(0,0),(1,0),(2,0)这三个点就是一个横着的蛇。有了我们刚才的函数,我们只要写一个函数比如

Void Main(void)

Disp(0,0);

Disp(1,0);

Disp(2,0);

我们就可以在屏幕上看到一个由三个点组成的“蛇”了。

那么下面的我们的工作就是让这条蛇“跑”起来。

首先,我们要考虑一下这个蛇的“跑”包含了几个动作,其实这个“跑”包含了三个动作

1、 蛇尾熄灭。无论你蛇向哪里动,蛇尾的那个点都是熄灭,所以为了让蛇动起来,我们首先就是写出mei(0,0);这个函数

2、 各个蛇身运动到它前一个蛇身的位置:比如说我们的蛇开始的坐标是(0,0)(1,0)(2,0)运动过后便成了 (1,0)(2,0)(3,0)。

你观察就会发现蛇身的这一规律所以我们再写出这个函数

3、 蛇头向你要求的方向运动。比如说蛇头开始的坐标是(2,0)你要求蛇向右运动,那么蛇头的坐标就会便成(3,0),向下运动就会编程(2,1)

就是这三个运动合成,就便成了蛇身体的整体的移动。

好啦闲话少絮,让我们开始动手写几个函数吧,今天我们的工作的目标就是看到蛇在屏幕上运动。

为了方便,我们应该用两个数组来存蛇的位置。

比如我们定义两个数组分别叫做

Xshu[]

Yshu[]

假设两个数组分别Xshu[]={0,1,2}

Yshu[]={0,0,0}

那么蛇的位置就是(0,0)(1,0)(2,0)了

因为以后我们的蛇以后是会变长的,所以我们把数组变得稍大一点。

这样写会好一点:

#define uchar unsigned char

#define uint unsigned int

#define SNAKE 20 //最大长度

uchar xshu[SNAKE],yshu[SNAKE];

这样我们可以根据自己屏幕的情况自己定义蛇的最大长度。

然后我们再定义一个变量changdu来表示现在的蛇的长度,(英语水平不足,也为了直观,以后变量用汉语拼音表示,莫见笑呀)

我们写第一个函数先让蛇显示出来

#include <reg51.h> //51芯片管脚定义头文件

#define uchar unsigned char //这个纯属是为了方便哈,没啥意义

#define uint unsigned int //参见上一句的注释

#define SNAKE 20 //最大长度

uchar xshu[SNAKE],yshu[SNAKE]; //定义两个数组来表示蛇的位置

uchar changdu; //用这个玩意表示现在蛇的长度

void delay(uint dt) //这个是延时函数,谁都需要它

{

uchar bt;

for(;dt;dt--)

for(bt=0;bt<255;bt++);

}

void init(uchar chang)//用这个函数做些初始化的设定之类的东西,hang是你开始设定蛇的长度是多少。

{

Changdu=chang;

for(i=0;i<chang;i++)

{

xshu[i]=i;

yshu[i]=0;

}//这个是初始化的x依次增加,y始终是零,这样出来一个横着的蛇。

for(i=0;i<changdu;i++)

{

play(xshu[i],yshu[i]);

}这个让蛇显示出来的函数delay(100); 延时一会不要也行

}

Void main(void)

{

Init(3);//3可以换成你要求的任意长度,看你的屏幕了

While(1)

{;

}

}

这样,我们就看到屏幕上你要求长度的小蛇了。下面我们的工作就是让这条蛇运动起来啦。很简单,按照上文的结论,三步走。

mie(xshu[0],yshu[0]); //先把蛇尾给熄灭掉

for(k=0;k<changdu-1;k++)

{

xshu[k]=xshu[k+1];

yshu[k]=yshu[k+1];

} //蛇身都是它前一段的蛇身的位置

xshu[changdu-1]=xshu[changdu-2]+1;

yshu[changdu-1]=yshu[changdu-2]+0;//蛇头向你要求的方向移动,我的现在的这个是向右移动动。同理向左移动x加-1,y加0。向上移动x加0,y加-1.向下移动x加0,y加1.

for(j=0;j<changdu;j++)

{

play(xshu[j],yshu[j]);

} //这个就是让新的蛇的位置显示出来。

这样我们只要把这段函数加入,蛇就可以向右移动了。

可是我们是需要按键控制蛇上下左右移动的,下面我们就来加入按键。

首先,我们定义两个变量,分别来表示x,y分别增加多少,用来表示蛇头的移动的方向,就叫做xfangxiang,yfangxiang吧。由于可能是负数,我就给定义成char型的。

然后我们刚才的函数

xshu[changdu-1]=xshu[changdu-2]+1;

yshu[changdu-1]=yshu[changdu-2]+0;

改成

xshu[changdu-1]=xshu[changdu-2]+xfangxiang;

yshu[changdu-1]=yshu[changdu-2]+yfangxiang;

我们只要通过按键改变这两个变量的数,就可以控制蛇的方向了。当按键按下时我们把xfangxiang,yfangxiang改成需要的数字,然后让蛇正常行走就可以了。

提醒:《一步一步教你写贪吃蛇》最后刷新时间 2024-03-14 01:05:40,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《一步一步教你写贪吃蛇》该内容的真实性请自行鉴别。