信息技术学院本科课程设计报告Word文件下载.docx

上传人:b****6 文档编号:18881463 上传时间:2023-01-01 格式:DOCX 页数:12 大小:95.28KB
下载 相关 举报
信息技术学院本科课程设计报告Word文件下载.docx_第1页
第1页 / 共12页
信息技术学院本科课程设计报告Word文件下载.docx_第2页
第2页 / 共12页
信息技术学院本科课程设计报告Word文件下载.docx_第3页
第3页 / 共12页
信息技术学院本科课程设计报告Word文件下载.docx_第4页
第4页 / 共12页
信息技术学院本科课程设计报告Word文件下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

信息技术学院本科课程设计报告Word文件下载.docx

《信息技术学院本科课程设计报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《信息技术学院本科课程设计报告Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。

信息技术学院本科课程设计报告Word文件下载.docx

1.程序总体结构

图2贪吃蛇程序系统的构图

2.界面设计

如图,通过W、S、A、D、space键进行操作

3.输入方式设计

A用W、S、A、D、键控制蛇的上下左右移动,space键停止,esc键结束。

B游戏目标:

操纵屏幕上那条可爱的小蛇,在方框中不停吃豆豆,而每吃一个豆豆,蛇的身体都变的更长一些,即增加一颗星星。

游戏的难度也会随之加大。

C游戏终止:

终止条件1——蛇头撞到墙上;

终止条件2——蛇身形成一个圈,也就是蛇头碰到自身的任何一处

4.重要数据的数据结构设计

5.函数设计

6.函数调用图

7.实体属性图

四、关键技术、难点及其解决方法

五、测试方法

六、总结

附录1

程序源代码

#include<

windows.h>

stdlib.h>

time.h>

stdio.h>

string.h>

conio.h>

#defineN21

intapple[3];

charscore[3];

chartail[3];

voidgotoxy(intx,inty)//输出坐标

{

COORDpos;

pos.X=x;

pos.Y=y;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);

}

voidcolor(intb)//颜色函数

HANDLEhConsole=GetStdHandle((STD_OUTPUT_HANDLE));

SetConsoleTextAttribute(hConsole,b);

}

intBlock(charhead[2])//判断出界

if((head[0]<

1)||(head[0]>

N)||(head[1]<

1)||(head[1]>

N))

return1;

return0;

intEat(charsnake[2])//吃了苹果

if((snake[0]==apple[0])&

&

(snake[1]==apple[1]))

{

apple[0]=apple[1]=apple[2]=0;

gotoxy(N+44,10);

color(13);

printf("

%d"

score[0]*10);

color(11);

}

voidDraw(char**snake,intlen)//蛇移动

if(apple[2]){

gotoxy(apple[1]*2,apple[0]);

color(12);

●"

);

gotoxy(tail[1]*2,tail[0]);

if(tail[2])

{color(14);

★"

else

■"

gotoxy(snake[0][1]*2,snake[0][0]);

color(14);

putchar('

\n'

char**Move(char**snake,chardirx,int*len)//控制方向

inti,full=Eat(snake[0]);

memcpy(tail,snake[(*len)-1],2);

for(i=(*len)-1;

i>

0;

--i)

memcpy(snake[i],snake[i-1],2);

switch(dirx)

{

case'

w'

:

W'

--snake[0][0];

break;

s'

S'

++snake[0][0];

a'

A'

--snake[0][1];

d'

D'

++snake[0][1];

default:

;

}

if(full)

snake=(char**)realloc(snake,sizeof(char*)*((*len)+1));

snake[(*len)]=(char*)malloc(sizeof(char)*2);

memcpy(snake[(*len)],tail,2);

++(*len);

++score[0];

if(score[3]<

16)

++score[3];

tail[2]=1;

tail[2]=0;

returnsnake;

voidinit(charplate[N+2][N+2],char***snake_x,int*len)//初始化

inti,j;

char**snake=NULL;

*len=3;

score[0]=score[3]=3;

snake=(char**)realloc(snake,sizeof(char*)*(*len));

for(i=0;

i<

*len;

++i)

snake[i]=(char*)malloc(sizeof(char)*2);

3;

++i)

snake[i][0]=N/2+1;

snake[i][1]=N/2+1+i;

for(i=1;

=N;

for(j=1;

j<

++j)

plate[i][j]=1;

apple[0]=rand()%N+1;

apple[1]=rand()%N+1;

apple[2]=1;

N+2;

gotoxy(0,i);

for(j=0;

switch(plate[i][j])

case0:

printf("

□"

color(11);

continue;

case1:

(*len);

gotoxy(snake[i][1]*2,snake[i][0]);

*snake_x=snake;

voidManual()

gotoxy(N+30,2);

color(10);

按WSAD移动方向"

gotoxy(N+30,4);

按space键暂停"

gotoxy(N+30,8);

历史最高分为:

"

gotoxy(N+44,8);

score[1]*10);

gotoxy(N+30,12);

你现在得分为:

0"

intFile_in()//取记录的分数

FILE*fp;

if((fp=fopen("

C:

\\tcs.txt"

"

a+"

))==NULL)

gotoxy(N+18,N+2);

文件不能打开\n"

exit(0);

if((score[1]=fgetc(fp))!

=EOF);

else

score[1]=0;

intFile_out()//存数据

if(score[1]>

score[0])

{gotoxy(10,10);

puts("

闯关失败加油耶"

gotoxy(0,N+2);

w+"

if(fputc(--score[0],fp)==EOF)

输出失败\n"

gotoxy(10,10);

恭喜您打破记录"

voidFree(char**snake,intlen)//释放空间

inti;

len;

free(snake[i]);

free(snake);

intmain(void)

intlen;

charch='

g'

;

chara[N+2][N+2]={{0}};

char**snake;

srand((unsigned)time(NULL));

File_in();

init(a,&

snake,&

len);

Manual();

while(ch!

=0x1B)//按ESC结束

Draw(snake,len);

if(!

apple[2]){

Sleep(200-score[3]*10);

setbuf(stdin,NULL);

if(kbhit())

gotoxy(0,N+2);

ch=getche();

snake=Move(snake,ch,&

if(Block(snake[0])==1)

gotoxy(N+2,N+2);

你输了"

File_out();

Free(snake,len);

getche();

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

当前位置:首页 > 自然科学

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

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