高级语言程序设计实训报告(参考)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
outtextxy(55,20,str)
指导老师:
end 图5 输出成绩功能模块流程图
第页
江西科技师范大学实验报告
年级 班 号 姓名
同组姓名 实验日期 年 月 日成绩
⑤游戏结束功能模块:
cleardevice()
PrScore()
setcolor(RED)
settextstyle(0,0,4)
outtextxy(200,200,"GAME OVER")
i--
②
指导老师:
第页
江西科技师范大学实验报告
年级 班 号 姓名
同组姓名 实验日期 年 月 日成绩
②
snake.direction
1 snake.x[0]+=10
2 snake.x[0]-=10
3
4
snake.y[0]-=10
snake.y[0]-=10
Ni=3 N
i<snake.node Y
snake.x[i]==snake.x[0]&& snake.y[i]==snake.y[0]
年级 班 号 姓名
同组姓名 实验日期 年 月 日成绩
⑤
snake.life==1
Y
N key=bioskey(0)
key==ESC
N key==UP&&snake.
direction!=4
Y end
Y snake.direction=3
N
key==RIGHT&&s nake.direction!=2
江西科技师范大学实验报告
年级 班 号 姓名
同组姓名 实验日期 年 月 日成绩
实训一 贪吃蛇游戏
一、实训目的和要求
根据老师布置的任务,对项目进行需求分析;确定数据结构和算法;画流程图或 N-S 图并形成相关文档。根据算法编写程序并且调试程序直到程序通过。本程序实现的主要技 巧在二维数组的应用上。目的是通过游戏程序增加编程的兴趣,提高编程水平。
i++
delay(gamespeed); setcolor(0);
rectangle(snake.x[snake.node-1],snake.y[snake.node-1]
snake.x[snake.node1]+10,snake.y[snake.no de-1]-10)
⑤
指导老师:
第页
江西科技师范大学实验报告
②蛇的结构: struct Snake {
int x[N]; int y[N]; int node; int direction; int life; }snake; 结构体 Snake 用于存储蛇的基本信息。各字段的值意义如下: x[N]:保存蛇的每一节横坐标 y[N]:保存蛇的每一节纵坐标 node:存放蛇的节数 direction:保存蛇移动的方向 life:存放蛇的生命,life=0表示蛇活着,life=1表示蛇死亡 (3)函数功能描述 ①Init() 函数原型:void Init(void)
getch() 图6 游戏结束功能模块流程图
指导老师:
第页
江西科技师范大学实验报告
年级 班 号 姓名
同组姓名 实验日期 年 月 日成绩
⑥玩游戏过程功能模块:
randomize()
food.yes=1;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;
N i=50
Y i<=600
rectangle(i,40,i +10,49)
rectangle(i,451 ,i+10,460)
i+=10
i=40
N
Y i<=450
rectangle(50,i, 59,i+10)
rectangle(601,i, 610,i+10)
i+=10
图4 开始画面功能模块流程图
指导老师:
第页
江西科技师范大学实验报告
二、主要仪器设备
安装了 Windows 操作系统、Turbo C 或 Visual C++的计算机。
三、实训内容和原理
贪吃蛇游戏是一个深受人们喜爱的游戏,一条蛇在密闭的围墙内,在围墙内随机出 现一个食物,通过按键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食 物,则表示食物被吃掉,这时蛇的身体长一节,同时计 10 分,接着又出现食物,等待被蛇 吃掉,如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体游戏结束。
food.yes=1;score+=10; PrScore()
④
⑦ ④
第页
江西科技师范大学实验报告
年级 班 号 姓名
同组姓名 实验日期 年 月 日成绩
④
setcolor(4)
i=0
i<snake.node
N
Y
rectangle(snake.x[i],snake.y[i] ,snake.x[i]+10,snake.y[i]-10)
四、实训小结
1、功能描述
贪吃蛇游戏
图 形 驱 动
指导老师:
开
玩
结
输
图
始
游
束
出
形
画
戏
游
得
结
面
过
戏
分
束
程
图1 贪吃蛇功能模块图
第页
江西科技师范大学实验报告
年级 班 号 姓名
同组姓名 实验日期 年 月 日成绩
2、总体设计 (1)功能模块设计 ①图形驱动功能模块:
initgraph(&gd,&gm,"c:\\tc")
cleardevice()
图2 图形驱动功能模块流程图 ②图形结束功能模块:
getch() closegraΒιβλιοθήκη Baiduh()
图3 图形结束功能模块流程图
指导老师:
第页
江西科技师范大学实验报告
年级 班 号 姓名
同组姓名 实验日期 年 月 日成绩
③开始画面功能模块:
Setcolor(11)
setlinestyle(SOLID_LINE,0,THICK_ WIDTH)
指导老师:
第页
江西科技师范大学实验报告
年级 班 号 姓名
同组姓名 实验日期 年 月 日成绩
Init()函数为图形驱动,把图形适配器设置为一种图形模式,在默认路径下设置。 ②Close() 函数原型:void Close(void) Close()函数为图形结束,关闭图形驱动。 ③DrawK() 函数原型:void DrawK(void) DrawK()函数用于画开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围 墙。 ④GameOver() 函数原型:void GameOver(void) GameOver()函数用在结束游戏,出现GAME OVER提示 ⑤GamePlay() 函数原型:void GamePlay(void) GamePlay()函数用于玩游戏具体过程,使用上下左右方向键控制蛇吃食物。 ⑥PrScore() 函数原型:void PrScore(void) PrScore()函数用于输出成绩,显示得分。 3、程序实现 (1)源码分析 #define N 200 #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=50000;/*游戏速度自己调整*/ struct Food
每次实验课必须带上此本子,以便教师检查预习情况和记录实验原始数据。 实验时必须遵守实验规则。用正确的理论指导实践袁必须人人亲自动手实验,但反 对盲目乱动,更不能无故损坏仪器设备。 这是一份重要的不可多得的自我学习资料袁它将记录着你在大学生涯中的学习和学 习成果。请你保留下来,若干年后再翻阅仍将感到十分新鲜,记忆犹新。它将推动你在 人生奋斗的道路上永往直前!
江西科技师范大学
实验报告
课程 系别 班级 学号 姓名
报告规格
一、实验目的
四、实验方法及步骤
二、实验原理
五、实验记录及数据处理
三、实验仪器
六、误差分析及问题讨论
1. 实训一 贪吃蛇游戏
目录
2. 实训二 学生成绩管理系统 3. 4. 5. 6. 7. 8. 9.
10.
11. 12. 13. 14. 15.
指导老师:
第页
江西科技师范大学实验报告
年级 班 号 姓名
同组姓名 实验日期 年 月 日成绩
{ int x;/*食物的横坐标*/ int y;/*食物的纵坐标*/ int yes;/*判断是否要出现食物的变量*/
}food;/*食物的结构体*/ struct Snake {
int x[N]; int y[N]; int node;/*蛇的节数*/ int direction;/*蛇移动方向*/ int life;/* 蛇的生命,0活着,1死亡*/ }snake; void Init(void);/*图形驱动*/ void Close(void);/*图形结束*/ void DrawK(void);/*开始画面*/ void GameOver(void);/*结束游戏*/ void GamePlay(void);/*玩游戏具体过程*/ void PrScore(void);/*输出成绩*/ /*主函数*/ void main(void) { Init();/*图形驱动*/ DrawK();/*开始画面*/ GamePlay();/*玩游戏具体过程*/ Close();/*图形结束*/ } /*图形驱动*/ void Init(void) { int gd=DETECT,gm; initgraph(&gd,&gm,"c:\\tc");
N
key==LEFT&&sn ake.direction!=1
N
key==DOWN&&snak e.direction!=3
Y snake.direction=1
Y snake.direction=2
Y snake.direction=4
⑥ 图6 游戏过程功能模块流程图
指导老师:
第页
江西科技师范大学实验报告
Y snake.life==1
N
snake.x[0]==food.x&
&snake.y[0]==food.y
N
Y
setcolor(0) rectangle(food.x,food.y,food. x+10,food.y-10)
snake.x[snake.node]=20;snake.y[ snake.node]=-20; snake.node++
第页
江西科技师范大学实验报告
年级 班 号 姓名
同组姓名 实验日期 年 月 日成绩
①
N food.yes==0 Y
Setcolor(Green)
画出食物 的矩形框
rectangle(food.x, food.y,food.x+10, food.y-10)
i=snake.node-1
N i>0 Y snake.x[i]=snake.x[i-1]; snake.y[i]=snake.y[i-1];
Y Gameover() snake.life=1
i++
指导老师:
N ③
第页
江西科技师范大学实验报告
年级 班 号 姓名
同组姓名 实验日期 年 月 日成绩
指导老师:
snake.x[0]<55||snake.x[
0]>595||snake.y[0]<55||
N
snake.y[0]>455
Y
GameOver(); snake.life=1;
指导老师:
第页
江西科技师范大学实验报告
年级 班 号 姓名
同组姓名 实验日期 年 月 日成绩
④输出成绩功能模块:
start
setfillstyle(SOLID_FILL,YEL LOW)
bar(50,15,220,35) setcolor(6) settextstyle(0,0,2)
sprintf(str,"score:%d",score)
初始化蛇的 状态
PrScore()
⑥
Y1
Y
N
⑦
!kbhit()
⑤
Y
N
food.yes==1
Y
food.x=rand()%400+60
food.y=rand()%350+60
①
N food.x%10!=0)
Y
food.x++
N food.y%10!=0
Y
food.y++
food.yes=0
①
指导老师:
年级 班 号 姓名
同组姓名 实验日期 年 月 日成绩
(2)数据结构设计 ①食物的结构: struct Food {
int x; int y; int yes; }food; 结构体 food 用于存储食物信息。各字段的值意义如下: x:存放食物的横坐标 y:存放食物的纵坐标 yes:判断是否要出现食物的变量,yes=0表示,画面中有食物,不需要出现新食物,yes=1 表示需要出现新食物