1 / 11
文档名称:

linux应用开发课程设计报告.docx

格式:docx   大小:250KB   页数:11页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

linux应用开发课程设计报告.docx

上传人:薄荷牛奶 2018/3/23 文件大小:250 KB

下载得到文件列表

linux应用开发课程设计报告.docx

相关文档

文档介绍

文档介绍:Linux应用开发课程设计报告
项目名称贪吃蛇
学号:
姓名: 张浩
专业: 软件工程专业
班级: 14软工软设1班
指导教师: 郭俊颖
南阳理工学院软件学院
2016年12月
一需求分析
问题描述
①蛇与食物出现的位置;
②蛇的游动;
③怎样实现蛇撞到自身会死;
④怎样判断蛇撞到墙;
2基本要求
实现蛇在不断吃到食物后分数增加,实现蛇的游动。
需实现的主要功能
①蛇与食物不能出现在一起;
②蛇撞到自身以及墙都会死;
③蛇吃到事物后,长度增加同时分数增加一
⑤随着分数的增加,关卡难度增加
设计实现方案
将蛇头的坐标以及蛇身的坐标都用二维数组表示出来,规定第一个下标为0则代表蛇头,为i则为蛇身,第二个下标为0代表横坐标,为1代表纵坐标,foodx代表食物横坐标,foody代表食物纵坐标,当蛇头坐标与事物坐标相等时则表示蛇吃到了事物,长度加一。方向变化为:当向上走时,横坐标不变,纵坐标减减;向下走时,横坐标不变,纵坐标加加;向左走时纵坐标不变,横坐标--;向右走时纵坐标不变,横坐标++。
2系统设计
分功能描述和设计流程图
当用户打开贪吃蛇时,进入主界面,主界面有开始及退出两个选项,当用户点击开始时,进入第二个界面(游戏界面),左侧为游戏界面,右上方显示分数与等级,当用户控制蛇吃到事物时分数会增加,当分数增加到5,15,20时,等级会提升。右下方为上下左右开始返回键,用户可以控制上下左右来操控蛇的游动方向,当用户点击开始时游戏则开始,当用户点击返回时,则退回到主界面。
。设计流程图如图2-1所示:
2-1 设计流程图
3系统实现
贪吃蛇的界面和代码
图3–1信息详情界面
贪吃蛇的核心代码:
void GameWidget::timeoutSlot()
{
//判断是否知道食物
if(snake[0][0]==foodx&&snake[0][1]==foody)
{
//吃到食物发出声音
sound->play();
//如果吃到食物,食物坐标更新
int i=0;
foodcount++;
score++;
str1=QString::number(score);
scoreshow->setText(str1);
QTime t;
t= QTime::currentTime();
qsrand(()+()*1000);
foodx=qrand()%COL;
foody=qrand()%ROW;
while(i<=foodcount)
{
i++;
if(snake[i][0]==foodx&&snake[i][1]==foody)
{
foodx=qrand()%COL;
foody=qrand()%ROW;
i=0;
}
}
switch(score)
{
case 5:timer->setInterval(450);level++;break;
case 10:timer->setInterval(400);level++;break;
case 15:timer->setInterval(350);level++;break;
}
str2=QString::number(level);
levelshow->setText(str2);
}
memcpy(snake1,snake,sizeof(snake));
//实现蛇的游动
for(int i=foodcount;i>=1;i--)
{
snake[i][0]=snake[i-1][0];
snake[i][1]=snake[i-1][1];
}
switch(direction)
{
case UP:snake[0][1]--;break;
case DOWN:snake[0][1]++;break;
case LEFT:snake[0][0]--;break;
case RIGHT:snake[0][0]++;break;
}
//判断蛇是否撞到自身
for(int i=1;i<=foodcount;i++)
{
if(snake[0][0]==snake[i][0]&&snake[0][1]==snake[i][1])
{
sound1->play();
memcpy(snake,snake1,sizeof(snake));
timer->stop();
if(QMessageBox::question(this,"提示","游戏结束