软件工程实习报告.docx
- 文档编号:26937501
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:12
- 大小:92.32KB
软件工程实习报告.docx
《软件工程实习报告.docx》由会员分享,可在线阅读,更多相关《软件工程实习报告.docx(12页珍藏版)》请在冰豆网上搜索。
软件工程实习报告
中国石油大学(华东)计通学院
《软件编程实践》实习报告
题目:
我的“2048”
学号
姓名
认知实习
成绩
编程实习
成绩
总成绩
1407030108
刘聪
1407030106
贾如举
1407030117
王悦
1407030119
吴宇铖
评语
2015年7月
一、题目介绍
(包括:
题目背景简介、系统达到目标等)
《2048》是一款比较流行的数字游戏,最早于2014年3月20日发行。
原版2048首先在GitHub上发布,原作者是GabrieleCirulli,后被移植到各个平台。
这款游戏是基于《1024》和《小3传奇》的玩法开发而成的新型数字游戏。
2014年GabrieleCirulli利用周末的时间写2048这个游戏的程序,仅仅只是好玩而已。
他想用一种不同的视觉展现效果和更快速的动画来创造属于我自己的游戏版本
AsherVollmer和GregWohlwend作为Threes的开发者,他们在开发这款游戏的时候投入了大量的时间和精力。
在制作2048的过程中,他决定把项目托管到Github上去,并且通过Github完成项目。
完成了这个游戏之后,通过GithubPages发布,并发表在DesignerNews上。
由于本人十分喜欢《2048》这款手游,在了解了本次课程设计是设计一个QT平台下的软件之后,就选定了《2048》作为本次课程论文的课题。
在此次课程开题报告的制作过程中,我们研究小组将运用学习到的知识以及c++编程知识通过网上现有的资料尝试完成此次课程的开发。
此次,本研究小组决定在《2048》原有的基础上进行界面等设计修改,希望给人焕然一新的感觉,能够给人新有的感觉,在功能上进行设计,使其具有独特的功能。
二、主要内容
(详细介绍系统总体功能、模块划分,以及每个模块的具体实现)
系统化具体功能:
有16个格子,初始时会有两个格子上安放了两个数字2,每次可以选择上下左右其中一个方向去滑动,每滑动一次,所有的数字方块都会往滑动的方向靠拢外,系统也会在空白的地方随即出现一个数字方块,相同数字
的方块在靠拢、相撞时会相加。
不断的叠加最终拼凑出2048这个数字就算成功。
《2048》中每个格子的数据和颜色的都在不断地刷新,在每一次移动之后,几乎
在这4*4的每一个方格上的数据都会变化,因此在每一次移动之后,每一个方格上的数据都要刷新一次。
相对的,每一个数的背景颜色是不同的,也就是说,在每一次数据刷新的时候,每一个方格上的颜色也要同样的刷新一次。
当屏幕上没有没有写有数据的方格并且屏幕上的数据没有哪两个相邻的数据是一样的两个数,那么就判定为游戏结束。
游戏所产生的分数将被记录下来,如果此分数超过以前的最高分数,此分数会将其取代,成为最高分“Highscore”。
模块划分:
1)主界面的设计。
提供用户更多的选择,游戏分为鼠标板和键盘版两种,用户可随意自由选择自己喜欢的玩法。
2)分数计算。
在移动方向将相邻的2个数相加;。
3)移动控制。
控制分为两种方式,一种为鼠标控制,一种为键盘控制,用户可根据自己喜好,自由选择自己喜欢的玩法。
鼠标板:
用户可在4X4界面按住鼠标左键进行上下左右移动控制。
键盘版:
分为上下左右四种移动方式,通过键盘上的W、A、S、D或者↑↓←→控制。
4)移动前后数组数值的改变。
通过重新创建数组,将移动后的数值填入、并用0将数组补成4X4的数组,来实现移动前后数值的改变。
游戏结束后,一旦此次分数超过之前的最高分数,此分数将会取代其成为最高分。
一直到下一个最高分将其取代为止。
5)利用概率随机数来实现2和4的生成。
6)成功与失败的判断等。
7)当游戏结束时,能够询问用户是否重新开始。
游戏技巧:
1)最大数尽可能放在角落。
2)数字按顺序紧邻排列。
3)首先满足最大数和次大数在的那一列/行是满的。
4)时刻注意活动较大数(32以上)旁边要有相近的数。
5)以大数所在的一行为主要移动方向
6)不要急于“清理桌面”。
三、开发团队
学号
姓名
职责
详细任务
1407030108
刘聪
界面设计、部分代码研究
富有创意的设计程序的界面,给人以独特的感觉。
同时大部分时间协助贾如举修改代码。
1407030106
贾如举
主要代码研究
通过上网查阅资料,学习,研究代码的作用,使其应用到程序中,并对代码进行了大量的修改。
1407030117
王悦
部分代码探究、实习报告
书写实习报告,通过刘聪与贾如举的反馈将其记录于报告中。
同时协助贾如举修改代码。
完成代码等研究。
1407030119
吴宇铖
游戏测试
测试游戏是否符合预期的标准,寻找其中的bug
四、技术总结
1.
(1)“我的2048”游戏程序流程图
(2)游戏界面整体流程图
2.主要技术:
主要技术包括界面设计,界面转换,鼠标、键盘控制事件,页面布局,方块的大小和颜色设定,游戏的组合,信号与槽的应用等一系列问题......
3.遇到的技术问题及解决方法:
1)代码错误:
网上的教程虽然很全,但是按照教程所建立的工程,以及添加所需的每个类和每个文件,把代码写上之后发现了很多错误,这些错误有些是能解决,而大多数并不能解决,真的令我们很头疼。
解决方案:
经过组员的不懈努力,以及上网查资料、请教同学和老师,终于逐渐的解决了一个个的大问题,程序终于可以运行,但是距离成功还是很遥远,因为这只是刚刚构建好,好多功能还没有实现,但我们的基础工作己经做好。
2)界面的转换:
我们之前并不知道该怎么在点击一个按钮的时候关掉当前界面同时开启另一个界面,这也是个很大的问题,因为界面不转换,我们的所有功能将无法实现。
解决方案:
负责界面设计的刘聪同学运行了几个其他的程序,从其他程序中研究代码,寻找转化界面的方法,并请教了本班同学麻宝鑫,终于不负众望,解决了这个重大的问题,使程序可以运行下去。
此问题的解决刘聪同学功不可没,同时感谢麻宝鑫同学的鼎力相助。
3)颜色的设定:
为了让游戏界面看起来不是那么单调,于是我们想让方块再出现不同数字时显示不同的数字。
这个功能对于程序的影响不大,只不过是令游戏更美观而已。
但要想实现这个功能,难度还是很大的对于小组成员来说,因为我们自大一开始学习的c语言以及c++都没有学到关于颜色的设定,组内成员一度想放弃这个功能,但是负责代码编写的贾如举并没有放弃。
解决方案:
经过大量的程序研究,再加上从论坛、贴吧、qq群查询到的资料,终于找到了是添加颜色的方案,以及方块数字变化时颜色的改变,然而这距离预期的结果还有很大的差距。
我们在一直改进..........
4)程序的整合,我们的“2048”分为键盘版和鼠标版两种,看似一个游戏,其实是两个不同的游戏整合到一起,但大部分功能的实现还是一样的,只有键盘控制和鼠标控制这部分的设计是不同的。
想要一同实现这两个功能,需要把两个工程整合到一起。
刚开始我们认为本来很容易就能整合到一起,但事实并非如此。
整合到一起以后,代码出现大量错误。
解决方案:
经过对错误代码的研究,发现错误的原因是很多变量定义重复,因此经过修改,将重复代码改正。
解决了大量问题以后,程序终于可以运行。
(附游戏界面图片一张)
4.关键代码:
1)鼠标控制游戏所需代码:
voidGameWidget:
:
mouseReleaseEvent(QMouseEvent*e)
{
//如果在播放动画效果则直接退出防止重复产生手势事件
if(isAnimating)
return;
//根据终点坐标和起点坐标计算XY坐标的增量
floatdX=(float)(e->pos().x()-startPos.x());
floatdY=(float)(e->pos().y()-startPos.y());
//确定手势方向
if(abs(dX)>abs(dY))
{
if(dX<0)
emitGestureMove(LEFT);
else
emitGestureMove(RIGHT);
}
else
{
if(dY<0)
emitGestureMove(UP);
else
emitGestureMove(DOWN);
}
}
2)判断游戏是否胜利:
boolGameWidget:
:
checkWin()
{
//循环检测是否某个方格的数字为2048
for(inti=0;i<4;i++)
for(intj=0;j<4;j++)
if(board[i][j]==2048)
returntrue;
returnfalse;
}
3)存贮每个数字对应的颜色:
//颜色数组存储每个数字对应的背景色
QColordigitBkg[11]={QColor:
:
fromRgb(0xFF,0xFF,0xCC),QColor:
:
fromRgb(0xFF,0xFF,0x99),
QColor:
:
fromRgb(0xFF,0xCC,0xCC),QColor:
:
fromRgb(0xFF,0xCC,0x99),
QColor:
:
fromRgb(0xFF,0x99,0x99),QColor:
:
fromRgb(0xFF,0x99,0x66),
QColor:
:
fromRgb(0xFF,0x66,0x66),QColor:
:
fromRgb(0xCC,0x99,0x66),
QColor:
:
fromRgb(0xCC,0x33,0x33),QColor:
:
fromRgb(0xCC,0x00,0x33),
QColor:
:
fromRgb(0xFF,0x00,0x00)};
五、心得体会
转眼间几天实习已经过去,虽然倍感折磨,但是收获却是很大的。
“纸上得来终觉浅,绝知此事要躬行!
”通过实训,我们都有这样一个感觉,所学的理论知识与现实差距太大,深深的体会到了自己在编程方面的欠缺和不足,也意识到了我们作为一名软件工程专业的学生,要想在以后的职业中崭露头角,除了要有过硬的理论知识,健康的体魄之外,还必须具备良好的心理素质,是自己在以后的途中无论经历什么样的困难,都立于不败之地。
通过实训老师的课堂讲解与企业文化标准的培训,使我们加深了对自己专业的认识。
这次实习让我们深深体会到一个团队中的各个成员合作的重要性,要善于团队合作,善于利用别人的智慧,这才是大智慧。
靠单一的力量是很难完成一个大项目的,在进行团队合作的时候,还要耐心听取每一个成员的意见,积极参与到团队合作中去,这样会有意想不到的惊喜。
这次实习让我们学到很多东西,不仅在理论上让我们对编程有了全新的认识,让我明白工作中需要能力,素质,知识之外,更重要的是学会了如何去完成一个任务,懂得了享受工作。
在实践能力上也得到了很大的提高,真正做到了学以致用,对我们来说受益匪浅。
更让我们真切的体会到作为一名未来程序员到所需要的素质:
耐心,勤思好问,享受团队不断努力的乐趣,学以致用。
。
当遇到问题,冷静,想办法一点一点的排除障碍,到最后获取成功,一种自信心就由然而生,这应该就是工作的乐趣。
有时候不懂的就需要问别人了,虚心请教,从别人的身上真的能学到自己没有的东西,每一次的挫折都会使我更接近成功。
还有学会了在工作中与人的合作与交流,同乐同累,合作互助,这是团体的精神,也是必须学习的东西。
我们深刻的认识到要成为一名优秀的软件开发人员不是一件容易的事情。
要想成为一个合格的程序员就有具备一种自学能力,在工作中会遇到很多从未接触过的问题,当有了问题时要去解决,在你不断努力,寻找答案的过程中,自己的能力也在潜移默化的提升。
有时遇到问题时可能有很多想法但却不知道那个正确,这就需要我们不断地去探索,不断地尝试。
除此之外,从一起做项目的同学身上我看到了谦虚谨慎、细心努力的态度,从他们身上找寻我所缺少的品质,不断学习。
从老师那里我看到了企业人的生活面貌,没有事情可以不劳而获,今天老师们能够领导我们是他们之前努力的结果,虽然老师没有和我们讲很多公司里的事情,可是他们的言行中所表现出来的都是比我们要严谨的多的对工作的态度。
实习中学到了QT编程的知识,我们小组所做的“我的2048”小游戏,把学到的知识运用到具体实践中,不仅加深我们对理论的掌握和运用,真正地做到了学以致用,还让我们拥有一次又一次的难忘团队开发经历,这也是实训最大的收获。
通过实训,我们都有这样一个感觉,所学的理论知识与现实差距太大,实训,开阔了我们的视野,同时也锻炼了我们踏实、稳重的能力,每个人都很珍惜这次实训。
在匆匆过去的十天内,我们每天往返于实习机房与宿舍之间,使我们享受了一个充实的学习时期,让我们感受到了大学的魅力,对自己充满信心,对大学充满信心,以积极的心态迎接明天挑战。
虽然实习已经结束,但我们都很怀念这次实训,在实训的时间里,每一天都过的那么的充实、踏实;我相信,这次实训会在我们以后的学习、工作有很大的影响,在实训的这段时间里这些宝贵的经验将会成为我们以后工作的基石。
只要我们秉承努力艰苦奋斗,为理想拼搏的精神,尽管在未来的路上有可能荆棘丛丛,但我相信我们一定可以披荆斩棘,度过重重难关,实现自己未来的理想。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 实习 报告