毕业论文--基于安卓系统的拼图游戏设计
基于Android的拼图小游戏的设计与实现
基于Android的拼图小游戏的设计与实现The design and implementation of the puzzle gamebased on Android内容摘要在移动的通信技术还有网络技术等的发展环境情况下,移动手机系统正在发生惊天腹地的改变,从一开始简单的打电话发短信到现在集和网上冲浪、聊天、邮件功能、视频、直播等各种各样的服务跟游戏娱乐容为一体的手机,最开始是由谷歌公司牵手许多有自身硬实力的软硬件厂商的加盟,成立了OMS联盟,并推出Android平台手机操作系统。
安卓手机操作平台作为新时代的宠儿有着很大的优势与广阔的发展前途。
本文首先从Android手机的游戏市场现状启程,按照了传统手机拼图游戏的具体要求并且加以学习,并有计划的针对拼图游戏召开设计,让我可以进一步的了解开发方向并实施,在实施拼图游戏的项目过程中在,归纳和手机游戏未来的开发主要流程,该主要流程包含游戏的需求分析、游戏设计、代码的实现和测试等相关的内容。
关键词:Android平台手机游戏拼图游戏AbstractIn the development environment of mobile communication technology and network technology, the mobile phone system is changing dramatically. From the beginning of simply calling and texting to the present mobile phone which integrates various services and game entertainment such as Internet surfing, chatting, email function, video, live broadcast, etc., it started with Google holding hands with many of its own hardware The alliance of powerful hardware and software manufacturers established OMS alliance and launched Android platform mobile operating system. Android mobile operating platform as the darling of the new era has great advantages and broad prospects for development.This paper takes the lead in starting from the game market of Android mobile phones, according to the specific requirements of traditional mobile phone jigsaw games and learning them, and plans to hold a design for the jigsaw games, so that I can further understand the development direction and implementation. In the process of implementing the project of jigsaw games, the main process of the future development of mobile games is summarizedand included in the main process of the game The demand analysis, game design, code implementation and testing of the play.Key words:Android platform Mobile game Jigsaw puzzle目录第一章引言 (1)1.1游戏的意义与目的 (1)1.2 研究现状 (1)1.3创新思路 (2)1.4 本课题研究重点 (2)1.5本论文的基本结构 (3)第二章 Android的架构与开发平台的搭建 (4)2.1 Android的架构 (4)2.2 Android开发环境搭建 (5)第三章游戏整体设计和详细设计 (8)3.1拼图游戏的概述 (8)3.2 游戏模块概述 (9)3.2.1 界面布局模块 (9)3.2.2背景音乐模块 (10)3.2.3 游戏计时与倒计时模块 (10)3.3游戏主界面 (10)3.3.1 联网模式模块 (11)3.3.2关卡模式板块 (12)3.3.3休闲模式模块 (15)3.3.4帮助声明 (16)3.4 功能的设定 (17)3.5 性能的规定 (17)第四章游戏主体内容的设计与实现 (18)4.1 游戏主 Activity 设计 (18)4.2 图片的分割与图块位置 (18)4.3打乱图片 (18)4.4 关卡布置 (19)4.5 图片路径 (20)4.6背景音乐设定 (21)第五章软件测试 (23)5.1 游戏测试概述 (23)5.2 运行测试 (23)总结和展望 (26)参考文献 (27)致谢 (28)第一章引言1.1游戏的意义与目的随着手机技术的发展,手机游戏正在向图片游戏,特别是基于 3G、4G网络平台方向发展[1]。
基于Android平台的益智游戏的设计与现毕业论文
JIUJIANGUNIVERSITY毕业论文题目基于Android平台的益智类游戏的设计与实现英文题目 DesignandImplementation of Puzzle Games BasedonAndroidPlatform院系信息科学与技术学院专业信息管理与信息系统姓名卢璐曼琳班级学号 A102208指导教师王飞鹏二○一四年五月摘要现如今,由于日益增长的市场需求、不断创新的技术、更为成熟的盈利模式,手机游戏不断发展。
作为最流行的手机操作系统,Android系统拥有者巨大的手机游戏需求者数量。
目前,以学习为主要任务的学生群体是手机游戏用户的主体,不少学生沉迷游戏而对学习丧失兴趣。
因此在Android手机平台上开发出一款寓教于乐的手机益智游戏,使学生在愉悦的游戏过程中快乐的学习是十分必要的。
本课题旨在研究如何开发出一款将经典游戏“打地鼠”与背单词结合的富有教育意义的手机益智游戏。
针对目前市场中的很多在外观和功能上有着很大优势却较为缺失趣味性的背单词软件,本应用将背单词与“打地鼠”游戏融合,并从认知心理学的记忆角度出发,优化的背单词过程,从而使得学生通过益智游戏锻炼思维敏捷性,加强单词记忆。
本文从开发Android手机游戏的背景和开发环境出发,分析了手机游戏的开发环境,介绍了手机游戏开发的关键技术,设计并开发一款“打地鼠”与记忆单词结合的学习型手机益智游戏。
关键词:安卓平台,益智游戏,打地鼠,单词记忆AbstractNow, due to the growing market demand , innovative technology , more mature profit model, mobile games is constantly evolving . As the most popular mobile operating system , Android system has a huge number of mobile game needs . Currently, those groups of students with learning as the main task is the main mobile phone game users , many students addicted to the game and lose interest in learning . Therefore, the development of amobile phonepuzzle gamebasedon theAndroidmobile platform,allowsstudentspleasureduring the gamefunto learn,it is very necessary.This paperaims tostudy how todevelop aricheducationalmobile puzzlegame which combinesthe classic game "to fight rats" and the vocabularysoftware.Forvocabularysoftwarein the currentmarket, thatmanyin appearanceand functionalityhas a greatadvantagebutmoreinterestingis missing, thisapplication integratesvocabularysoftwareand "play hamster" game, andfrom theperspective of cognitivepsychologyof memoryand optimizethe process ofmemorizing words, allows students to improveby playingpuzzle gamesthinkingagilityand enhanceword memory.This article isfrom theAndroidmobile gamedevelopmentbackground anddevelopment environment, analyzes the mobile gamedevelopment environment, introduces the keytechnologiesofmobile game development, design and developamobilelearningpuzzle game which combinesthe classic game "to fight rats" and the vocabularysoftware.Keywords:Android Platform, Puzzle Games,Whac-A-Mole,The Word Memory目录摘要IAbstractII目录III1 绪论1.1背景分析(错误!未定义书签。
andriod拼图游戏课程设计
andriod拼图游戏课程设计一、课程目标知识目标:1. 学生能理解Andriod平台的基本编程概念,掌握拼图游戏的原理和开发流程。
2. 学生能掌握运用Java语言进行Andriod应用开发的基本方法,运用XML 进行界面布局设计。
3. 学生了解并运用Andriod SDK中的相关类和接口,实现拼图游戏的逻辑功能。
技能目标:1. 学生通过动手实践,培养编程思维,提高解决问题的能力。
2. 学生学会使用Andriod Studio开发工具,培养良好的编程习惯。
3. 学生能够独立完成一个简单的Andriod拼图游戏项目,具备基本的调试和优化能力。
情感态度价值观目标:1. 学生培养对计算机编程的兴趣和热情,提高创新意识和团队协作能力。
2. 学生通过课程学习,认识到编程在生活中的广泛应用,增强学以致用的意识。
3. 学生在学习过程中,培养面对困难的勇气和毅力,形成积极向上的学习态度。
本课程针对高中年级学生,结合学科知识深度和课程性质,注重培养学生的动手实践能力和编程思维。
在教学过程中,关注学生的个体差异,充分调动学生的学习积极性,引导他们主动探索、合作学习。
通过本课程的学习,使学生能够将所学的编程知识运用到实际项目中,提高他们分析问题和解决问题的能力。
同时,注重培养学生的情感态度价值观,为他们的终身学习奠定基础。
二、教学内容1. Andriod平台基础:介绍Andriod系统架构、开发环境搭建(Andriod Studio安装与配置)、权限管理等基本知识。
2. Java语言基础:回顾Java基本语法、面向对象编程思想,重点掌握类与对象、继承与多态、异常处理等知识。
3. XML布局设计:学习XML基本语法,掌握线性布局、相对布局等常用布局方式,以及自定义视图。
4. Andriod SDK应用:学习使用Andriod SDK中的相关类和接口,如Activity、Fragment、Intent、Bitmap等,了解其在拼图游戏中的应用。
Android拼图游戏开题报告
毕业设计(论文)开题报告
软件学院软件工程专业
课题名称:基于Android平台的自定义拼图
游戏的设计与实现
学生姓名:
学号:
指导教师:
报告日期:
说明:
1.本报告必须由承担毕业设计(论文)课题任务的学生在接到“毕业设计(论文)任务书”、正式开始做毕业设计(论文)的第2周或第3周末之前独立撰写完成,并交指导教师审阅。
2.每个毕业设计(论文)课题撰写本报告一份,作为指导教师、毕业设计(论文)指导小组审查学生能否承担该毕业设计(论文)课题任务的依据,并接受学校的抽查。
毕业设计(论文)任务书1——基于J2ME智能手机的拼图游戏设计与开发
10——12周对系统设计功能进行模拟仿真;
13——14周调试、修改和完善系统;
15——16周整理论文,准备答辩。
主要参考文献及资料收集准备
[1]朱海华,卢颖颖.基于J2ME的手机游戏系统的实现[J],科技资讯,2007.14
[2] Albert L•Zobrist.“A New Hashing Method with Application for Game Playing”,Technical report88 ,University of Wisconsin,April 2007 Reprinted in ICCA Journal,2007,13:69-73.
[3]赵春蕾,王妍妍.基于J2ME的手机游戏设计[J].科技信息(学术研究), 2008,(20):41-45
[4]付伟,朱悦冬.基于J2ME移动通讯设备软件的研究与开发[J].哈尔滨师范大学自然科学学报,2009,22(02):71-74
[5] Martin de Jode. Programming the MIDP Lifecy cleon Symbian OS, 2009,(11):52-58
起止日期
2011.12-2012.6
备注
选择该题目的学生要求对程序设计感兴趣,熟悉J2ME编程工具,具有一定软件编程能力。自己要有计算机。课题成果形式:游戏系统。
课题类型:工程设计类,实验研究类,计算机软件设计类,电路设计类,其它类
课题来源:科研,教研,预研,生产实践,其它类
系主任谭敏教研室主任顾涓涓指导教师胡国华
随着手机的日益普及、JAVA功能在移动设备上的实现,JAVA应用程序产生的手机增值服务逐渐体现出其影响力,对丰富人们的生活内容、提供快捷的资讯起着不可忽视的作用。本文主要介绍了一款智能手机游戏,本设计着眼于J2ME技术的应用,采用JDK1.6,NetBeans 5.5作为开发工具,使用WTK2.5作为模拟器测试,开发一款智能手机的拼图游戏程序。本程序将老少皆宜的经典作品移植到手机上来,为更流行的硬件平台提供应用软件。这些都将能很好的满足未来人们对手机游戏的需求。游戏基于JAVA平台编写,满足一般手机用户的娱乐需求,该技术的研究具有重要的研究价值和应用价值。
基于ANDROID系统的游戏APP设计毕业论文
基于ANDROID系统的游戏APP设计毕业论文目录第1章绪论 (1)1.1选题背景及意义 (1)1.2Android手机游戏APP的市场现状 (2)1.3本文主要容 (2)第2章 Android系统平台概况 (3)2.1Android操作系统 (3)2.2Android操作系统特性 (3)2.3Android操作系统框架结构 (4)2.3.1 Application (4)2.3.2 Application Framework (4)2.3.3 Libraries And Android RunTime (5)2.3.4 Linux Kernel (5)2.4Android应用程序构成 (5)2.4.1 Activity (5)2.4.2 Broadcast Receiver (6)2.4.3 Service (6)2.4.4 Content Provider (6)2.5Android应用程序的生命周期 (6)第3章系统的整体设计 (8)3.1数独游戏简介 (8)3.2游戏策划 (9)3.2.1 欢迎界面的策划 (9)3.2.2 游戏界面的策划 (9)3.2.3 相关资源 (10)3.3游戏的架构 (10)3.3.1 各类的介绍 (10)3.3.2 游戏的框架简介 (11)第4章软件的实现 (13)4.1欢迎界面的实现 (13)4.1.1 KLSDActivity实现 (13)4.1.2 WelcomeView类的实现 (13)4.1.3 WelcomeViewDrawThread类和WelcomeViewGoThread类的实现.. 144.1.4 HelpView类和AboutView类的实现 (16)4.2游戏界面相关类的实现 (17)4.2.1 GameView的实现 (18)4.2.2 TimeThread的实现 (18)4.3数独算法类的实现 (19)4.3.1 数独算法基本逻辑 (20)4.3.2 检测填充结果 (21)4.4游戏的测试和运行 (22)4.4.1 游戏测试概述 (22)4.4.2 测试环境 (23)4.4.3 游戏运行结果 (23)结论 (27)致谢 (28)参考文献 (29)第1章绪论1.1选题背景及意义2007年,Android手机操作系统横空出世,并以开源的特点迅速占领手机操作系统的市场。
拼图游戏毕业论文
拼图游戏毕业论文拼图游戏毕业论文拼图游戏,作为一种古老而又经典的娱乐方式,一直以来都备受人们的喜爱。
无论是孩童还是成年人,都能从中获得乐趣与挑战。
然而,拼图游戏并不仅仅是一种消遣,它也有着更深层次的意义和价值。
本篇论文将探讨拼图游戏的历史、心理学以及对个人发展的影响。
首先,我们来看一下拼图游戏的历史。
拼图游戏可以追溯到18世纪末的欧洲。
最早的拼图游戏是由木头制成的,每个木块上都有不同的形状,玩家需要将这些块拼接在一起,形成一个完整的图案。
随着时间的推移,拼图游戏逐渐演变为纸质拼图,然后是印刷拼图,最终发展到如今的立体拼图和电子拼图。
拼图游戏的演变不仅反映了科技的进步,也展示了人们对于这种游戏的持续热爱。
其次,心理学研究也揭示了拼图游戏的一些有趣的现象。
根据心理学家的研究,拼图游戏可以帮助培养人们的空间认知能力和问题解决能力。
当我们玩拼图时,我们需要观察每个拼图块的形状和颜色,并通过试错来找到最佳的拼接方式。
这种过程不仅锻炼了我们的观察力和专注力,还培养了我们的耐心和毅力。
此外,拼图游戏还可以激发我们的创造力和想象力。
当我们将不同形状的拼图块组合在一起时,我们可以创造出各种各样的图案和形象,这对于培养我们的艺术审美和空间想象力有着积极的影响。
拼图游戏不仅仅是一种有趣的娱乐方式,它还对个人的发展产生着深远的影响。
首先,拼图游戏可以帮助培养人们的团队合作精神。
在多人拼图游戏中,玩家需要相互协作,共同解决问题。
他们需要交流、合作和分工,以达到最终的目标。
这种团队合作的经验可以帮助人们在现实生活中更好地与他人合作,提高工作效率和团队凝聚力。
其次,拼图游戏还可以提高人们的问题解决能力和逻辑思维能力。
当我们面对一个复杂的拼图时,我们需要分析每个拼图块的形状和颜色,并尝试不同的组合方式。
这种过程需要我们运用逻辑思维来解决问题,并不断尝试和调整,直到找到最佳的解决方案。
这种问题解决的经验可以帮助我们在现实生活中更好地应对各种挑战和困难。
毕业设计(论文)-拼图游戏设计与开发[管理资料]
毕业设计说明书标题:拼图游戏设计与开发学生姓名:系部:信息工程系专业:软件技术班级:动漫1201指导教师:湖南汽车工程职业学院教务处制目录1 引言 (4) (4) (4) (4)2 系统可行性 (5) (5) (6) (6) (6) (7)3 系统设计 (8) (8) (9) (10) (10) (13)4 系统实现 (14)过关判定功能实现 (14)碎片随机出现功能实现 (14)碎片位置的判断功能实现 (16) (17)参考文献 (19)致谢 (20)1 引言拼图游戏并非一开始便形成今天的面貌,它经历了一个发展、演变过程。
1762年。
英国制图家约翰·史皮尔斯布里(JohnSpils-bury)为了改进地理教学,将一块块拼图应用在地理科的教材上,拼图的每一块可以代表一个国家、一个省份或地区,将它们完整地拼凑起来,就可以形成一个洲、一个国家。
这样,枯燥的地理方位知识,借助于具体生动的拼图,就被学生所理解和强化了。
这种教学方法,时至今日还在有些中学中运用,确实有十分独到的记忆深化效果。
史皮尔斯布里以后又将整个地图设计成拼图游戏的形式。
随后,拼图逐渐突破教学的功能,朝着娱乐的方向发展。
早期的拼图游戏构图简单,轮廓单纯明晰,难度不大。
到了19世纪初。
印刷技术的突飞猛进和印模压力机的发展.使得拼图的制作工艺得到很大的提高。
1840年,法国和德国率先推出了紧密相扣的拼图,此后,拼图游戏迅速风靡世界。
至今仍然未被冷落。
随着智能手机的普及,手机上的游戏更是受到了很多人的青睐和欢迎。
作为平时人们消遣娱乐打发时间的一种方式,目前休闲类游戏占有了手机游戏中的绝大多数,休闲类游戏不仅是一种有效的娱乐方式,在移动设备上还能够在满足娱乐的同时尽量的延长移动设备的使用时间。
一款好的拼图类游戏集休闲、娱乐、深化记忆、提升智力与一体。
让玩家在游戏中可以享受到不一样的乐趣。
本章主要是介绍开发这款游戏的背景、意义,面对现在高速发展的社会,人们越来越关注于移动端的休闲放松类游戏,所以开发这款小游戏是很有意义的。
android实现简单拼图游戏
android实现简单拼图游戏本⽂实例为⼤家分享了android实现简单拼图游戏的具体代码,供⼤家参考,具体内容如下1.2.//使⽤回调接⼝,⾸先初始化pintuview并绑定,实现回调接⼝的⽅法mPintuLayout = (PintuLayout) findViewById(R.id.mpintu);mPintuLayout.setOnGamePintuListener(new GamePintuListener() {@Overridepublic void timechanged(int currentTime) {tvTime.setText(currentTime + "");}@Overridepublic void nextLevel(final int nextLevel) {mtvNextLevel.setVisibility(0);mPintuLayout.pause();mPintuLayout.nextLevel();level = nextLevel + "";}@Overridepublic void gameover() {mtvGameOver.setVisibility(0);}});}@Overrideprotected void onPause() {super.onPause();mPintuLayout.pause();}@Overrideprotected void onResume() {super.onResume();mPintuLayout.resume();}// 设置按两次回退退出程序@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK) {exit();Toast.makeText(getApplicationContext(), "再按⼀次则退出",Toast.LENGTH_SHORT).show();return false;}return super.onKeyDown(keyCode, event);}private void exit() {if (!isExit) {isExit = true;myHandler.sendEmptyMessageDelayed(0, 2000);} else {finish();}}Handler myHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);isExit = false;}};//界⾯的点击事件@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.textView1:mPintuLayout.pause();Toast.makeText(getApplicationContext(), "Pausing",Toast.LENGTH_SHORT).show();mPintuLayout.setVisibility(4);miv.setVisibility(0);break;case R.id.textView2:mPintuLayout.resume();Toast.makeText(getApplicationContext(), "Restarted",Toast.LENGTH_SHORT).show();mPintuLayout.setVisibility(0);miv.setVisibility(4);break;case R.id.mtvGameOver:mtvGameOver.setVisibility(4);mPintuLayout.restart();break;case R.id.mtvNextLevel:mtvNextLevel.setVisibility(4);tvLevel.setText("" + level);mPintuLayout.resume();break;}}3.每⼀⼩块退⽚的beanpublic class ImagePieces {//⼩块图⽚的索引值private int index;//整个⼀⼤块的图⽚载体private Bitmap bitmap;public int getIndex() {return index;}public void setIndex(int index) {this.index = index;}public Bitmap getBitmap() {return bitmap;}public void setBitmap(Bitmap bitmap) {this.bitmap = bitmap;}//构造⽅法public ImagePieces(int index, Bitmap bitmap) {super();this.index = index;this.bitmap = bitmap;}public ImagePieces() {// TODO Auto-generated constructor stub}@Overridepublic String toString() {return "ImagePieces [index=" + index + ", bitmap=" + bitmap + "]"; }}4.图⽚分割类public class ImageSplitterUtil {//pieces 为切成的块数,⽤list保存public static List<ImagePieces> splitImage(Bitmap bitmap,int pieces){ List<ImagePieces> imagePieces = new ArrayList<ImagePieces>(); int width = bitmap.getWidth();int height = bitmap.getHeight();//去⼩的⼀⽅每⼀个快的宽度int pieceWidth = Math.min(width,height)/pieces;for(int i=0;i<pieces;i++){for(int j=0;j<pieces;j++){ImagePieces imagepieces = new ImagePieces();/** 1+0 2+0 3+0* 1+1 2+1 3+1*/imagepieces.setIndex(j+i*pieces);int x = j*pieceWidth;int y = i*pieceWidth;//x,y是每⼀块的起点位置,piecewidth是每⼀块的长度和⾼度,这⾥弄成正⽅形imagepieces.setBitmap(Bitmap.createBitmap(bitmap, x, y, pieceWidth, pieceWidth)); //所有操作setIndex setBitmap 然后把所有碎⽚按顺序加⼊list集合中imagePieces.add(imagepieces);}}return imagePieces;}}5.布局类⾸先private void init() {// 将margin的值的单位转为dpmMargin = (int) TypedValue.applyDimension(PLEX_UNIT_DIP,3, getResources().getDisplayMetrics());mPadding = min(getPaddingLeft(), getPaddingRight(), getPaddingTop(),getPaddingBottom());}其次onmeasure@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {super.onMeasure(widthMeasureSpec, heightMeasureSpec);// 获得宽度和⾼度的最⼩值mWidth = min(getMeasuredHeight(), getMeasuredWidth());if (!once) {// 进⾏切图及排序initBitmap();// 设置imageview[item]的宽⾼等属性initItem();// 标识已画,防⽌再画once = true;countTimeBaseLevel();}// 宽度和⾼度的最⼩值设为宽⾼setMeasuredDimension(mWidth, mWidth);}其次// 进⾏切图及排序private void initBitmap() {if (mBitmap == null) {mBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.psb);}mItemBitmaps = ImageSplitterUtil.splitImage(mBitmap, mColumn);// 是⽤sort把⼩块的图⽚乱序Collections.sort(mItemBitmaps, new Comparator<ImagePieces>() {@Overridepublic int compare(ImagePieces a, ImagePieces b) {return Math.random() > 0.5 ? 1 : -1;}});}private int mTime;// 相对关卡的时间数private void countTimeBaseLevel() {mTime = (int) Math.pow(2, mLevel) * 30;mHandler.sendEmptyMessage(TIME_CHANGED);}// 动画层的布局private RelativeLayout mAnimaLayout;private boolean isAniming;回调接⼝public interface GamePintuListener {void nextLevel(int nextLevel);void timechanged(int currentTime);void gameover();}public GamePintuListener mListener;// 设置接⼝回调public void setOnGamePintuListener(GamePintuListener mListener) {this.mListener = mListener;}游戏的进程控制,这⾥利⽤的是hanglerprivate static final int TIME_CHANGED = 0x110;public static final int NEXT_LEVEL = 0x111;private Handler mHandler = new Handler() {public void handleMessage(android.os.Message msg) {switch (msg.what) {case TIME_CHANGED:if (isGameSuccess || isGameOver || isPausing)return;if (mListener != null) {mListener.timechanged(mTime);if (mTime == 0) {isGameOver = true;mListener.gameover();return;}}mTime--;mHandler.sendEmptyMessageDelayed(TIME_CHANGED, 1000); break;case NEXT_LEVEL:mLevel = mLevel + 1;if (mListener != null) {mListener.nextLevel(mLevel);} else {nextLevel();}break;}}};重新开始游戏⽅法public void restart() {isGameOver = false;mColumn--;nextLevel();}暂停和继续的⽅法private boolean isPausing;public void pause() {isPausing = true;mHandler.removeMessages(TIME_CHANGED);}public void resume() {if (isPausing) {isPausing = false;mHandler.sendEmptyMessage(TIME_CHANGED);}}public void nextLevel() {this.removeAllViews();mAnimaLayout = null;mColumn++;isGameSuccess = false;countTimeBaseLevel();initBitmap();initItem();};// 设置imageview[item]的宽⾼等属性private void initItem() {// 把内边距和外⾯距剪掉除以列数就是每⼀块的宽度mItemWidth = (mWidth - mPadding * 2 - mMargin * (mColumn - 1))/ mColumn;// item图⽚位置的初始化mPintuItems = new ImageView[mColumn * mColumn];// item图⽚的初始化for (int i = 0; i < mPintuItems.length; i++) {ImageView item = new ImageView(getContext());item.setOnClickListener(this);item.setImageBitmap(mItemBitmaps.get(i).getBitmap());mPintuItems[i] = item;item.setId(i + 1);// 在item⾥⾯存放index,当拼图成功时候做为判断⼀句item.setTag(i + "_" + mItemBitmaps.get(i).getIndex());youtParams lp = new youtParams( mItemWidth, mItemWidth);// 设置间隙// 如果不是最后⼀列if ((i + 1) % mColumn != 0) {lp.rightMargin = mMargin;}// 不是第⼀列if (i % mColumn != 0) {lp.addRule(RelativeLayout.RIGHT_OF, mPintuItems[i - 1].getId()); }// 纵向间隙// 如果不是第⼀⾏,设置topMargin和ruleif ((i + 1) > mColumn) {lp.topMargin = mMargin;lp.addRule(RelativeLayout.BELOW,mPintuItems[i - mColumn].getId());}addView(item, lp);}}交换图⽚private ImageView mFirst;private ImageView mSecond;@Overridepublic void onClick(View v) {if (isAniming)return;if (mFirst == v) {mFirst.setColorFilter(null);mFirst = null;return;}if (mFirst == null) {mFirst = (ImageView) v;mFirst.setColorFilter(Color.parseColor("#45f0f0f0"));} else {mSecond = (ImageView) v;exchangView();}}交换图⽚的⽅法exchangeView⽅法的具体实现// 交换imageprivate void exchangView() {mFirst.setColorFilter(null);String firstTag = (String) mFirst.getTag();String secondTag = (String) mSecond.getTag();String[] firstParams = firstTag.split("_");String[] secondParams = secondTag.split("_");final Bitmap firstBitmap = mItemBitmaps.get(Integer.parseInt(firstParams[0])).getBitmap();final Bitmap secondBitmap = mItemBitmaps.get(Integer.parseInt(secondParams[0])).getBitmap();//设置动画层,下⾯有具体实现setUpAnimLayout();ImageView first = new ImageView(getContext());first.setImageBitmap(firstBitmap);LayoutParams lp = new LayoutParams(mItemWidth, mItemWidth);lp.leftMargin = mFirst.getLeft() - mPadding;lp.topMargin = mFirst.getTop() - mPadding;first.setLayoutParams(lp);mAnimaLayout.addView(first);ImageView second = new ImageView(getContext());second.setImageBitmap(secondBitmap);LayoutParams lp2 = new LayoutParams(mItemWidth, mItemWidth);lp2.leftMargin = mSecond.getLeft() - mPadding;lp2.topMargin = mSecond.getTop() - mPadding;second.setLayoutParams(lp2);mAnimaLayout.addView(second);// 设置动画TranslateAnimation anim = new TranslateAnimation(0, mSecond.getLeft() - mFirst.getLeft(), 0, mSecond.getTop() - mFirst.getTop());anim.setDuration(300);anim.setFillAfter(true);first.setAnimation(anim);TranslateAnimation anim2 = new TranslateAnimation(0, mFirst.getLeft() - mSecond.getLeft(), 0, mFirst.getTop() - mSecond.getTop());anim2.setDuration(300);anim2.setFillAfter(true);second.setAnimation(anim2);anim.setAnimationListener(new AnimationListener() {@Overridepublic void onAnimationStart(Animation arg0) {mFirst.setVisibility(View.INVISIBLE);mSecond.setVisibility(View.INVISIBLE);isAniming = true;}@Overridepublic void onAnimationRepeat(Animation arg0) {}@Overridepublic void onAnimationEnd(Animation arg0) {mSecond.setImageBitmap(firstBitmap);mFirst.setImageBitmap(secondBitmap);String firstTag = (String) mFirst.getTag();String secondTag = (String) mSecond.getTag();mFirst.setTag(secondTag);mSecond.setTag(firstTag);mFirst.setVisibility(View.VISIBLE);mSecond.setVisibility(View.VISIBLE);mFirst = mSecond = null;mAnimaLayout.removeAllViews();// 每次移动完成判断是否成功checkSuccess();isAniming = false;}private void checkSuccess() {boolean isSuccess = true;for (int i = 0; i < mPintuItems.length; i++) {ImageView imageview = mPintuItems[i];String[] tag = imageview.getTag().toString().split("_");if (Integer.parseInt(tag[1]) != i) {isSuccess = false;}}if (isSuccess) {isSuccess = true;mHandler.removeMessages(TIME_CHANGED);Toast.makeText(getContext(), "level up!",Toast.LENGTH_SHORT).show();mHandler.sendEmptyMessage(NEXT_LEVEL);}}});}动画层的具体实现private void setUpAnimLayout() {if (mAnimaLayout == null) {mAnimaLayout = new RelativeLayout(getContext());addView(mAnimaLayout);}}//获取多个参数的最少值作为内边距private int min(int... params) {int min = params[0];for (int param : params) {if (param < min) {min = param;}}return min;}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
基于Android平台实现拼图小游戏
基于Android平台实现拼图⼩游戏⼀、需求描述拼图是⼀款益智类经典游戏了,本游戏学习了⼀些前辈们的经验,整体来说讲,将图⽚⽤切图⼯具进⾏切割,监听⽤户⼿指滑动事件,当⽤户对凌乱的图⽚,在⼀定的时间内拼凑恢复成原来的样⼦,则成功闯关。
根据游戏不同的关卡对图⽚进⾏动态的切割。
玩家可以在随意交换任意两张图⽚,通过遍历切割好的每块图⽚,将⽤户选中的图⽚,进⾏替换;其中主要的功能为:动态对图⽚进⾏切割成所需要的份数。
玩家任意点击的两张图⽚能够进⾏正确交换。
实现交换图⽚的动画切换效果。
实现过关逻辑。
实现游戏时间逻辑控制。
游戏结束和暂停。
⼆、主要功能分析在拼图游戏开发过程中,实现的主要的功能;提供给⽤户所使⽤,具体功能分析如下所⽰:1、编写切⽚⼯具:由于拼图游戏需要准备⼀个完整的图⽚,从直观上来看,我们不能每次都将⼀个完整的图⽚进⾏分割,如果是3*3,分成9块,4*4分成16份,这样带来的图⽚资源极⼤的混乱,不利于后期的维护,然后Andorid就提供了具体的⽅法来实现对特定图⽚的切图⼯具,通过传⼊的参数的不同,对图⽚分割成所需要的矩阵,并设置每块的宽⾼。
利⽤两个for循环进⾏切图。
并设置每块图⽚的⼤⼩位置和每块图⽚的块号下标Index。
2、⾃定义容器:⾃定义相对布局⽂件,⽤来存放切割好的图⽚,并设置图⽚之间的间隙,以及确定图⽚上下左右的关系。
以及设置图⽚与容器的内边距设置。
3、实现图⽚交换:实现⼿指的监听事件,将对选中的两张图⽚进⾏位置的变换。
4、实现交换图⽚的动画效果:构造动画层,设置动画,监听动画5、实现游戏过关逻辑:成功的判断,关卡的回调。
6、实现游戏时间逻辑:游戏时间的更新,以及Handler不断的回调,时间超时后游戏状态的处理,以及成功闯关后,游戏时间的变更。
7、游戏的结束与暂停:当⽤户返回主页⾯的时候,游戏能够暂停,当⽤户返回游戏的时候,游戏可以重新开始。
三、概要设计1、**切图⼯具类**ImagePiece和ImageSplitterUtil。
毕业设计 拼图游戏
毕业设计拼图游戏毕业设计拼图游戏在我们的日常生活中,拼图游戏是一种非常受欢迎的娱乐方式。
无论是儿童还是成年人,都能从中获得乐趣和挑战。
而对于一些计算机科学专业的学生来说,设计和开发一个拼图游戏作为毕业设计项目是一种非常有意义的选择。
拼图游戏是一种需要逻辑思维和空间想象力的游戏。
玩家需要将碎片拼接在一起,形成一个完整的图像。
这种游戏不仅能够锻炼玩家的思维能力,还能够提高他们的专注力和耐心。
因此,设计和开发一个拼图游戏可以帮助学生提高他们的编程技能,并且提供一个实践的机会,将他们在课堂上学到的知识应用到实际项目中。
在设计一个拼图游戏时,首先需要确定游戏的基本要素。
这包括游戏的界面设计、游戏的规则以及游戏的难度等。
界面设计是非常重要的,因为它直接影响到玩家的游戏体验。
一个简洁而美观的界面设计可以吸引更多的玩家,并且增加他们的参与度。
同时,游戏的规则也是非常关键的。
规则应该简单明了,容易理解,并且能够提供足够的挑战性。
最后,游戏的难度应该逐渐增加,以保持玩家的兴趣和挑战。
在实际开发过程中,学生需要运用他们所学的编程知识来实现游戏的功能。
这包括图像处理、用户交互、游戏逻辑等方面的编程。
图像处理是非常重要的,因为它涉及到将图像切割成碎片,并且在游戏中进行拼接。
用户交互是指玩家与游戏之间的交互方式,包括点击、拖拽等。
游戏逻辑是指游戏中各个元素之间的关系,包括碎片的位置、拼接的规则等。
通过将这些编程知识应用到实际项目中,学生可以加深对这些知识的理解,并且提高他们的实践能力。
除了基本功能之外,学生还可以通过添加一些额外的功能来增加游戏的乐趣和挑战。
例如,他们可以添加计时器,以记录玩家完成拼图的时间。
他们还可以添加提示功能,以帮助玩家在困难的情况下找到正确的拼接位置。
这些额外的功能可以让游戏更加丰富多样,并且提供更多的挑战和乐趣。
在开发一个拼图游戏的过程中,学生还可以学习到一些团队合作的技能。
毕业设计项目通常需要学生与其他同学合作完成,因为一个人很难完成一个复杂的项目。
andriod拼图游戏课程设计
andriod拼图游戏课程设计一、课程目标知识目标:1. 学生能理解Android平台的基本编程概念,掌握拼图游戏的基本逻辑和开发流程。
2. 学生能运用所学的编程知识,自主设计并实现一个简易的Android拼图游戏。
3. 学生了解并掌握Android开发环境的使用,理解界面布局、事件处理、数据存储等基本技术。
技能目标:1. 学生能运用Java语言编写Android应用程序,具备基本的编程能力。
2. 学生通过实际操作,掌握调试和优化Android应用的方法,提高问题解决能力。
3. 学生具备团队协作能力,能在项目开发中与团队成员有效沟通和协作。
情感态度价值观目标:1. 学生培养对编程的兴趣,激发学习计算机科学的热情,提高自主学习能力。
2. 学生通过完成拼图游戏项目,培养创新意识和实践能力,增强自信心。
3. 学生在团队协作中,学会相互尊重、关心和帮助,培养良好的团队精神和沟通能力。
课程性质:本课程为实践性较强的课程,注重培养学生的动手能力和实际操作能力。
学生特点:学生具备一定的计算机基础和编程知识,对Android开发有一定的了解。
教学要求:教师应以项目为导向,引导学生自主探究和实践,关注学生的个体差异,提高教学效果。
同时,注重培养学生的团队协作能力和创新能力。
在教学过程中,将课程目标分解为具体的学习成果,以便进行教学设计和评估。
二、教学内容1. Android开发基础:- 界面布局:线性布局、相对布局等。
- 控件使用:按钮、图片视图、文本视图等。
- 事件处理:点击事件、触摸事件等。
- 数据存储:SharedPreferences、文件存储等。
2. Java编程基础:- 数据类型、变量、运算符。
- 控制结构:条件语句、循环语句。
- 数组、字符串操作。
- 面向对象编程:类、对象、方法。
3. 拼图游戏开发:- 游戏逻辑设计:拼图规则、难度设置。
- 界面设计:游戏界面布局、图片切割与显示。
- 功能实现:随机打乱图片、滑动拼图、游戏胜利判断。
Android实现拼图游戏
Android实现拼图游戏本⽂实例为⼤家分享了Android实现拼图游戏的具体代码,供⼤家参考,具体内容如下本⼈是⽤ android studio 完成的源码package packageName;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.ViewGroup;import android.widget.Button;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.Toast;import MyImg;public class MainActivity extends AppCompatActivity {// 显⽰图⽚的宽度public static final int W = 250;// 左上边距public static final int MARGIN = 200;// 空图⽚的索引public static final int NULLINDEX = 0;private MyImg[] imgs = new MyImg[9];// 存储图⽚位置的地图private int[] map = new int[9];@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 主布局没设置啥东西setContentView(yout.activity_main);// ⽤于设置⽣成 view 对象的宽⾼youtParams params = new youtParams(youtParams.WRAP_CONTENT, youtParams.WRAP_CONTENT); initImg(params);randomMap();addImg(params);// 开始新游戏Button newBtn = new Button(this);newBtn.setText("新游戏");newBtn.setTextSize(16);newBtn.setX(40);// 添加控件要⽤的youtParams p1= new youtParams(youtParams.WRAP_CONTENT, youtParams.WRAP_CONTENT);addContentView(newBtn, p1);newBtn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {newGame();}});}// 添加图⽚到布局中并设置点击事件private void addImg(youtParams params) {for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {int index = i * 3 + j;// 计算x, y坐标int x = j * W + MARGIN;int y = i * W + MARGIN;ImageView imgView = imgs[map[index]].getImg();imgView.setX(x);imgView.setY(y);addContentView(imgView, params);imgView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {ImageView tempImg = imgs[NULLINDEX].getImg();int x = (int) v.getX();int y = (int) v.getY();// goal imageint x1 = (int) tempImg.getX();int y1 = (int) tempImg.getY();// move topif (y - y1 == W && x == x1) {top((ImageView) v);} else if (y - y1 == -W && x == x1) {down((ImageView) v);} else if (x - x1 == W && y == y1) {left((ImageView) v);} else if (x - x1 == -W && y == y1) {right((ImageView) v);}if (isWin()) {Toast.makeText(MainActivity.this, "You Win!", Toast.LENGTH_SHORT).show();}}});}}}private void newGame() {randomMap();// 设置图⽚的 x, y坐标for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {int index = i * 3 + j;int x = j * W + MARGIN;int y = i * W + MARGIN;ImageView imgView = imgs[map[index]].getImg();imgView.setX(x);imgView.setY(y);}}}private void left(ImageView img) {img.setX(img.getX() - W);imgs[NULLINDEX].getImg().setX(img.getX() + W);}private void right(ImageView img) {img.setX(img.getX() + W);imgs[NULLINDEX].getImg().setX(img.getX() - W);}private void top(ImageView img) {img.setY(img.getY() - W);imgs[NULLINDEX].getImg().setY(img.getY() + W);}private void down(ImageView img) {img.setY(img.getY() + W);imgs[NULLINDEX].getImg().setY(img.getY() - W);}private boolean isWin() {// 根据 x, y的坐标算出图⽚的位置,假如⼀⼀对应的话,那么久是赢了for (int i = 0; i < 9; i++) {ImageView img = imgs[i].getImg();int x = (int) img.getX();int y = (int) img.getY();int index = (y - MARGIN) / W * 3 + (x - MARGIN) / W;// 有⼀个没对上,就是没赢if (index != imgs[i].getType()) {return false;}}return true;}private void randomMap() {// 打乱地图的位置int a, b;for (int i = 0; i < 50; i++) {a = (int) (Math.random() * 9);b = (int) (Math.random() * 9);int t = map[a];map[a] = map[b];map[b] = t;}}// 安排图⽚数组private void initImg(youtParams params) {int[] imgId = {R.drawable.img10, R.drawable.img2, R.drawable.img3, R.drawable.img4, R.drawable.img5, R.drawable.img6, R.drawable.img7, R.drawable.img8, R.drawable.img9};for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {int index = i * 3 + j;imgs[index] = new MyImg(index);MyImg img = imgs[index];ImageView image = new ImageView(this);params.width = W;params.height = W;image.setLayoutParams(params);image.setImageResource(imgId[index]);img.setImg(image);// 让地图初始化map[index] = index;}}}}MyImg类package packageName;import android.widget.ImageView;public class MyImg {// ⽤于存储图⽚位置的索引private int type;private ImageView img;public MyImg(int type) {this.type = type;}public void setImg(ImageView img) {this.img = img;}public ImageView getImg() {return img;}// 获取图⽚索引public int getType() {return type;}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
基于Android的拼图游戏设计与实现毕设论文
基于Android的拼图游戏设计与实现毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:日期: -指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:日期:年月日导师签名:日期:年月日注意事项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
基于Android的趣味拼图的实现
基于Android的趣味拼图的实现作者:陆毅军黄俊彭巧珍来源:《商情》2020年第35期【摘要】本文基于Android操作系统,根据软件工程的设计思想,以Androidstudio等为开发工具,设计出一款能够开发青少年智力并对其进行海洋生物知识科普的拼图游戏。
本游戏包括游戏设置界面,海洋生物图片导读及选择页面,并能显示玩家的当前游戏所用时间和步数。
本软件以培养兴趣及科普知识为主。
【关键词】Android ; 拼图游戏 ;知识科普一、引言目前随着智能手机的全面深入普及,青少年也成为手机app开发的新兴对象。
对于青少年而言,寓教于乐的app非常有助于其的智力开发与兴趣培养。
实现一款海洋生物科普类的趣味拼图app便是本次的课题。
二、需求分析在这个迅猛发展的互联网时代,智能手机的普及已经涉及青少年,对此我们设想设计一款能让青少年在游戏过程中学到科普知识并且得到智力开发与兴趣培养的app。
由此,我们设计了此款趣味拼图,使青少年在游戏的过程中学习到海洋生物科普知识。
此款app面向的用户为7岁到14岁间的青少年,其基本功能:(1)能对一些海洋生物的基本图片进行浏览。
(2)展示页面根据海洋生物的栖息深度进行不同的归类。
(3)当点击对应的海洋生物的图片后,将进入新的页面,此页面将展示此海洋生物的相关科普信息,青少年可以自由浏览并进行记忆熟悉。
(4)可以根据情况进行游戏困难度的选择。
三、系统设计与实现(一)游戏设置用户通过游戏设置按钮进入后,可选择难度设置和背景音乐的设置,难度设置分为3X3、4X4、5X5等适应不同层次用户的选择,给用户带来不同的难度挑战。
背景音乐可以试听,在试听后选择自己喜欢的音乐作为背景音乐。
(二)知识展示用户在海洋生物分类中选择了自己感兴趣的生物后,点击图片即可跳转到有关该动物的科普知识展示页面,用户可以在这个页面自由浏览或者记录,了解和学习相关的知识。
(三)拼图游戏用户浏览完科普知识后可选择进入游戏,游戏环节中的图片就是我们知识展示页面中的生物图片,而用户进入游戏后图片已被智能分块,在游戏过程中用户发挥自己的智慧,通过移动方块,将智能分块并打乱的图片拼成它原来的模样即为成功,当然在游戏过程中可点击查看原图协助游戏。
基于Android系统的手机游戏设计与实现毕业论文
基于Android系统的手机游戏设计与实现毕业论文目录摘要 (I)ABSTRACT (II)第1章绪论 (5)1.1背景 (5)1.2提出问题 (5)1.3本文组织结构 (6)第2章相关技术介绍 (7)2.1J AVA (7)2.1.1 Java介绍 (7)2.1.2 Java VS C++ (7)2.1.3 开发工具 (7)2.2A NDROID平台 (8)2.2.1 Android体系构架 (9)2.2.2 Android系统核心 (10)2.3人工智能 (10)第3章系统设计 (12)3.1总体设计 (12)3.2模型建立 (13)3.3控制模块设计 (13)3.4显示模块设计 (14)3.5人工智能设计 (15)第4章系统实现 (16)4.1细化的设计描述 (16)4.1.1 游戏初始化模块 (17)4.1.2 主控制模块 (18)4.1.3 落子模块 (19)4.1.4 胜负判断模块 (20)4.2人工智能算法 (20)4.3实现效果 (21)第5章总结与展望 (23)参考文献 (24)致谢 (25)第1章绪论1.1 背景智能手机有Symbian、Windows Phone、Android、IOS、BlackBerry 10这些系统。
Android系统鹤立鸡群占据着巨大的市场份额,随着人们接触的手机时间越来越长,针对Android系统的程序和游戏层出不穷。
每个手机都有手机游戏,是人们闲暇时间的一种娱乐方式,而因为Android的巨大市场份额,Android平台下的手机游戏更是受到青睐。
手机游戏不仅操作方便,还能开发思维,让用户在休闲的同时拓展了思维增长了见识。
手机的小巧便捷,方便的特性成为我们日常生活中必备通讯工具。
拥有巨大市场空间的手机平台游戏会着智能手机的普及和应用必然会迎来新一轮的热潮。
在新一轮的热潮中,Android手机客户量大,所以手机小游戏的发展空间很可观。
1.2 提出问题五子棋对思维和协调能力有益,能使我们集中精力,对于事务的耐心也得到了提高,培养我们的逻辑思维能力,对智力以及记忆都很有帮助。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
毕业论文设计(论文)题目:基于Android 益智拼图游戏设计目录摘要........................................................... I V Abstract (V)1 绪论 (1)1.1 课题开发的背景 (1)1.2 课题意义 (1)2 Android架构与开发平台搭建 (2)2.1 Android的系统架构 (2)2.2 Window下Android开发环境的搭建 (4)3 流程介绍与概要设计 (5)3.1 游戏流程介绍 (5)3.2 系统概要设计 (6)3.2.1 界面布局模块 (6)3.2.2 难度选择模块 (6)3.2.3 图片选择模块 (7)3.2.4 步数和时间模块 (7)3.2.5 游戏实现模块 (7)4 系统详细设计与实现 (8)4.1 界面布局实现 (8)4.1.1 选择界面布局 (8)4.1.2 游戏界面布局 (9)4.2 游戏功能实现 (11)4.2.1 难度选择 (11)4.2.2 图片选择 (12)4.2.3 步数和时间设置 (13)4.2.4 拼图的实现 (14)5 系统测试 (17)5.1 Android仿真器介绍 (17)5.2 功能模块测试 (17)5.3 出现的错误及解决方案 (20)6 总结与展望 (21)参考文献 (22)附录 (23)致谢 (33)基于Android益智拼图游戏设计摘要随着移动设备的日益普及,使用Android技术开发手机软件受到越来越多人的青睐。
在此背景下,本课题开发了一款Android平台下的手机游戏——益智拼图。
本文首先对Android的研究背景,系统架构以及开发环境进行介绍,然后就玩家对游戏的需求进行一定的分析,最后运用Android技术实现拼图游戏的开发,并合理布局游戏界面,使游戏界面更加美观和人性化,实现了游戏的基本功能,最终可以让玩家享受拼图游戏的乐趣。
关键词:Android;拼图游戏;Activity;架构The development and features of AndroidAbstractKey words: Android;Jigsaw puzzle game;Activity;sturcture1 绪论1.1 课题开发的背景随着嵌入式技术的发展,手持终端设备也迅速发展起来,目前,全球手机用户数已超过了PC机用户数,其中智能手机的比例越来越高。
智能手机是指像电脑一样可以通过下载、安装软件来拓展基本功能的手机,一般具有智能手机操作系统。
相较于非智能手机,它功能更强,处理速度更快。
基于Linux的Android手机操作系统,由于具有开源、免费的特性,迅速得到广大爱好者及厂商的支持。
目前,移动应用软件中的手机游戏开发是一项非常热门的技术。
Android系统对第三方软件是开放的,这促进了第三方软件的发展。
Android系统以Linux 2.6为核心,其安全机制比较完善,增强了手机使用的安全性。
Android平台已经形成由Google牵头,OHA组织参与,系统支持商和服务供应商完善搭配的运作机制,为Android 平台的快速发展提供了坚实的基础。
由于Android构建在开源代码的框架之上,并且提供了强大的SDK库和开放的理念,所以它为广大的没有任何移动应用程序开发经验的新手开辟了一条开发完美移动应用程序的康庄大道。
而富有经验的移动开发人员现在也可以方便地扩展到Android平台上来,利用它独特的功能来改进现有产品或者开发其他新颖产品。
1.2 课题意义Android软件在一两年的时间内已经迅速发展,在各类型应用系统中都有令用户满意的成果,本课题研究的就是基于此背景下Android手机的一款益智拼图游戏。
通过该游戏的设计,将自己学到的Java,Android方面的理论知识应用于实践,提高自己的动手能力。
在设计的过程中,不断的修补知识方面的漏洞,加深自己对程序设计的理解,为将来从事软件开发事业打下基础。
2 Android架构与开发平台搭建2.1 Android的系统架构Android的系统架构和其操作系统一样,采用了分层的架构。
从图2.1中可以看出,A ndroid分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux核心层。
图2.1 Android系统架构图(1)应用程序Android会同一系列核心应用程序包一起发布,该应用程序包包括Email客户端,SMS 短消息程序,日历,地图,浏览器,联系人管理程序等。
所有的应用程序都是使用JA V A 语言编写的。
(2)应用程序框架开发人员也可以完全访问核心应用程序所使用的API框架。
该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。
同样,该应用程序重用机制也使用户可以方便的替换程序组件。
隐藏在每个应用后面的是一系列的服务和系统, 其中包括;丰富而又可扩展的视图(Views):可以用来构建应用程序,它包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons),甚至可嵌入的web浏览器。
内容提供器(Content Providers):使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。
资源管理器(Resource Manager):提供非代码资源的访问,如本地字符串,图形,和布局文件(layout files)。
通知管理器(Notification Manager):使得应用程序可以在状态栏中显示自定义的提示信息。
活动管理器(Activity Manager):用来管理应用程序生命周期并提供常用的导航回退功能。
(3) 系统运行库1) 程序库Android包含一些C/C++库,这些库能被Android系统中不同的组件使用。
它们通过Android应用程序框架为开发者提供服务。
以下是一些核心库:系统C库:一个从BSD继承来的标准C系统函数库(libc),它是专门为基于embedded linux的设备定制的。
媒体库:基于PacketVideo OpenCORE,该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。
编码格式包括MPEG4,H.264,MP3,AAC,AMR,JPG,PNG。
Surface Manager:对显示子系统的管理,并且为多个应用程序提供了2D和3D图层的无缝融合。
LibWebCore:一个最新web浏览器引擎用,支持Android浏览器和一个可嵌入的web 视图。
SGL:底层的2D图形引擎。
3D libraries:基于OpenGL ES 1.0 APIs实现;该库可以使用硬件3D加速(如果可用)或者使用高度优化的3D软加速。
FreeType:位图(bitmap)和矢量(vector)字体显示。
SQLite:一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。
2) Android运行库Android包括了一个核心库,该核心库提供了JA V A编程语言核心库的大多数功能。
每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。
Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。
Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。
同时虚拟机是基于寄存器的,所有的类都经由JA V A编译器编译,然后通过SDK的"dx"工具转化成.dex格式由虚拟机执行。
Dalvik虚拟机依赖于Linux内核的一些功能,比如线程机制和底层内存管理机制。
(4) Linux内核Android的核心系统服务依赖于Linux 2.6内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。
Linux内核也同时作为硬件和软件栈之间的抽象层。
2.2 Window下Android开发环境的搭建为了在PC主机上得到Android的开发环境,我们选择在Windows操作系统中进行对Android开发环境的搭建,具体步骤如下:(1)JDK安装首先下载JDK,按照提示安装成功后,最重要的是进行环境变量的配置,步骤如下:我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量:Java_HOME值为:C:\Program Files\Java\jdk1.6.0_20(安装JDK的目录)CLASSPATH值为:.;%Java_HOME%lib\tools.jar;%Java_HOME%\lib\dt.jar;%Java _HOME%\bin;Path值:添加C:\Program Files\Java\jdk1.6.0_20\bin;(2)Eclipse安装可下载一个绿色版的Eclipse,无需安装,和安装版一样都能为Android 开发提供功能。
(3)Android SDK安装在Android Developers下载Android-sdk_r07-windows.zip,下载完成后解压到任意路径。
运行SDK Manager.exe,出现如图以下界面,点击Available Package。
选择希望安装的SDK及其文档或者其它包,点击Installation Selected、Accept All、Install Accepted,开始下载安装所选包。
下载完成后出现如下图的所有Android-sdk_r07-windows文件夹内容;(4)ADT安装ADT实际上是一个工具,它可以连接sdk和Eclipse,帮助Eclipse找到sdk打开Eclipse界面,进入进入菜单中的“Help”->“Install New Software”,点击Add按钮弹出对话框要求输入Name和Location,完成之后,选择Window >Preferences;在左边的面板选择Android,然后在右侧点击Browse;并选中SDK路径,本机为;D:\YJSH\Android\Android -sdk_r07-windows;点击Apply、OK。
配置完成。
(5)创建A VD为使Android应用程序可以在模拟器上运行,必须创建A VD,步骤如下:在Eclipse中,选择Windows >Android SDK and A VD Manager,点击左侧面板的Virtual Devices,再右侧点击New,填入Name,选择Target的API,SD Card大小任意,Skin随便选,Hardware目前保持默认值,点击CreateA VD即可完成创建A VD。
第3章 流程介绍与概要设计3 流程介绍与概要设计3.1 游戏流程介绍根据拼图游戏的游戏规则,本设计拟出游戏的大致流程如图3.1所示: 点击“益智拼图”点击下拉列表,完成难度选择点击图片框中的一张图片点击“确定”进入选择界面进入游戏界面点击play 按钮,时间开始计时点击图块并拖动每拖一次,步数加1图片拼成原样,游戏结束已进入已进入游戏失败未进入选择界面未进入游戏界面图3.1 拼图游戏流程图3.2 系统概要设计本设计参考了拼图游戏流程图(图3.1)按照自顶向下的设计方式将拼图游戏分为以下模块进行设计,如图3.2所示:益智拼图游戏界面布局模块游戏功能模块图片选择模块游戏实现模块难度选择模块步数,时间设置模块图3.2 拼图游戏模块3.2.1 界面布局模块由于本课题的题材是一款游戏,对于游戏的界面以及一些基本控件有必要介绍一下。