课程设计指导书 用C语言程序制作的小游戏贪吃蛇Word文件下载.docx

上传人:b****5 文档编号:20961486 上传时间:2023-01-26 格式:DOCX 页数:10 大小:49.58KB
下载 相关 举报
课程设计指导书 用C语言程序制作的小游戏贪吃蛇Word文件下载.docx_第1页
第1页 / 共10页
课程设计指导书 用C语言程序制作的小游戏贪吃蛇Word文件下载.docx_第2页
第2页 / 共10页
课程设计指导书 用C语言程序制作的小游戏贪吃蛇Word文件下载.docx_第3页
第3页 / 共10页
课程设计指导书 用C语言程序制作的小游戏贪吃蛇Word文件下载.docx_第4页
第4页 / 共10页
课程设计指导书 用C语言程序制作的小游戏贪吃蛇Word文件下载.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

课程设计指导书 用C语言程序制作的小游戏贪吃蛇Word文件下载.docx

《课程设计指导书 用C语言程序制作的小游戏贪吃蛇Word文件下载.docx》由会员分享,可在线阅读,更多相关《课程设计指导书 用C语言程序制作的小游戏贪吃蛇Word文件下载.docx(10页珍藏版)》请在冰豆网上搜索。

课程设计指导书 用C语言程序制作的小游戏贪吃蛇Word文件下载.docx

#include<

graphics.h>

stdlib.h>

dos.h>

#defineLEFT0x4b00

#defineRIGHT0x4d00

#defineDOWN0x5000

#defineUP0x4800

#defineESC0x011b

inti,key;

intscore=0;

/*得分*/

intgamespeed=50000;

/*游戏速度自己调整*/

structFood

{

intx;

/*食物的横坐标*/

inty;

/*食物的纵坐标*/

intyes;

/*判断是否要出现食物的变量*/

}food;

/*食物的结构体*/

structSnake

intx[N];

inty[N];

intnode;

/*蛇的节数*/

intdirection;

/*蛇移动方向*/

intlife;

/*蛇的生命,0活着,1死亡*/

}snake;

voidInit(void);

/*图形驱动*/

voidClose(void);

/*图形结束*/

voidDrawK(void);

/*开始画面*/

voidGameOver(void);

/*结束游戏*/

voidGamePlay(void);

/*玩游戏具体过程*/

voidPrScore(void);

/*输出成绩*/

/*主函数*/

voidmain(void)

Init();

DrawK();

GamePlay();

Close();

}

voidInit(void)

intgd=DETECT,gm;

initgraph(&

gd,&

gm,"

c:

\\tc"

);

cleardevice();

/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/

voidDrawK(void)

/*setbkcolor(LIGHTGREEN);

*/

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;

=450;

i+=10)

rectangle(50,i,59,i+10);

/*左边*/

rectangle(601,i,610,i+10);

/*右边*/

voidGamePlay(void)

randomize();

/*随机数发生器*/

food.yes=1;

/*1表示需要出现新食物,0表示已经存在食物*/

snake.life=0;

/*活着*/

snake.direction=1;

/*方向往右*/

snake.x[0]=100;

snake.y[0]=100;

/*蛇头*/

snake.x[1]=110;

snake.y[1]=100;

snake.node=2;

/*节数*/

PrScore();

/*输出得分*/

while

(1)/*可以重复玩游戏,压ESC键结束*/

while(!

kbhit())/*在没有按键的情况下,蛇自己移动身体*/

if(food.yes==1)/*需要出现新食物*/

food.x=rand()%400+60;

food.y=rand()%350+60;

while(food.x%10!

=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/

food.x++;

while(food.y%10!

=0)

food.y++;

food.yes=0;

/*画面上有食物了*/

if(food.yes==0)/*画面上有食物了就要显示*/

setcolor(BROWN);

rectangle(food.x,food.y,food.x+10,food.y-10);

for(i=snake.node-1;

i>

0;

i--)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/

snake.x[i]=snake.x[i-1];

snake.y[i]=snake.y[i-1];

/*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/

switch(snake.direction)

case1:

snake.x[0]+=10;

break;

case2:

snake.x[0]-=10;

case3:

snake.y[0]-=10;

case4:

snake.y[0]+=10;

for(i=3;

snake.node;

i++)/*从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来*/

if(snake.x[i]==snake.x[0]&

&

snake.y[i]==snake.y[0])

GameOver();

/*显示失败*/

snake.life=1;

break;

if(snake.x[0]<

55||snake.x[0]>

595||snake.y[0]<

55||

snake.y[0]>

455)/*蛇是否撞到墙壁*/

/*本次游戏结束*/

/*蛇死*/

if(snake.life==1)/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*/

if(snake.x[0]==food.x&

snake.y[0]==food.y)/*吃到食物以后*/

setcolor(0);

/*把画面上的食物东西去掉*/

snake.x[snake.node]=-20;

snake.y[snake.node]=-20;

/*新的一节先放在看不见的位置,下次循环就取前一节的位置*/

snake.node++;

/*蛇的身体长一节*/

/*画面上需要出现新的食物*/

score+=10;

/*输出新得分*/

setcolor(4);

/*画出蛇*/

for(i=0;

i++)

rectangle(snake.x[i],snake.y[i],snake.x[i]+10,

snake.y[i]-10);

delay(gamespeed);

/*用黑色去除蛇的的最后一节*/

rectangle(snake.x[snake.node-1],snake.y[snake.node-1],

snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);

}/*endwhile(!

kbhit)*/

if(snake.life==1)/*如果蛇死就跳出循环*/

key=bioskey(0);

/*接收按键*/

if(key==ESC)/*按ESC键退出*/

else

if(key==UP&

snake.direction!

=4)

/*判断是否往相反的方向移动*/

snake.direction=3;

if(key==RIGHT&

=2)

if(key==LEFT&

=1)

snake.direction=2;

if(key==DOWN&

=3)

snake.direction=4;

}/*endwhile

(1)*/

/*游戏结束*/

voidGameOver(void)

setcolor(RED);

settextstyle(0,0,4);

outtextxy(200,200,"

GAMEOVER"

getch();

voidPrScore(void)

{

charstr[10];

setfillstyle(SOLID_FILL,YELLOW);

bar(50,15,220,35);

setcolor(6);

settextstyle(0,0,2);

sprintf(str,"

score:

%d"

score);

outtextxy(55,20,str);

voidClose(void)

closegraph();

五、主要解决问题的方法及技术关键

1、主要问题及解决方法:

主要调用到graphics.h,stdio.h,dos.h,stdlib.h等重要库函数,运用结构体、链表以及结构体等进行编译。

2、技术关键

Ifelse、breakcontinue等语句的运用,及绘图函数等函数的应用。

食物和围墙坐标的设置。

六、设计结果说明

1、设计优点:

容易理解,而且操作简单。

并且运用了简单的C语言知识,巩固C语言运用的目的。

2、设计不足:

由于对C语言了解还不够,所以程序的某些地方还有些不足,游戏的趣味性还很不够,而且没有声音,要想效果更加好,还需加以改正。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 表格类模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1