当前位置:文档之家› 软件工程实习报告

软件工程实习报告

.中国石油大学(华东)计通学院《软件编程实践》实习报告”题目:我的“2048文档资料Word.月7 2015年一、题目介绍(包括:题目背景简介、系统达到目标等)日发行。

原版2014年3月20《2048》是一款比较流行的数字游戏,最早于,后被移植到各个平台。

首先在GitHub上发布,原作者是GabrieleCirulli2048传奇》的玩法开发而成的新型数字游戏。

》和《小3这款游戏是基于《1024 这个游戏的程序,仅仅Gabriele Cirulli利用周末的时间写20482014年只是好玩而已。

他想用一种不同的视觉展现效果和更快速的动画来创造属于我自己的游戏版本的开发者,他们在开发这款游Threes和GregWohlwend作为AsherVollmer 的过程中,他决定把项目托管到2048戏的时候投入了大量的时间和精力。

在制作GithubPages完成了这个游戏之后,通过GithubGithub上去,并且通过完成项目。

》这款手游,在了解上。

由于本人十分喜欢《2048发布,并发表在DesignerNews 》作为本次课2048了本次课程设计是设计一个QT平台下的软件之后,就选定了《程论文的课题。

在此次课程开题报告的制作过程中,我们研究小组将运用学习到 c++编程知识通过网上现有的资料尝试完成此次课程的开发。

的知识以及》原有的基础上进行界面等设计修改,希2048此次,本研究小组决定在《望给人焕然一新的感觉,能够给人新有的感觉,在功能上进行设计,使其具有独特的功能。

二、主要内容资料..(详细介绍系统总体功能、模块划分,以及每个模块的具体实现)系统化具体功能:有16个格子,初始时会有两个格子上安放了两个数字2,每次可以选择上下左右其中一个方向去滑动,每滑动一次,所有的数字方块都会往滑动的方向靠拢外,系统也会在空白的地方随即出现一个数字方块,相同数字的方块在靠拢、相撞时会相加。

不断的叠加最终拼凑出2048这个数字就算成功。

《2048》中每个格子的数据和颜色的都在不断地刷新,在每一次移动之后,几乎在这4*4的每一个方格上的数据都会变化,因此在每一次移动之后,每一个方格上的数据都要刷新一次。

相对的,每一个数的背景颜色是不同的,也就是说,在每一次数据刷新的时候,每一个方格上的颜色也要同样的刷新一次。

当屏幕上没有没有写有数据的方格并且屏幕上的数据没有哪两个相邻的数据是一样的两个数,那么就判定为游戏结束。

游戏所产生的分数将被记录下来,如果此分数超过以前的最高分数,此分数会将其取代,成为最高分“High score”。

模块划分:1) 主界面的设计。

提供用户更多的选择,游戏分为鼠标板和键盘版两种,用户可随意自由选择自己喜欢的玩法。

2)分数计算。

在移动方向将相邻的2个数相加;。

3)移动控制。

控制分为两种方式,一种为鼠标控制,一种为键盘控制,用户可根据自己喜好,自由选择自己喜欢的玩法。

鼠标板:用户可在4X4界面按住鼠标左键进行上下左右移动控制。

键盘版:分为上下左右四种移动方式,通过资料..键盘上的W、A、S、D或者↑↓←→控制。

4)移动前后数组数值的改变。

通过重新创建数组,将移动后的数值填入、并用0将数组补成4X4的数组,来实现移动前后数值的改变。

游戏结束后,一旦此次分数超过之前的最高分数,此分数将会取代其成为最高分。

一直到下一个最高分将其取代为止。

5)利用概率随机数来实现2和4的生成。

6)成功与失败的判断等。

7)当游戏结束时,能够询问用户是否重新开始。

游戏技巧:1)最大数尽可能放在角落。

2)数字按顺序紧邻排列。

3)首先满足最大数和次大数在的那一列/行是满的。

4)时刻注意活动较大数(32以上)旁边要有相近的数。

5)以大数所在的一行为主要移动方向6)不要急于“清理桌面”。

三、开发团队资料..四、技术总结”游戏程序流程图20481()“我的 1.资料..(2)游戏界面整体流程图资料..2.主要技术:主要技术包括界面设计,界面转换,鼠标、键盘控制事件,页面布局,方块的大小和颜色设定,游戏的组合,信号与槽的应用等一系列问题......3.遇到的技术问题及解决方法:1)代码错误:网上的教程虽然很全,但是按照教程所建立的工程,以及添加所需的每个类和每个文件,把代码写上之后发现了很多错误,这些错误有些是能解决,而大多数并不能解决,真的令我们很头疼。

解决方案:经过组员的不懈努力,以及上网查资料、请教同学和老师,终于逐渐的解决了一个个的大问题,程序终于可以运行,但是距离成功还是很遥远,因为这只是刚刚构建好,好多功能还没有实现,但我们的基础工作己经做好。

2)界面的转换:我们之前并不知道该怎么在点击一个按钮的时候关掉当前界面同时开启另一个界面,这也是个很大的问题,因为界面不转换,我们的所有功能将无法实现。

解决方案:负责界面设计的刘聪同学运行了几个其他的程序,从其他程序中研资料..究代码,寻找转化界面的方法,并请教了本班同学麻宝鑫,终于不负众望,解决了这个重大的问题,使程序可以运行下去。

此问题的解决刘聪同学功不可没,同时感谢麻宝鑫同学的鼎力相助。

3)颜色的设定:为了让游戏界面看起来不是那么单调,于是我们想让方块再出现不同数字时显示不同的数字。

这个功能对于程序的影响不大,只不过是令游戏更美观而已。

但要想实现这个功能,难度还是很大的对于小组成员来说,因为我们自大一开始学习的c语言以及c++都没有学到关于颜色的设定,组内成员一度想放弃这个功能,但是负责代码编写的贾如举并没有放弃。

解决方案:经过大量的程序研究,再加上从论坛、贴吧、qq群查询到的资料,终于找到了是添加颜色的方案,以及方块数字变化时颜色的改变,然而这距离预期的结果还有很大的差距。

我们在一直改进..........4)程序的整合,我们的“2048”分为键盘版和鼠标版两种,看似一个游戏,其实是两个不同的游戏整合到一起,但大部分功能的实现还是一样的,只有键盘控制和鼠标控制这部分的设计是不同的。

想要一同实现这两个功能,需要把两个工程整合到一起。

刚开始我们认为本来很容易就能整合到一起,但事实并非如此。

整合到一起以后,代码出现大量错误。

解决方案:经过对错误代码的研究,发现错误的原因是很多变量定义重复,因此经过修改,将重复代码改正。

解决了大量问题以后,程序终于可以运行。

(附游戏界面图片一张)资料..关键代码:4.1)鼠标控制游戏所需代码:void GameWidget::mouseReleaseEvent(QMouseEvent *e) {// 如果在播放动画效果则直接退出防止重复产生手势事件if (isAnimating)return;// 根据终点坐标和起点坐标计算XY坐标的增量float dX = (float)(e->pos().x() - startPos.x()); float dY = (float)(e->pos().y() - startPos.y());资料..确定手势方向 //if (abs(dX) > abs(dY)){if (dX < 0)emit GestureMove(LEFT);elseemit GestureMove(RIGHT);}else{if (dY < 0)emit GestureMove(UP);elseemit GestureMove(DOWN);}}2)判断游戏是否胜利:bool GameWidget::checkWin(){2048 // 循环检测是否某个方格的数字为for (int i = 0; i < 4; i++)for (int j = 0; j < 4; j++)资料..if (board[i][j] == 2048)return true;return false;}3)存贮每个数字对应的颜色://颜色数组存储每个数字对应的背景色0xCC), digitBkg[11] = {QColor::fromRgb(0xFF, 0xFF, QColor QColor::fromRgb(0xFF, 0xFF, 0x99),0xCC), 0xCC, QColor::fromRgb(0xFF, QColor::fromRgb(0xFF, 0xCC, 0x99),0x99), QColor::fromRgb(0xFF, 0x99, QColor::fromRgb(0xFF, 0x99, 0x66),0x66), QColor::fromRgb(0xFF, 0x66, QColor::fromRgb(0xCC, 0x99, 0x66),0x33), QColor::fromRgb(0xCC, 0x33, QColor::fromRgb(0xCC, 0x00, 0x33),QColor::fromRgb(0xFF, 0x00, 0x00)};五、心得体会转眼间几天实习已经过去,虽然倍感折磨,但是收获却是很大的。

资料..通过实训,我们都有这样一个感觉,“纸上得来终觉浅,绝知此事要躬行!”所学的理论知识与现实差距太大,深深的体会到了自己在编程方面的欠缺和不足,也意识到了我们作为一名软件工程专业的学生,要想在以后的职业中崭露头角,除了要有过硬的理论知识,健康的体魄之外,还必须具备良好的心理素质,是自己在以后的途中无论经历什么样的困难,都立于不败之地。

通过实训老师的课堂讲解与企业文化标准的培训,使我们加深了对自己专业的认识。

这次实习让我们深深体会到一个团队中的各个成员合作的重要性,要善于团队合作,善于利用别人的智慧,这才是大智慧。

靠单一的力量是很难完成一个大项目的,在进行团队合作的时候,还要耐心听取每一个成员的意见,积极参与到团队合作中去,这样会有意想不到的惊喜。

这次实习让我们学到很多东西,不仅在理论上让我们对编程有了全新的认识,让我明白工作中需要能力,素质,知识之外,更重要的是学会了如何去完成一个任务,懂得了享受工作。

在实践能力上也得到了很大的提高,真正做到了学以致用,对我们来说受益匪浅。

更让我们真切的体会到作为一名未来程序员到所需要。

当遇到问题,的素质:耐心,勤思好问,享受团队不断努力的乐趣,学以致用。

冷静,想办法一点一点的排除障碍,到最后获取成功,一种自信心就由然而生,这应该就是工作的乐趣。

有时候不懂的就需要问别人了,虚心请教,从别人的身上真的能学到自己没有的东西,每一次的挫折都会使我更接近成功。

还有学会了在工作中与人的合作与交流,同乐同累,合作互助,这是团体的精神,也是必须学习的东西。

要我们深刻的认识到要成为一名优秀的软件开发人员不是一件容易的事情。

想成为一个合格的程序员就有具备一种自学能力,在工作中会遇到很多从未接触资料..过的问题,当有了问题时要去解决,在你不断努力,寻找答案的过程中,自己的能力也在潜移默化的提升。

相关主题