贪食蛇游戏实习报告.docx





《贪食蛇游戏实习报告.docx》由会员分享,可在线阅读,更多相关《贪食蛇游戏实习报告.docx(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、贪吃蛇游戏开发一、需求分析1、该贪吃蛇设计主要具有吃食、暂停、开始以及重新开始游戏。2、主要目标:本游戏实现贪吃蛇在制定空间去吃随机出现的方块。游戏可 以暂停,如不满意这一次游戏的成果还能重新开始游戏。二、项目设计1、流程设计程序流程图2、游戏具体设计:(1)蛇移动的实现蛇的移动方向主要受头结点控制,所以每次画蛇时只要把前一结点的值赋给后一节点即可。 当蛇头的移动方向向右时,y值不变x的值不断增加。当蛇头的移动方向向左时,y值不 变x的值不断减少。当蛇头的移动方向向下时,y值增加x的值不变。当蛇头的移动方 向向上时,y值减小x的值不变。(2)蛇死亡的判断当蛇头的值与蛇身或与墙的值相等时,蛇即算
2、死亡.蛇到达边框时从另一端出现和传送的实现 当蛇头的x或y值达到边框的最大或最小 位置时相应的给x或y赋以边框的最 小或最大值以实现当蛇到达边框时能从另一端出 来,同理当蛇头的x, y值等于传 送点位置的值时将蛇头x, y的值赋以被传送到位置的 值,这样将实现蛇的传送功能。三、项目实现 蛇身颜色、最大长度及速度/时钟事件处理void snake:TimerEvent(QTimerEvent *) move();)void snake:changeEvent(QEvent *e)QDialog:changeEvent(e);switch (e-type()case QEvent: :Langua
3、geChange:ui-retranslateUi(this);break;default:break;)int speed;/设置蛇的速度int maxLen;/设置蛇的最大长度随机生成食物产生随机种子:qsrand(QTime().currentTime().msec();定义食物的坐标、形状及颜色:int mx = (qrand()%(w/20)*20;int my = (qrand()%(h/20)*20;food = new QLabel(this);food-move(mx,my);food-resize(2(),20); 食物大小food-setAutoFillBackgroun
4、d(true);设置食物自动填充背景颜色 food-setFrameShape(QFrame:Box); 设置形状 food-setFrameShadow(QFrame:Sunken);food-setPalette(QPalette(QColor(qrand()%255,qrand()%110,qrand()%255); 改变调色板的颜色 return food;方向控制及按键事件处理方向控制:switch(d)(case d_up:nheady-=speed;break;case d_down:nheady+=speed;break;case d_left:nheadx-=speed;br
5、eak;case d_right:nheadx+=speed;break;)按键事件处理:void snake: :keyPressEvent(QKeyEvent *f)if(f-key()=Qt:Key_Up)d=d_up;)else if(f-key()=Qt:Key_Down)(d=d_down;)else if(f-key()=Qt: Key_Left)(d=deft;)else if(f-key()=Qt:Key_Right)(d=d_right;)食物的显示与蛇吃食物食物显示:data.push_back(getFood();将吃到的食物添加在蛇身之后timer = new QTi
6、mer();初始化时钟 timer-setInterval(400);/ 设置时钟周期 timer-start();connect(timer,SIGNAL(timeout(),this,SLOT(move(); 传递信号food 二 getFood();food-show();蛇吃食物:if(nheadx=foodx)&(nheady=foody)(data.push_back(food);food 二 getFood();food-show();新咛戏开始游戏截图1游戏截图2游戏截图3新游或I开泊游戏截图4游戏结束条件if(data.size()=10)(QMessageBox msg(t
7、his);msg.setText(ngame over!);msg.setStandardButtons(QMessageBox:Yes|QMessageBox:No);msg.show();if(msg.exec()=QMessageBox:Yes)(this-close();四、总结经过10天的培训,让我进一步熟悉了 Linux系统下命令的使用、文件的编 写与调试,更熟悉了以前所学的C+语言,让我对我所学习的计算机更加了解喜 欢,也更加希望自己能学好计算机方面的设计,去设计更多有意思的游戏。也非常感谢培训老师这些天对我们的悉心教导,让我们学到了很多东西。五、附录1、主函数代码#includ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 贪食 游戏 实习 报告

限制150内