Linux应用开发课程设计报告.docx
- 文档编号:23000933
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:10
- 大小:245.96KB
Linux应用开发课程设计报告.docx
《Linux应用开发课程设计报告.docx》由会员分享,可在线阅读,更多相关《Linux应用开发课程设计报告.docx(10页珍藏版)》请在冰豆网上搜索。
Linux应用开发课程设计报告
Linux应用开发课程设计报告
项目名称贪吃蛇
学号:
姓名:
张浩
专业:
软件工程专业
班级:
14软工软设1班
指导教师:
郭俊颖
南阳理工学院软件学院
2016年12月
一需求分析
1.问题描述
①蛇与食物出现的位置;
②蛇的游动;
③怎样实现蛇撞到自身会死;
④怎样判断蛇撞到墙;
2基本要求
实现蛇在不断吃到食物后分数增加,实现蛇的游动。
3.需实现的主要功能
①蛇与食物不能出现在一起;
②蛇撞到自身以及墙都会死;
③蛇吃到事物后,长度增加同时分数增加一
⑤随着分数的增加,关卡难度增加
4.设计实现方案
将蛇头的坐标以及蛇身的坐标都用二维数组表示出来,规定第一个下标为0则代表蛇头,为i则为蛇身,第二个下标为0代表横坐标,为1代表纵坐标,foodx代表食物横坐标,foody代表食物纵坐标,当蛇头坐标与事物坐标相等时则表示蛇吃到了事物,长度加一。
方向变化为:
当向上走时,横坐标不变,纵坐标减减;向下走时,横坐标不变,纵坐标加加;向左走时纵坐标不变,横坐标--;向右走时纵坐标不变,横坐标++。
2系统设计
分功能描述和设计流程图
当用户打开贪吃蛇时,进入主界面,主界面有开始及退出两个选项,当用户点击开始时,进入第二个界面(游戏界面),左侧为游戏界面,右上方显示分数与等级,当用户控制蛇吃到事物时分数会增加,当分数增加到5,15,20时,等级会提升。
右下方为上下左右开始返回键,用户可以控制上下左右来操控蛇的游动方向,当用户点击开始时游戏则开始,当用户点击返回时,则退回到主界面。
。
设计流程图如图2-1所示:
2-1设计流程图
3系统实现
贪吃蛇的界面和代码
图3–1信息详情界面
贪吃蛇的核心代码:
voidGameWidget:
:
timeoutSlot()
{
//判断是否知道食物
if(snake[0][0]==foodx&&snake[0][1]==foody)
{
//吃到食物发出声音
sound->play();
//如果吃到食物,食物坐标更新
inti=0;
foodcount++;
score++;
str1=QString:
:
number(score);
scoreshow->setText(str1);
QTimet;
t=QTime:
:
currentTime();
qsrand(t.msec()+t.second()*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)
{
case5:
timer->setInterval(450);level++;break;
case10:
timer->setInterval(400);level++;break;
case15:
timer->setInterval(350);level++;break;
}
str2=QString:
:
number(level);
levelshow->setText(str2);
}
memcpy(snake1,snake,sizeof(snake));
//实现蛇的游动
for(inti=foodcount;i>=1;i--)
{
snake[i][0]=snake[i-1][0];
snake[i][1]=snake[i-1][1];
}
switch(direction)
{
caseUP:
snake[0][1]--;break;
caseDOWN:
snake[0][1]++;break;
caseLEFT:
snake[0][0]--;break;
caseRIGHT:
snake[0][0]++;break;
}
//判断蛇是否撞到自身
for(inti=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,"提示","游戏结束,是否重新游戏",QMessageBox:
:
Yes,QMessageBox:
:
No)==QMessageBox:
:
Yes)
{
QTimet;
inti;
t=QTime:
:
currentTime();
qsrand(t.msec()+t.second()*1000);
snake[0][0]=qrand()%COL;
snake[0][1]=qrand()%ROW;
direction=qrand()%4;
foodx=qrand()%COL;
foody=qrand()%ROW;
while(i)
{
if(snake[0][0]==foodx&&snake[0][1]==foody)
{
foodx=qrand()%COL;
foody=qrand()%ROW;
i=1;
}
else
i=0;
}
foodcount=0;
score=0;
level=0;
str1=QString:
:
number(score);
str2=QString:
:
number(level);
scoreshow->setText(str1);
levelshow->setText(str2);
}
return;
}
}
//判断蛇是否撞到墙体
if(snake[0][0]<0||snake[0][0]>=COL||snake[0][1]<0||snake[0][1]>=ROW)
{
sound1->play();
memcpy(snake,snake1,sizeof(snake));
timer->stop();
if(QMessageBox:
:
question(this,"提示","游戏结束,是否重新游戏",QMessageBox:
:
Yes,QMessageBox:
:
No)==QMessageBox:
:
Yes)
{
QTimet;
inti;
t=QTime:
:
currentTime();
qsrand(t.msec()+t.second()*1000);
snake[0][0]=qrand()%COL;
snake[0][1]=qrand()%ROW;
direction=qrand()%4;
foodx=qrand()%COL;
foody=qrand()%ROW;
while(i)
{
if(snake[0][0]==foodx&&snake[0][1]==foody)
{
foodx=qrand()%COL;
foody=qrand()%ROW;
i=1;
}
else
i=0;
}
foodcount=0;
score=0;
level=0;
str1=QString:
:
number(score);
str2=QString:
:
number(level);
scoreshow->setText(str1);
levelshow->setText(str2);
}
else
{
deletethis;
return;
}
}
this->update();
}
4总结
通过这次试验,让我学到很多这个学期没有接触过的很多知识,完成一个贪吃蛇的项目;第一步就是先理清思路,设计主界面,主界面是以一具封闭的画布,并在画布的设计蛇体和食物。
蛇头如果碰到墙或者与蛇身的某一部分碰到就会死亡;如果蛇头碰到食物,就会自动增加一节蛇身,并更改得分。
想要写出好的程序,还是要有扎实的基础,这样遇到问题就不会一筹莫展来。
在编程时我们要有想象力,不要拘泥于现有的贪吃蛇游戏,而是要把自己想到的再加上所学的知识,遇到问题不能怕,而是要专心找出问题的原因,再回来看看书本的知识,不懂的还可以问问老师。
编程过程还要养成良好的编程习惯,这样不仅自己能够很好看懂自己的代码,也让人家容易看懂自己的代码,而不至于代码知识自己会看,出来问题只有自己会解决而其他人都不会解决;遇到问题时要考虑最简单的解决方案,只有简单的方案不能满足要求时再考虑复杂的方案。
最主要编程还是要多与人沟通,不会的不能立即问别人,但是一段时间后解决不了时还是应该向别人请教请教,“三人行必有我师”正是这个意思。
通过这次实验,我深刻地体会到了面向对象与面向过程的区别。
程序在最初设计时由于面向对象的思想不够成熟,导致在最后想要增加一些新的功能时,出现了一些麻烦。
5参考文献
[1]王海粟.Iphone手机安全技术分析[J].技术研究,2004,21
(1)
[2]张鲜明.解码时尚教皇乔布斯[J].城市环境设计,2010,12(07)
[3]王嘉琦.初探Xcode中指针和数组的使用[J].工程技术,2011,23(06)
[4](美)科施恩.苹果MacOSX操作系统标准培训教材[M].北京:
机械工业出版社,2009
[5]葛家澍,林志军.IPhone应用程序开发入门与实战[M].厦门:
厦门大学出版社,2001
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 应用 开发 课程设计 报告