西京c语言课程设计报告.docx
- 文档编号:325554
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:14
- 大小:62.93KB
西京c语言课程设计报告.docx
《西京c语言课程设计报告.docx》由会员分享,可在线阅读,更多相关《西京c语言课程设计报告.docx(14页珍藏版)》请在冰点文库上搜索。
西京c语言课程设计报告
课程设计报告
课程名称C语言课程设计
系别:
机电工程系
专业班级:
测控1301
学号:
1304091009
姓名:
李春江
课程题目:
贪吃蛇
完成日期:
2014/06/18
指导老师:
张玉成
2014年06月18日
课程设计目的
1.巩固和加深学生对C语言课程的基本知识的理解和掌握2.掌握C语言编程和程序调试的基本技能
3.利用C语言进行基本的软件设计
4.掌握书写程序设计说明文档的能力
5.提高运用C语言解决实际问题的能力
课程设计要求
1.掌握C语言编程的基础知识
2.较熟练地编写C语言应用程序
3.了解C语言的常用标准函数、编程技巧、异常处理
4.通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高
课程设计注意事项
1.数组元素为结构体的数组应用
2.全局变量应用
3.按键处理
4.数组元素与蛇食物对应关系
5.图形方式
课程设计内容
设计一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。
游戏要有开始部分,运行部分,结束部分(实际上开始部分与运行部分是一体的)。
程序开始
程序运行
程序结束
课程设计简要操作步骤
1.画出项目流程图(如下图)
2.写出主函数的整个运行过程
3.整理函数运行过程中所需要的函数及定义
如:
(1).矩形图形函数rectangle()
4.定义各函数,分配功能
voidInit(void);图形驱动
voidGameOver(void);游戏结束
voidGamePlay(void);游戏过程
voidPrScore(void);输出成绩
5.各函数的编辑
开始画面函数(画围墙)
游戏过程函数(蛇移动的算法蛇吃食物的算法按键算法等)
游戏结束及成绩输出函数
6.定义与各函数的整合嵌入
7.编译调试
8.完成实验报告
课程设计心得体会
通过此程序,我做成了一个完整的小产品。
使我熟悉了面向程序设计的方法步骤。
这次程序设计,我遇到了一个全新的库函数,我通过自己查看库函数源文件,了解了程序的用法并进行了应用。
以此我可以通过发散思维对以后其他的程序所设计到的新的库文件也找到了入手点进而可以编写新的程序。
课程设计评语及成绩
评语
成绩
指导教师
(签名)
2013年6月日
附件:
(源程序)
//********************************************************
//作者:
测控1301李春江
//功能:
贪吃蛇
//运行环境:
vc++6.0
//日期:
2014.6.17
//**************************************************
#include
#include
#include
#include
#include
#include
#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);
return1;
}
return0;
}
voidDraw(char**snake,intlen)//蛇移动
{
if(apple[2]){
gotoxy(apple[1]*2,apple[0]);
color(12);
printf("★");
color(11);
}
gotoxy(tail[1]*2,tail[0]);
if(tail[2])
{color(14);
printf("●");
color(11);
}
else
printf("■");
gotoxy(snake[0][1]*2,snake[0][0]);
color(14);
printf("●");
color(11);
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':
case'W':
--snake[0][0];break;
case's':
case'S':
++snake[0][0];break;
case'a':
case'A':
--snake[0][1];break;
case'd':
case'D':
++snake[0][1];break;
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;
}
else
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);
for(i=0;i<3;++i)
{
snake[i][0]=N/2+1;
snake[i][1]=N/2+1+i;
}
for(i=1;i<=N;++i)
for(j=1;j<=N;++j)
plate[i][j]=1;
apple[0]=rand()%N+1;apple[1]=rand()%N+1;
apple[2]=1;
for(i=0;i { gotoxy(0,i); for(j=0;j { switch(plate[i][j]) { case0: color(12);printf("□");color(11);continue; case1: printf("■");continue; default: ; } } putchar('\n'); } for(i=0;i<(*len);++i) { gotoxy(snake[i][1]*2,snake[i][0]); printf("●"); } putchar('\n'); *snake_x=snake; } voidManual() { gotoxy(N+30,2); color(10); printf("按WSAD移动方向"); gotoxy(N+30,4); printf("按space键暂停"); gotoxy(N+30,8); color(11); printf("历史最高分为: "); color(12); gotoxy(N+44,8); printf("%d",score[1]*10); color(11); gotoxy(N+30,12); printf("你现在得分为: 0"); } intFile_in()//取记录的分数 { FILE*fp; if((fp=fopen("C: \\tcs.txt","a+"))==NULL) { gotoxy(N+18,N+2); printf("文件不能打开\n"); exit(0); } if((score[1]=fgetc(fp))! =EOF); else score[1]=0; return0; } intFile_out()//存数据 { FILE*fp; if(score[1]>score[0]) {gotoxy(10,10); color(12); puts("失败了笨蛋"); gotoxy(0,N+2); return0; } if((fp=fopen("C: \\tcs.txt","w+"))==NULL) { printf("文件不能打开\n"); exit(0); } if(fputc(--score[0],fp)==EOF) printf("输出失败\n"); gotoxy(10,10); color(12); puts("张力丹我爱你"); gotoxy(0,N+2); return0; } voidFree(char**snake,intlen)//释放空间 { inti; for(i=0;i free(snake[i]); free(snake); } intmain(void) { intlen; charch='g'; chara[N+2][N+2]={{0}}; char**snake; srand((unsigned)time(NULL)); color(11); File_in(); init(a,&snake,&len); Manual(); while(ch! =0x1B)//按ESC结束 { Draw(snake,len); if(! apple[2]){ apple[0]=rand()%N+1; apple[1]=rand()%N+1; apple[2]=1; } Sleep(200-score[3]*10); setbuf(stdin,NULL); if(kbhit()) { gotoxy(0,N+2); ch=getche(); } snake=Move(snake,ch,&len); if(Block(snake[0])==1) { gotoxy(N+2,N+2); puts("你输了"); File_out(); Free(snake,len); getche(); exit(0); } } Free(snake,len); exit(0); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西京 语言 课程设计 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)