基于C++的2048游戏设计

上传人:豆*** 文档编号:126625806 上传时间:2022-07-28 格式:DOC 页数:12 大小:378.50KB
收藏 版权申诉 举报 下载
基于C++的2048游戏设计_第1页
第1页 / 共12页
基于C++的2048游戏设计_第2页
第2页 / 共12页
基于C++的2048游戏设计_第3页
第3页 / 共12页
资源描述:

《基于C++的2048游戏设计》由会员分享,可在线阅读,更多相关《基于C++的2048游戏设计(12页珍藏版)》请在装配图网上搜索。

1、学号: 实习论文(本科)学 院 数学与记录学院 专 业 记录学 年 级 级 姓 名 论文题目 基于C + + 的2048游戏设计 指引教师 职称 讲师 成 绩 10月16日目 录摘 要1核心词1Abstract1Key words1前言11 实习前的准备12 实习目的23 实习任务24 实习内容24.1 2048游戏简介24.2 2048模块需求分析34.3 UI界面的规划设计34.4 头文献的需求分析44.5 随机数的生成44.6 图片资源的导入和加载54.7 主体算法的分析和实现64.8 游戏结束的判断84.9 游戏最后运营成果95 个人总结10参照文献10基于C + + 的2048游戏设

2、计学生姓名: 学号: 学 院:数学与记录学院 专业:记录学指引教师: 职称:讲师摘 要:专业实习,是教学筹划中的一门重要的必修课和综合实践课程,是培养学生的专业素质和实际能力的重要实践环节。通过本次的C + + 实习,掌握了程序设计的基本理论与措施,可以运用基本代码进行简朴的程序设计,运营基本的游戏程序。核心词:C + + ;设计;程序The Game Design of 2048 Based on C + +Abstract:The important required course in the teaching plan and comprehensive practice curric

3、ulum, professional internships, is to cultivate the students professional quality and practical ability of the important link of practice. Through the C + + practice, we grasp the basic theory and method of program design, be able to use basic code to build simple program and run it.Key words:C + +

4、;Design;Program 前言这次实习是我们毕业前的一次实践性实习。为了拓展我们的知识面,增强我们对所学知识的应用能力,增长我们在社会竞争中的经验,锻炼和提高我们的综合素质,以便在后来毕业后能真正走入社会,并且可以在生活和工作中较好地解决各方面的问题,学校特地从北京达内科技集团聘任了专业的C + + 工程师讲师来对我们进行专业实训,进一步运用所学知识分析和解决实际专业问题,从而为就业打下良好的基本。 1 实习前的准备学校对我们的实习非常注重,本着通过实习来检查本专业教学中存在的问题,改善教学工作的目的,提前就为我们联系好了与专业有关的单位来做实习培训。在正式进入机房实训前,讲师还专门做了

5、一场有关实习内容的分享会,简介了实习的基本状况、基本规定、实习项目的基本状况,学习和理解实习项目的有关文献和资料,协助我们更系统地理解和熟悉接下来的实习课程内容。2 实习目的1培养理论联系实际的思想作风和工作作风;2培养作为计算机类工作人员的专业素质;3培养独立或与团队一起开展信息解决工作的基本业务能力。3 实习任务1通过实际操作,理解并逐渐熟悉掌握C + +;2掌握常用软件的纯熟操作,为此后所盼望的专业方向做准备;3在教师指引下,运用C + + 编程,完毕独立的游戏编程任务;4最后在实习指引教师的指引下,参与信息解决与计算工作,完毕一篇有关的实习论文(或实习记录)。4 实习内容4.1 204

6、8游戏简介2048游戏是一款简朴而流行的数字游戏,属于益智游戏。操作界面上有16个格子,初始时会有两个格子上安放了两个数字2,每次可以选择上下左右其中一种方向去滑动。每滑动一次,所有的数字方块都会往滑动的方向靠拢。两个相似数字方块撞在一起之后合并成为她们的和。每次操作之后会在空白的方格处随机生成一种2或者4(其她模式会有所变化),最后得到一种“2048”的方块就是胜利了。由于规则简朴,多种版本和平台上均有该款游戏。相信有不少人都玩过它,但是操作界面只有半个巴掌大的一种游戏,背后却要用到类似随机数的产生、大批量数据的解决、UI设计等任务,真的不算是一种很简朴的工作。本次的游戏程序设计任务将运用C

7、 + + 来实现。4.2 2048模块需求分析一方面分析了这款游戏的功能需求。2048游戏一般由如下几种模块来构成:1.矩阵方块;2.控制模块;3.计算模块;4.输出模块。每个模块来实现2048 游戏的各项功能:方向移动、方块合并、记录目前数据和输出计提成果、游戏胜利或失败后执行结束游戏操作等。4.3 UI界面的规划设计一方面进行UI界面的规划设计。创立一种800600的背景模块,在模块左侧这里我们需要16个方块,按照44的规格排列整洁。模块右侧的空白区域需要添加功能键:上、下、左、右、重置、关闭。此外我们还需要再添加一种计分标签,用来计算并输出游戏得分。最后按照模块功能与人的操作习惯,将标签

8、分别排列在合适的位置。最后的UI界面如图1所示:图1UI界面(矩阵方块)设计完毕后来,接着来开始程序代码的编写。4.4 头文献的需求分析一方面分析需要用到的头文献。第一步需要生成随机数,第二步要为16个矩形模块填充随机数所相应的图片,第三步为操作界面添加背景,第四步在游戏成功或失败时即时输出信息。分析完毕后来将所有需要用到的头文献都写入show.cpp文献里:#include show.h#include ui_show.h#include#include#include#include#include QDialog(parent), ui(new Ui:Show)4.5 随机数的生成接下来

9、我们开始写入生成两个随机数和分数从零开始的代码,同步加入图片加载和声明面板对象的代码: ui-setupUi(this); srand(time(NULL); for(int i=0;i4;i+) for(int j=0;jbackgroundRole(),QBrush(pix);/设立画板样式 this-setPalette(palette);/设立到我们的面板上void Show:sui() do int x=rand()%4; int y=rand()%4; if(mapxy=0) if(rand()%20=4) mapxy=4; else mapxy=2; break; while(1

10、);4.6 图片资源的导入和加载将所有准备好的图片资源载入设计程序,以便后续的图片加载工作。随后我们进入为16个矩形模块和背景加载其各相应随机数图片的设计过程,这个模块以地址形式实现:void Show:paintEvent(QPaintEvent *) QImage img; img.load(:/image/+QString:number(map00)+.png); ui-show_1-setPixmap(QPixmap:fromImage(img); img.load(:/image/+QString:number(map01)+.png); ui-show_2-setPixmap(QP

11、ixmap:fromImage(img); img.load(:/image/+QString:number(map02)+.png); ui-show_3-setPixmap(QPixmap:fromImage(img); img.load(:/image/+QString:number(map03)+.png); ui-show_4-setPixmap(QPixmap:fromImage(img); img.load(:/image/+QString:number(map10)+.png); ui-show_5-setPixmap(QPixmap:fromImage(img); img.l

12、oad(:/image/+QString:number(map11)+.png); ui-show_6-setPixmap(QPixmap:fromImage(img); img.load(:/image/+QString:number(map12)+.png); ui-show_7-setPixmap(QPixmap:fromImage(img); img.load(:/image/+QString:number(map13)+.png); ui-show_8-setPixmap(QPixmap:fromImage(img); img.load(:/image/+QString:number

13、(map20)+.png); ui-show_9-setPixmap(QPixmap:fromImage(img); img.load(:/image/+QString:number(map21)+.png); ui-show_10-setPixmap(QPixmap:fromImage(img); img.load(:/image/+QString:number(map22)+.png); ui-show_11-setPixmap(QPixmap:fromImage(img); img.load(:/image/+QString:number(map23)+.png); ui-show_12

14、-setPixmap(QPixmap:fromImage(img); img.load(:/image/+QString:number(map30)+.png); ui-show_13-setPixmap(QPixmap:fromImage(img); img.load(:/image/+QString:number(map31)+.png); ui-show_14-setPixmap(QPixmap:fromImage(img); img.load(:/image/+QString:number(map32)+.png); ui-show_15-setPixmap(QPixmap:fromI

15、mage(img); img.load(:/image/+QString:number(map33)+.png); ui-show_16-setPixmap(QPixmap:fromImage(img); ui-fen-setText(QString:number(fen);4.7 主体算法的分析和实现接下来进入重要的算法设计环节。在此根据2048游戏算法的功能需求和功能模块,对重要算法进行分析并实现。对于控制模块,一共有上、下、左、右、重置、关闭六个控制功能键。对于左移功能键的算法,每点击一次,所有的数字方块都会往滑动的方向靠拢。两个相似数字方块撞在一起之后合并成为她们的和。每次操作之后会在

16、空白的方格处随机生成一种2或者4。此时分数也在合计增长。这一部分中重置和关闭这两个功能键相对与其她功能键独立,而上、下、左、右四个功能键的算法有一定的相似之处,因此如下仅具体展示左移功能键的代码。目前开始对这六个功能键进行代码编写:void Show:on_pushButton_3_clicked() /reset for(int i=0;i4;i+) for(int j=0;jclose();void Show:on_pushButton_2_clicked() /up for(int k=0;k3;k+) for(int i=1;i4;i+) for(int j=0;j4;j+) if(m

17、api-1j=0) mapi-1j=mapij; mapij=0; else if(mapij=mapi-1j) mapi-1j=mapi-1j+mapij; mapij=0; fen+=mapi-1j; if(go()=1) sui();/产生随机数 update();/更新界面Show:Show() delete ui;void Show:on_pushButton_clicked() /rightvoid Show:on_pushButton_5_clicked() /downvoid Show:on_pushButton_4_clicked() /left4.8 游戏结束的判断最后一种

18、需解决的问题就是对于游戏与否结束的判断,其重要体目前控制和计算模块。如果游戏未能达到任务而失败,输出“失败”和“游戏结束”的信息,同步只有关闭和重置功能键可以被操作:int Show:go() for(int i=0;i4;i+) for(int j=0;j4;j+) if(mapij=0) return 1; return -1;void Show:pan() int arr42=-1,0,0,-1,0,1,1,0; for(int i=0;i4;i+) for(int j=0;j4;j+) if(mapij=0) return; else for(int loop=0;loop4;loop

19、+) int x=i+arrloop0; int y=j+arrloop1; if(x3|y3|yclose(); 以上我们对2048这个游戏的程序设计部分的工作已经完全结束,接下来构建程序,检查并修改错误,就可以打开并运营这个游戏了。4.9 游戏最后运营成果最后的游戏界面如图2所示:图2点击右侧功能键,即可开始游戏。5 个人总结通过这次实习我较好地掌握了如何将C + + 实际运用到游戏开发中去,检查了自己学习的成效、检测了自己的所缺。这就形成了从实践中学习,从学习中实践的良性循环。这是一种较好的锻炼机会,能将所学的理论知识联系于实际,我感觉学习与实践是密不可分的。当今中国经济飞速发展,国内外

20、经济不断变化,在机会越来越多的同步,也浮现了更多的题目,有了更多更艰巨的挑战,这也就对人才的规定越来越高。我们不仅要学好课本里的知识,还要积极走进社会,积极在实践中学习其她的东西,不断增长自己的经验,全面武装自己,才干在这个社会有立足之地甚至拥有不败之地。参照文献1谭浩强.C程序设计教程M.清华大学出版社,.2荣钦科技.VisualC + + 游戏编程基本M.电子工业出版社,.3王浩.VisualC + + 游戏开发典型案例详解M.清华出版社,.4 刘明军.C语言程序设计M.电子工业出版社,.5 凌云.C语言程序设计与实践M.机械工业出版社,.6 Stanley B.Lippman C + + primerM.人民邮电出版社,.7 Steve Maguire.编程精粹M.人民邮电出版社,.8 Andrew Koenig.C陷阱与缺陷M.人民邮电出版社,.

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!