主要内容就是设计蛇的形状和方向,以及食物的产生与位置,先创建一个Point对象point,由多个point 组合成蛇身,当蛇吃到食物时,则增加一个point在蛇身上,使蛇身不断加长,同时利用随机函数在游戏面板上产生一个新的Food对象代替原来被“吃掉”的food,其次,玩家使用方向键来控制蛇的行进,当蛇吃到 food 就给玩家加分作为奖励,最后就可以得出用户的分数。
设计的目的在于学习Java程序设计基本技术,学习用MyEclipse开发Java程序的相关技术,以及熟悉项目开发的完整过程。学会怎样进行一个项目的需求分析、概要设计、详细设计等软件开发过程,熟练地掌握Java程序设计的基本技术和方法,以及熟练地掌握MyEclipse开发环境的使用方法,培养初步的项目分析能力和程序设计能力。
游戏实现的具体任务如下:
1) 游戏的开始,停止,暂停,继续。 根据用户单击的按钮(开始,停止,暂停,继续),游戏实现具体相应的功能。
2) 游戏难度的调整。 用户可以通过选择相应难度地形来设置游戏的难度级别,级别越高,游戏难度也越大。
3) 游戏帮助。单击游戏帮助按钮d出一个消息框提供相应的游戏介绍。另外在游戏中提供了网格对每一块小方块进行包裹,玩家可以选择是否显示网格,可以帮助刚入门的玩家比对蛇头与食物的位置。
4) 蛇身和背景颜色的设置。可以通过单击相应的设置按钮让蛇身或背景的颜色以用户喜欢的颜色输出。另外如果玩家选择显示网格,也可以单击相应按钮设置网格线的颜色。
5) 游戏奖励。当蛇吃到一颗食物时则得到10分作为奖励,同时如果吃到
特殊的食物则会得到普通食物三倍的奖励。但特殊的食物会在一定时间内自动消失。
这有一个最简单的贪吃蛇的控制过程。
一般对于此类的游戏,都分为控制算法,显示算法,判定算法等几个大部分。
供参考:
#include <stdioh>
#include <windowsh>
#include <stdlibh>
#include <stringh>
#include <conioh>
#include <timeh> //使用当前时间做种子;
enum dir{up,down,left,right}; //枚举类型enum dir;
//围墙;
void InitFence();
void OutputF();
char game[20][20];
//画框框;
void InitFence(){
int i,j;
for(i=0; i<20; i++)
for(j=0; j<20; j++){
if(i==0||i==19||j==0||j==19)
game[i][j]= '';
else game[i][j]= ' ';
}
}
//显示框框;
void OutputF(){
int i,j;
for(i=0; i<20; i++){
for(j=0; j<20; j++)
printf("%c ",game[i][j]);
printf("\n");
}
}
//蛇结点;
struct SnakeNode{
int x,y;
struct SnakeNode prior,next;
}head=NULL, tail =NULL;
void add_head(int x,int y);
int get_x(struct SnakeNode p);
int get_y(struct SnakeNode p);
void delete_tail();
//插入头结点;
void add_head(int x,int y){
struct SnakeNode q= (struct SnakeNode )malloc(sizeof(struct SnakeNode));
q->x =x; q->y =y;
q->next =head;
q->prior =NULL;
if(head) head->prior =q;
head =q;
if(!tail) tail =head;
game[x][y]= ''; //f对象可以在定义Fence类时定义; 且Fence类在SnakeNode类前定义;
}
int get_x(struct SnakeNode p){
return p->x;
}
int get_y(struct SnakeNode p){
return p->y;
}
//删除尾结点;
void delete_tail(){
struct SnakeNode p =tail;
game[get_x(tail)][get_y(tail)]= ' ';//把尾结点的坐标表示的''置为空格;
if(tail==head)
tail= head= NULL;
else{
tail= tail->prior;
tail->next= NULL;
}
free(p);
}
//move移动;
struct move{
enum dir point; //枚举变量point: 控制方向;
int food_x;
int food_y;
};
void moving(struct move m);
void change_point(char,struct move m); //改变方向;
void get_food(struct move m);
void get_food(struct move m){
srand((unsigned int) time(NULL)); //做种子(程序运行时间);
m->food_x= rand()%18+1;
m->food_y= rand()%18+1;
game[m->food_x][m->food_y]= '';
}
void moving(struct move m){
int a,b;
a= get_x(head); //取得头结点横坐标
b= get_y(head); //头结点纵坐标
switch(m->point){
case up: --a; break;
case down: ++a; break;
case left: --b; break;
case right: ++b; break;
}
if(a==19||b==19||a==0||b==0){ //判断是否撞墙;
printf("game over!!!\n");
exit(0);
}
if(a==m->food_x && b==m->food_y){ //吃food;
add_head(a,b);
get_food(m);
}
else{
add_head(a,b); //插入头结点;
delete_tail(); //删除尾结点;
}
}
void change_point(char keydown,struct move m){
switch(keydown){
// case 'w': m->point= up; break;
// case 's': m->point= down; break;
// case 'a': m->point= left; break;
// case 'd': m->point= right; break;
case 72: m->point= up; break;
case 80: m->point= down; break;
case 75: m->point= left; break;
case 77: m->point= right; break;
}
}
//main();
int main(){
struct move m;
printf("Using 'w,s,a,d'to control direction!!!\n\n\n");
InitFence();
add_head(4,3);
add_head(4,4);
add_head(4,5);
get_food(&m);
OutputF();
while (1){
char keydown= getch(); //getch()返回键盘上读取的字符;包含头文件<conioh>
change_point(keydown,&m);
while(!kbhit()){ //判断有没有按键落下;
system("cls"); //清屏函数;
moving(&m);
OutputF();
Sleep(200);
}
}
return 0;
}
用慧编程做贪吃蛇代码过程如下:
1、我们需要建立四个头文件,然后分别设置蛇的状态,上下左右,这是蛇能够有方向可走的前提,然后我们再设置蛇身的节点,定义一个简单的函数,这样蛇的全身以及他的行走方向就弄完了。
2、贪吃蛇不能穿墙代码。
3、第二步,一个函数这个函数的目的是贪吃蛇不能穿墙,很简单的代码分别设置长宽的最大位移,在内部范围内设置为一即可通过,否则不能穿墙。贪吃蛇随机生成一个食物。
4、设置一个随机函数。这样贪吃蛇代码就做好了。
慧编程是一款面向STEAM教育领域的积木式和代码编程软件,基于图形化编程开发。
以上就是关于贪吃蛇游戏设计的目的及内容全部的内容,包括:贪吃蛇游戏设计的目的及内容、求经典小游戏(五子棋 贪吃蛇 俄罗斯方块等)c++ 源代码。最好能有软件设计过程 我想学思路、如何用慧编程做贪吃蛇代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)