贪吃蛇程序设计报告(html贪吃蛇报告遇到的问题及解决方法)

2026-09-06 06:15:02 :0

贪吃蛇程序设计报告(html贪吃蛇报告遇到的问题及解决方法)

今天给各位分享html贪吃蛇报告遇到的问题及解决方法的知识,其中也会对html贪吃蛇报告遇到的问题及解决方法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录

html贪吃蛇报告遇到的问题及解决方法

1、游戏画面显示不正常:可能是由于HTML或CSS代码错误导致的。解决方法是检查代码并进行修正。
2、操作体验不佳:可能是由于JavaScript代码逻辑错误或优化不足导致的。解决方法包括优化算法,减少运算量等。
3、碰撞检测失效:碰撞检测是贪吃蛇游戏中非常关键的一环,如果实现不好,可能会导致游戏无法正常进行。解决方法是仔细调试代码,确保每个元素的位置和大小都被正确计算和记录。
4、性能问题:当贪吃蛇长度增加时,游戏的运行速度可能会变慢,影响游戏的流畅性。解决方法包括优化代码,减少不必要的操作等。

贪吃蛇程序设计报告

#include《graphics.h》
#include《stdlib.h》
#include《dos.h》
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define ESC 0x011b
int i,key;
int score=0;
int gamespeed=32000;
struct Food /*食物的结构体*/
{
int x; /*食物的横坐标*/
int y; /*食物的纵坐标*/
int yes; /*食物是否出现的变量*/
}food;
struct Snack /*蛇的结构体*/
{
int x;
int y;
int node; /*蛇的节数*/
int direction; /*蛇的方向*/
int life; /*蛇的生命,0活着,1死亡*/
}snake;
void Init(void); /*图形驱动*/
void Close(void); /*关闭游戏函数*/
void DrawK(void); /*画图函数*/
void GameOver(void);/*输出失败函数*/
void GamePlay(); /*游戏控制函数 主要程序*/
void PrScore(void); /*分数输出函数*/
DELAY(char ch)/*调节游戏速度*/
{
if(ch==’3’)
{
delay(gamespeed); /*delay是延迟函数*/
delay(gamespeed);
}
else if(ch==’2’)
{
delay(gamespeed);
}
}
Menu()/*游戏开始菜单*/
{
char ch;
printf("Please choose the gamespeed:\n");
printf("1-Fast 2-Normal 3-Slow\n");
printf("\nPlease Press The numbers..\n");
do
{ch=getch();}
while(ch!=’1’&&ch!=’2’&&ch!=’3’);
clrscr();
return(ch);
}
/*主函数*/
void main(void)
{
int ch;
ch=Menu();
Init();
DrawK();
GamePlay(ch);
Close();
}
void Init(void)
{
int gd=DETECT,gm;
initgraph(&gd,&gm,"c:\\tc");
cleardevice();
}
void DrawK(void)
{
setcolor(11);
setlinestyle(SOLID_LINE,0,THICK_WIDTH);
for(i=50;i《=600;i+=10)
{
rectangle(i,40,i+10,49); /*画出上边框*/
rectangle(i,451,i+10,460); /*画出下边框*/
}
for(i=40;i《=450;i+=10)
{
rectangle(50,i,59,i+10); /*画出左边框*/
rectangle(601,i,610,i+10); /*画出右边框*/
}
}
void GamePlay(char ch)
{
randomize(); /*随机数发生器*/
food.yes=1; /*1代表要出现食物,0表示以存在食物*/
snake.life=0;
snake.direction=1;
snake.x=100;
snake.x=100;
snake.node=2;
PrScore();
while(1) /*可以重复游戏*/
{
while(!kbhit()) /*在没有按键的情况下蛇自己移动*/
{
if(food.yes==1) /*需要食物*/
{
food.x=rand()%400+60;
food.y=rand()%350+60; /*使用rand函数随机产生食物坐标*/
while(food.x%10!=0)
food.x++;
while(food.y%10!=0)
food.y++; /*判断食物是否出现在整格里*/
food.yes=0; /*现在有食物了*/
}
if(food.yes==0) /*有食物了就要显示出来*/
{
setcolor(GREEN);
rectangle(food.x,food.y,food.x+10,food.y-10);
}
for(i=snake.node-1;i》0;i--) /*贪吃蛇的移动算法*/
{
snake.x;
snake.y; /*贪吃蛇的身体移动算法*/
}
switch(snake.direction) /*贪吃蛇的头部移动算法,以此来控制移动*/
{
case 1:snake.x+=10;break;
case 2:snake.x-=10;break;
case 3:snake.y-=10;break;
case 4:snake.y+=10;break;
}
for(i=3;i《snake.node;i++) /*判断是否头部与身体相撞*/
{
if(snake.x)
{
GameOver();
snake.life=1;
break;
}
}
/*下面是判断是否撞到墙壁*/
if(snake.x》455)
{
GameOver();
snake.life=1;
}
if(snake.life==1) /*如果死亡就退出循环*/
break;
if(snake.x==food.y) /*判断蛇是否吃到食物*/
{
setcolor(0);
rectangle(food.x,food.y,food.x+10,food.y-10); /*吃的食物后用黑色将食物擦去*/
snake.x=-20; /*现把增加的一节放到看不到的地方去*/
snake.node++;
food.yes=1;
score+=10;
PrScore();
}
setcolor(4); /*每次移动后将后面的身体擦去*/
for(i=0;i《snake.node;i++)
rectangle(snake.x-10);
delay(gamespeed);
DELAY(ch);
setcolor(0);
rectangle(snake.x-10);
}
if(snake.life==1)
break;
key=bioskey(0); /*接受按键*/
if(key==ESC)
break;
else
if(key==UP&&snake.direction!=4)/*判断是否改变方向*/
snake.direction=3;
else
if(key==RIGHT&&snake.direction!=2)
snake.direction=1;
else
if(key==LEFT&&snake.direction!=1)
snake.direction=2;
else
if(key==DOWN&&snake.direction!=3)
snake.direction=4;
}
}
void GameOver(void)
{
cleardevice();
setcolor(RED);
settextstyle(0,0,4);
outtextxy(200,200,"GAME OVER");
getch();
}
void PrScore(void)
{
char str;
setfillstyle(SOLID_FILL,YELLOW);
bar(50,15,220,35);
setcolor(6);
settextstyle(0,0,2);
sprintf(str,"scord:%d",score);
outtextxy(55,20,str);
}
void Close(void)
{
getch();
closegraph();
}
贪吃蛇
#include "graphics.h"
#include "stdio.h"

#define MAX 200
#define MAXX 30
#define MAXY 30

#define UP 18432
#define DOWN 20480
#define LEFT 19200
#define RIGHT 19712
#define ESC 283
#define ENTER 7181
#define PAGEUP 18688
#define PAGEDOWN 20736
#define KEY_U 5749
#define KEY_K 9579
#define CTRL_P 6512
#define TRUE 1
#define FALSE 0
#define GAMEINIT 1
#define GAMESTART 2
#define GAMEHAPPY 3
#define GAMEOVER 4

struct SPlace
{
int x;
int y;
int st;
} place;
int speed;
int count;
int score;
int control;
int head;
int tear;
int x,y;
int babyx,babyy;
int class;
int eat;
int game;
int gamedelay={5000,4000,3000,2000,1000,500,250,100};
int gamedelay2={1000,1};
static int hitme=TRUE,hit = TRUE;
void init(void);
void nextstatus(void);
void draw(void);

void init(void)
{
int i;
for(i=0;i《MAX;i++)
{
place.x = 0;
place.y = 0;
place.st = FALSE;
}
place.st = TRUE;
place.st = TRUE;
place.x = 1;
speed = 9;
count = 0;
score = 0;
control = 4;
head = 1;
tear = 0;
x = 1;
y = 0;
babyx = rand()%MAXX;
babyy = rand()%MAXY;
eat = FALSE;
game = GAMESTART;
}
void nextstatus(void)
{
int i;
int exit;
int xx,yy;
xx = x;
yy = y;
switch(control)
{
case 1: y--; yy = y-1; break;
case 2: y++; yy = y+1; break;
case 3: x--; xx = x-1; break;
case 4: x++; xx = x+1; break;
}
hit = TRUE;
if ( ((control == 1) || (control ==2 )) && ( (y 《 1) ||(y 》= MAXY-1)) ||
(((control == 3) || (control == 4)) && ((x 《 1) ||(x 》= MAXX-1) ) ) )
{
hit = FALSE;
}

if ( (y 《 0) ||(y 》= MAXY) ||
(x 《 0) ||(x 》= MAXX) )
{
game = GAMEOVER;
control = 0;
return;
}
for (i = 0; i 《 MAX; i++)
{
if ((place.st) &&
(x == place.x) &&
(y == place.y) )
{
game = GAMEOVER;
control = 0;
return;
}
if ((place.st) &&
(xx == place.x) &&
(yy == place.y) )
{
hit = FALSE;
goto OUT;
}

}
OUT:
if ( (x == babyx) && (y == babyy) )
{
eat = TRUE;
count ++;
score += (1+class) * 10;
}

head ++;
if (head 》= MAX) head = 0;
place.x = x;
place.y = y;
place.st= TRUE;
if (eat == FALSE)
{
place.st = FALSE;
tear ++;
if (tear 》= MAX) tear = 0;
}
else
{
eat = FALSE;
exit = TRUE;
while(exit)
{
babyx = rand()%MAXX;
babyy = rand()%MAXY;
exit = FALSE;
for( i = 0; i《 MAX; i++ )
if( (place.y == babyy))
exit ++;
}

}
if (head == tear) game = GAMEHAPPY;

}
void draw(void)
{
char temp;
int i,j;
for (i = 0; i 《 MAX; i++ )
{
setfillstyle(1,9);
if (place.st)
bar(place.y*10+9);
}
setfillstyle(1,4);
bar(babyx*15+1,babyy*10+1,babyx*15+14,babyy*10+9);
setcolor(8);
setfillstyle(1,8);
bar(place.y*10+9);
/* for( i = 0; i 《= MAXX; i++ )
line( i*15,0, i*15, 10*MAXY);
for( j = 0; j 《= MAXY; j++ )
line( 0, j*10, 15*MAXX, j*10);
*/
rectangle(0,0,15*MAXX,10*MAXY);
sprintf(temp,"Count: %d",count);
settextstyle(1,0,2);
setcolor(8);
outtextxy(512,142,temp);
setcolor(11);
outtextxy(510,140,temp);
sprintf(temp,"1P: %d",score);
settextstyle(1,0,2);
setcolor(8);
outtextxy(512,102,temp);
setcolor(12);
outtextxy(510,100,temp);
sprintf(temp,"Class: %d",class);
setcolor(8);
outtextxy(512,182,temp);
setcolor(11);
outtextxy(510,180,temp);
}
main()
{
int pause = 0;
char temp;
int d,m;
int key;
int p;
static int keydown = FALSE;
int exit = FALSE;
int stchange = 0;
d = VGA;
m = VGAMED;
initgraph( &d, &m, "" );
setbkcolor(3);
class = 3;
init();
p = 1;
while(!exit)
{
if (kbhit())
{
key = bioskey(0);
switch(key)
{
case UP: if( (control != 2)&& !keydown)
control = 1;
keydown = TRUE;
break;
case DOWN: if( (control != 1)&& !keydown)
control = 2;
keydown = TRUE;
break;
case LEFT: if( (control != 4)&& !keydown)
control = 3;
keydown = TRUE;
break;
case RIGHT: if( (control != 3)&& !keydown)
control = 4;
keydown = TRUE;
break;
case ESC: exit = TRUE;break;
case ENTER: init();break;
case PAGEUP: class --; if (class《0) class = 0; break;
case PAGEDOWN: class ++;if (class》7) class = 7; break;
case KEY_U: if( ( (control ==1) ||(control ==2))&& !keydown)
control = 3;
else if(( (control == 3) || (control == 4))&& !keydown)
control = 1;
keydown = TRUE;
break;
case KEY_K: if( ( (control ==1) ||(control ==2))&& !keydown)
control = 4;
else if(( (control == 3) || (control == 4))&& !keydown)
control = 2;
keydown = TRUE;
break;
case CTRL_P:pause = 1 - pause; break;
}
}
stchange ++ ;
putpixel(0,0,0);
if (stchange 》 gamedelay)
{
stchange = 0;
keydown = FALSE;
p = 1 - p;
setactivepage(p);
cleardevice();
if (!pause)
nextstatus();
else
{
settextstyle(1,0,4);
setcolor(12);
outtextxy(250,100,"PAUSE");
}
draw();

if(game==GAMEOVER)
{
settextstyle(0,0,6);
setcolor(8);
outtextxy(101,101,"GAME OVER");
setcolor(15);
outtextxy(99,99,"GAME OVER");
setcolor(12);
outtextxy(100,100,"GAME OVER");
sprintf(temp,"Last Count: %d",count);
settextstyle(0,0,2);
outtextxy(200,200,temp);
}

if(game==GAMEHAPPY)
{
settextstyle(0,0,6);
setcolor(12);
outtextxy(100,300,"YOU WIN");
sprintf(temp,"Last Count: %d",count);
settextstyle(0,0,2);
outtextxy(200,200,temp);
}
setvisualpage(p);
}
}
closegraph();
}
具体的编译和界面还是要靠你。

文章分享结束,贪吃蛇程序设计报告和html贪吃蛇报告遇到的问题及解决方法的答案你都知道了吗?欢迎再次光临本站哦!

贪吃蛇程序设计报告(html贪吃蛇报告遇到的问题及解决方法)

本文编辑:admin

更多文章:


字符串“\t\t\t”的长度?编写算法,将字符串t插入到字符串s中第i个字符位置

字符串“\t\t\t”的长度?编写算法,将字符串t插入到字符串s中第i个字符位置

其实字符串t的问题并不复杂,但是又很多的朋友都不太了解字符串“\t\t\t”的长度,因此呢,今天小编就来为大家分享字符串t的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录字符串“\t\t\t”的长度编写算法,将字

2026年2月1日 00:45

全栈java工程师培训(北大青鸟java培训:Java全栈工程师需要掌握哪些知识)

全栈java工程师培训(北大青鸟java培训:Java全栈工程师需要掌握哪些知识)

其实全栈java工程师培训的问题并不复杂,但是又很多的朋友都不太了解北大青鸟java培训:Java全栈工程师需要掌握哪些知识,因此呢,今天小编就来为大家分享全栈java工程师培训的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分

2025年6月12日 22:30

最终幻想7核心危机(最终幻想7核心危机等级怎么提升)

最终幻想7核心危机(最终幻想7核心危机等级怎么提升)

各位老铁们好,相信很多人对最终幻想7核心危机都不是特别的了解,因此呢,今天就来为大家分享下关于最终幻想7核心危机以及最终幻想7核心危机等级怎么提升的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录最终幻想7核心危机

2026年8月12日 01:30

wrap在服装上是什么意思(英语服装设计专业术语大全,英语服装设计专业术语大全)

wrap在服装上是什么意思(英语服装设计专业术语大全,英语服装设计专业术语大全)

今天给各位分享英语服装设计专业术语大全,英语服装设计专业术语大全的知识,其中也会对英语服装设计专业术语大全,英语服装设计专业术语大全进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录英语服装设计专业术语大全,英语

2025年10月2日 02:00

汉语程序设计语言(汉语程序设计语言的介绍)

汉语程序设计语言(汉语程序设计语言的介绍)

今天给各位分享汉语程序设计语言的介绍的知识,其中也会对汉语程序设计语言的介绍进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录汉语程序设计语言的介绍汉语程序设计语言的发展历程汉语程序设计语言的编译原理中文编程语言

2025年9月21日 11:00

pytorch lightning(PyTorch Lightning 中的批量测试及其存在的问题)

pytorch lightning(PyTorch Lightning 中的批量测试及其存在的问题)

各位老铁们,大家好,今天由我来为大家分享pytorch lightning,以及PyTorch Lightning 中的批量测试及其存在的问题的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动

2025年12月1日 20:15

hoisting什么意思(musical fountain是什么意思)

hoisting什么意思(musical fountain是什么意思)

各位老铁们好,相信很多人对hoisting什么意思都不是特别的了解,因此呢,今天就来为大家分享下关于hoisting什么意思以及musical fountain是什么意思的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本

2026年3月7日 04:00

找几首俄罗斯风格的歌曲?俄罗斯的女歌手

找几首俄罗斯风格的歌曲?俄罗斯的女歌手

今天给各位分享找几首俄罗斯风格的歌曲的知识,其中也会对找几首俄罗斯风格的歌曲进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录找几首俄罗斯风格的歌曲俄罗斯的女歌手欧洲杯丹麦0:1芬兰俄罗斯最有名的女歌手是谁马克欣

2026年8月9日 08:30

container可数吗(饼干是可数名词还是不可数名词)

container可数吗(饼干是可数名词还是不可数名词)

本篇文章给大家谈谈container可数吗,以及饼干是可数名词还是不可数名词对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录饼干是可数名词还

2025年12月27日 00:30

大于等于号符号复制(大于等于符号是什么)

大于等于号符号复制(大于等于符号是什么)

这篇文章给大家聊聊关于大于等于号符号复制,以及大于等于符号是什么对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录大于等于符号是什么电脑大于等于号怎么打出来怎么用电脑打出大于等于号大于等于号怎么打出来大于等于的符号是什么大于等于

2025年10月9日 23:00

java与mysql建立连接(java怎么连mysql数据库)

java与mysql建立连接(java怎么连mysql数据库)

大家好,关于java与mysql建立连接很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于java怎么连mysql数据库的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所

2025年7月22日 15:15

rank函数递减次序排名(如何利用rank函数,降序“成绩排名”)

rank函数递减次序排名(如何利用rank函数,降序“成绩排名”)

今天给各位分享如何利用rank函数,降序“成绩排名”的知识,其中也会对如何利用rank函数,降序“成绩排名”进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录如何利用rank函数,降序“成绩排名”excel中RA

2026年3月4日 05:45

满二叉树和完全二叉树到底有什么区别,他们定义不是差不多?请解释“满二叉树一定是完全二叉树,而完全二叉树不一定是满二叉树”谢谢了!

满二叉树和完全二叉树到底有什么区别,他们定义不是差不多?请解释“满二叉树一定是完全二叉树,而完全二叉树不一定是满二叉树”谢谢了!

各位老铁们好,相信很多人对满二叉树都不是特别的了解,因此呢,今天就来为大家分享下关于满二叉树以及满二叉树和完全二叉树到底有什么区别,他们定义不是差不多的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录满二叉树和完全

2025年8月4日 22:00

java编写网络代码(如何用70行Java代码实现深度神经网络算法)

java编写网络代码(如何用70行Java代码实现深度神经网络算法)

大家好,java编写网络代码相信很多的网友都不是很明白,包括如何用70行Java代码实现深度神经网络算法也是一样,不过没有关系,接下来就来为大家分享关于java编写网络代码和如何用70行Java代码实现深度神经网络算法的一些知识点,大家可以

2026年7月1日 19:15

frustrated 中文(有含义的英文名)

frustrated 中文(有含义的英文名)

各位老铁们,大家好,今天由我来为大家分享frustrated 中文,以及有含义的英文名的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录有含义的英文名

2026年9月4日 08:15

switch case后面(switch中case后是)

switch case后面(switch中case后是)

“switch case后面”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看switch case后面(switch中case后是)!本文目录switch中case后是switch某个符合条件的case后不加break,为什

2026年2月26日 10:00

服务器租用网站(网站服务器租用那家最好,最划算)

服务器租用网站(网站服务器租用那家最好,最划算)

大家好,关于服务器租用网站很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于网站服务器租用那家最好,最划算的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本文目录

2026年5月19日 22:30

进程管理有哪些特性(操作系统一般具有哪些特征,这些特征在进程管理中是如何体现的)

进程管理有哪些特性(操作系统一般具有哪些特征,这些特征在进程管理中是如何体现的)

各位老铁们,大家好,今天由我来为大家分享进程管理有哪些特性,以及操作系统一般具有哪些特征,这些特征在进程管理中是如何体现的的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下

2026年3月24日 23:30

db2数据库连接数突增(db2数据库导入时自动增长的ID列如何填写)

db2数据库连接数突增(db2数据库导入时自动增长的ID列如何填写)

大家好,db2数据库连接数突增相信很多的网友都不是很明白,包括db2数据库导入时自动增长的ID列如何填写也是一样,不过没有关系,接下来就来为大家分享关于db2数据库连接数突增和db2数据库导入时自动增长的ID列如何填写的一些知识点,大家可以

2026年4月27日 00:00

python的安装选项怎么勾选(python怎么安装 python安装教程)

python的安装选项怎么勾选(python怎么安装 python安装教程)

这篇文章给大家聊聊关于python的安装选项怎么勾选,以及python怎么安装 python安装教程对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录python怎么安装 python安装教程python怎么安装怎么安装pyth

2025年10月9日 10:15

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索