安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

针对安卓游戏2048实施的设计与实现

6月2日 萌嘟嘟投稿
  安卓(Android)系统基于Linux系统,内核和驱动使用CC语言开发,设计了一个DalvikJVM作为中间层,然后在SDK层面选择Java作为开发语言,因此,开发一款安卓游戏的应用程序需要较复杂的开发流程。安卓益智类小游戏是日常生活中最耐玩的一种游戏,深受玩家喜爱,男女老少皆宜。与此同时,益智类小游戏相对于一些大型的手机网络游戏以及大型的手机单机游戏而言,具有便捷性、易开发性以及较高的创新性。本文介绍一种新型安卓手机游戏的开发。益智类游戏2048开发过程中有几个重难点:各种界面布局的正确嵌套使用,这关乎用户体验最直观感受;游戏中玩家执行各种事件后,系统需要做出的对应逻辑设计;游戏主要逻辑的实现。
  1游戏梗概
  游戏开始时,棋盘内部Gridlayout布局中随机出现2个数字,出现的数字仅可能为4和2中的一个,且4和2出现的概率分别为0。8和0。2。游戏玩家可以选择上、下、左、右4个方向移动手指从而触发卡片的移动,如果Gridlayout布局内的数字卡片出现位置移动或者位置合并,则是为有效正常移动步骤。玩家手指选择移动的方向上如果有一样的数则合并之,每次有效移动可以同时合并所有的2个数,但不能连续合并2个数,而且合并的所有数相加即为当前所得分数。玩家移动方向行或列前方有任何空白卡片则会发生位置移动。每一个有效移动步骤的进行都意味着棋盘的空位,即在无数字处随机出现一个数字(依然可能为2或4,其概率仍然为0。8和0。2)。棋盘被数字填满则无法进行有效移动,系统自动判定游戏失败即游戏结束。如若棋盘上出现2048这样的一个卡片,则为游戏取得胜利,此时游戏仍然继续运行。
  2布局设计和游戏主要设计
  2。1布局设计
  首先设计一个线性布局控件,以此控件为基础,设计一个技术支持的显示文本。与此同时,设计一个计分的文本,并设计好以上2个组件对应的宽和高。鉴于游戏主体部分是一个44的方格,所以我们采取了一个GridLayout布局来实现游戏的主要界面。
  2。2游戏主要设计
  2。2。1游戏主类GameView
  设计游戏主类GameView继承自GridLayout布局。此布局嵌套进入主布局当中,承担着游戏运行的空间,并确保不与其他文本控件的显示发生冲突。
  2。2。2触控交互设计
  相比于其他开发系统版本的2048键盘式的触控交互设计而言,安卓平台的触控交互设计是根据手势动作来判断进行的。所以这里采用一个触屏监听器,记录下用户手指按下的位置跟手指松开的位置,并比较偏移值的大小来激活上、下、左、右操作所对应的事件。2。2。3游戏卡片Card的添加设计卡片是游戏的核心,要将卡片添加到GameView中。游戏中必须保证卡片的正常工作逻辑不产生任何异常。这里卡片大小的设计要注意卡片的大小与主界面的大小关系;其次要注意卡片类的位置存放方式以及卡片类出现的随机性。逻辑以及检查结束的设计在游戏的具体实现中,需要判断玩家操作是否合法、界面是否有事件触发、是否需要添加新数字;同时从左往右依次遍历,根据获取值的情况来判断是否需要合并卡片,以及是否需要清除合并过的卡片类。游戏结束与否的判断还要考虑以下2种情况:当前所有卡片值为0时;卡片4个方向上有重复的数字时,这2种情况下游戏都是不能结束的。
  3算法设计和具体实现
  3。1算法设计
  1、卡片类的设计。
  对于手机中的卡片类大小,一般可以设计成为Absolute属性,开发的产品比较直观且能高效运行。但考虑到该游戏能适配各种机型,不能出现卡片内数字溢出等情况,需要将卡片设计成自发适应屏幕大小的类型。在卡片类的设计中应注意以下几种情况:
  为了避免界面的繁琐,当卡片中的值为0时不显示。
  为了增加卡片的区分度,位子图片颜色适当进行调节。
  主要程序如下:
  publicclassCardextendsFrameLayout{
  FrameLayout是分层布局
  publicCard(Contextc){卡片类添加的属性大小颜色
  super(c);
  labelnewTextView(getContext());
  label。setBackgroundColor(0x33fffdff);
  label。setTextSize(22);设置文字在方格的正中间
  label。setGravity(Gravity。CENTER);
  LayoutParamslpnewLayoutParams(2,
  2);设置大方框距离边缘距离为10px
  lp。setMargins(8,8,0,0);添加画板
  addView(label,lp);为其添加数据,其值为0setNum(0);}
  privateintNum0;取回当前值
  publicintgetNum()
  {returnN}设置当前值
  publicvoidsetNum(intNum)
  {
  this。NumN当卡片中值为0时则不显示当前卡片的值
  if(Num0){
  label。setText(
  }else{
  label。setText(Num
  }
  改变文字所在的卡片颜色
  switch(Num){
  case0:
  label。setBackgroundColor(0xffeee4fa);
  
  case2:
  label。setBackgroundColor(0x00000010);
  
  case4:
  label。setBackgroundColor(0xffede0d8);
  
  (此处省略8,16,32,64,128,256,512,1024,2048的语法)
  default:
  label。setBackgroundColor(0xff3c3a22);
  
  }
  }定义一个equals方法用于比较卡片中的值的对比
  publicbooleanequals(Cardc){
  returngetNum()c。getNum();
  }
  privateTextV
  }
  2、触控交互式设计。
  游戏的设计中有4种事件,分别是上、下、左、右移动。而玩家的手势却是各异,如画圈、画斜线等。如何处理好这些事件,并将其分门别类归纳好,这是基于BS架构的安卓版本需要考虑的问题。根据现有的安卓版本,本游戏采取的策略是:监听用户的按下屏幕位置坐标以及用户离开屏幕的位置坐标,取两者横纵坐标的绝对值相比较再判断大小,从而实现用户手势的监听以及对应事件的触发。
  3、分数的统计。
  分数的统计是一个繁琐而复杂的过程。有移动事件发生以后,卡片的位置会发生改变,卡片内的值也会发生改变,有些卡片还会被释放。因此应该设计一个全局变量来保存数据;其次,每个卡片类的设计中必须包含这个要发生交互的值。
  4、随机卡片的设计。
  任何一款游戏的设计都应该包含随机性。移动卡片后新卡片的产生需要通过随机种子来产生,卡片随机性的实现是一个难点,可以通过Math。random()0。124函数来实现随机性的控制。
  3。2游戏程序具体实现
  用一个GridLayout来放置所有卡片,卡片类中都有设置值及数值大小。通过addRandomNum()添加初始卡片,添加随机数之前需要清空得分。通过cardsMap〔p。x〕〔p。y〕。setNum(Math。random()0。124)确定游戏开始时2与4的出现比例。在添加数字过程中,分别根据获取值是否为0来确定将右边的值放到当前位置还是合并这2个值。当屏幕捕捉到有动作时,要添加新的随机数,然后检测游戏是否结束。触屏事件中,需要遍历X、Y轴上值的情况来判断添加值操作和合并操作。
  各函数属性设置如下:
  point:分数统计,记录本次游戏的分数;cardsMap〔x〕〔y〕:大布局下的小卡片位置;onTouch(Viewv,MotionEvente):触屏事件;addRandomNum():添加一个随机数值的初始卡片;onClickListener():事件监听器;setNum(cardsMap〔x〕〔y〕。getNum()2):设置卡片值;addScore(cardsMap〔x〕〔y〕。getNum()):添加分数;swipeLeft():向左触屏移动;swipeRight()等方法依次类推;checkComplete():检查游戏是否完全结束,是,则激活游戏结束事件;对象:GameView:游戏主类,继承自GridLayout。游戏的运行载体;Card:卡片对象,存放卡片相关的属性和方法以及相关的属性存取值方法。
  3。3测试结果
  本设计各部分代码完成后,在Android4。0模拟器和真机上进行检查调试,各模块功能正常运行。
  4结论
  本文从Java出发,以Android为载体,采用面向对象的方法,小游戏2048的开发,对游戏的界面以及逻辑的优化实现上进行了详细分析,其面向对象的逻辑思维方式,预计在未来很长的一段时间内都会是安卓游戏编程的主流思想。
投诉 评论 转载

电力企业资金管理与控制浅谈摘要:在当代社会背景下,中国的经济不断地在迅猛发展,电力企业是保障人民物质需求中的重要一环。电力企业经济效益不断扩大的同时,也在面临着管理模式转型的问题,尤其在对企业资金的管理……针对安卓游戏2048实施的设计与实现安卓(Android)系统基于Linux系统,内核和驱动使用CC语言开发,设计了一个DalvikJVM作为中间层,然后在SDK层面选择Java作为开发语言,因此,开发一款安卓游……浅谈关于国际商务谈判的跨文化交际应用要点论文文化影响着国家各个方面,在社会经济活动中占据着重要地位。随着全球一体化趋势加剧,国际贸易往来愈发频繁,这不仅是经济上的往来,更是一个文化交流过程。国际商务谈判,是指各国在国际商……推荐小论文作文300字四篇无论在学习或是工作中,大家都经常看到论文的身影吧,论文是讨论某种问题或研究某种问题的文章。还是对论文一筹莫展吗?下面是小编整理的小论文作文300字4篇,欢迎大家分享。小论文作文……提高高三数学复习效率论文数学是一门学生感觉枯燥无味的学科,但它撬起未来的杠杆,是高考成功的重要支柱,为此,不管事老师,学生,还是学生家长都十分重视这门学科。特别是高三复习阶段,老师和学生都在为提高数学……魏晋南北朝色彩研究论文摘要:魏晋南北朝时期的各种艺术、工艺品由于不同民族和国家的分立对峙,中外文化的冲撞会合,而呈现出自己的特色。本文分别通过对这个时期的陶瓷工艺品、金属工艺品、柒织工艺品、服饰、绘……中药注射剂药物不良反应原因分析及防治【摘要】归纳和总结中药注射剂药物不良反应的类型,分析药物不良反应发生的主要原因,结合临床制定预防对策。旨在加强中药注射剂的知识和临床应用,从思想上高度重视药物不良反应的发生,建……谈职高音乐与素质教育之间的联系谈职高音乐与素质教育之间的联系音乐的分类有很多种,整个地球上有着永远听不完的形形色色的音乐。但它的情感和作用是共通的,尤其对于职高的更具灵性的学生来说,音乐学习与素质教育的结合……基于高职院校数字化参考咨询服务探析摘要:在计算机技术、网络技术、移动通信技术迅速发展的影响下,传统的参考咨询服务已经不能满足现阶段高职院校读者的需要,在新技术推动下,参考咨询的服务内容及模式不断向数字化、合作化……慢性心力衰竭的中医研究进展论文慢性心力衰竭(CHF)通常指临床所称的充血性心力衰竭,是各种心脏疾病导致心功能不全的一种复杂的临床综合征。CHF是一种心室泵血能力下降,心排血量降低,不能满足肌体代谢需要的疾病……浅谈汉代公羊家对政治善的哲学思考哲学作为对存在问题的思考,在不同的文化背景下有不同的表现。在中国古代,经学的思维方式是一种独特的哲学思考,其以原道、征圣、宗经为表征,颇具特色。汉代公羊家充分运用这种思维方式来……综合创新,共创人类文化的新世纪综合创新或曰综合与创造是文化发展的规律。这是张岱年先生在三十年代初就揭示的。即综合古今中外的一切优秀文化成果,创造民族的新文化。当时先生称之为综合与创造。在尔后半个多世纪的学术……
水利工程质量管理的策略浅谈高等数学教学计策论文初中议论文800字自信就是力量教师的基础素质论文欣赏突破五笔教学传统,探寻创新教学新方法浅谈土木工程造价管理与控制WPS文档的安全性设置初中语文阅读教学的课型创新探讨论文运用多种方法突出概念教学论文论市政工程施工质量的监督管理论文新中式居住区景观设计特征分析论文一体化模式在电力施工企业中的运用

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利