移动设备应用程序开发大作业电子教案_第1页
移动设备应用程序开发大作业电子教案_第2页
移动设备应用程序开发大作业电子教案_第3页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

淮阴工学院《移动设备应用程序开发》大作业系〔院〕: 计算机与软件工程学院专业:计算机科学与技术班级:计算机3132学生姓名: 王奇奇 学号:1131321206任课教师: 张海艳学年学期: 2022 ~ 2022 学年第1 学期2022 年 12 月26Android2048玩耍开发1章绪论玩耍开发背景可能正式由于如此,在2022年中,Android智能手机在全世界占据着81.5%很夸大的市场份额,一举成为使用的人数最多,市场份额占据最大的Android智能手机系统。AndroidAndroid智能手机玩耍也正在经受从简洁到简单的进化过程。从全球来看,智能移动终端的消遣效劳始终被认为是带动移动数据业务加速并快速进展的重要力气。也是作为手机消遣效劳的重要内容之一。近年来,始终伴随着全球移动网络和移动终端性能不断的提高和完善。丰富,目前手机玩耍按内容可分为:角色扮演类〔RPG、冒险类〔AVG、搏斗类〔FTG前已成为人类线上消遣生活的不行或缺的最主流的载体而存在,现代人对于移动终端的休闲消遣功能所需求越来越强大,移动终端上的玩耍或已以成为了现代人们消遣生活中不行或缺的一局部了。国内外争辩现状3发的应用。第三类应用目前跟其次类应用一样[4]10玩耍开发意义也随之传播。教育性相统一。益智类的玩耍即是需要去开动大脑去思考从而获得玩耍的成功。简洁的益智类玩耍可以使玩家在消遣中不断的开发大脑。这样一来就实现了在消遣中学习。在长时间的玩耍后就会感觉无聊,同时在熟知玩法后就会知道下一个要拼出的数字,这就缺乏奇特感,当一款玩耍缺乏了奇特和趣味时就注定失败。所以我们要2048有不同的选择。2048还有一大缺点就是当玩家拼出‘2048’时玩耍就会完毕,这样就会让玩家感到失落,所以我们要创作一个永无止境的玩耍,让玩家去不断的超越自己。2章系统的需求分析和概要设计系统需求分析系统功能需求分析当前分数和最高分数、玩耍帮助等功能。24片。当前分数和最高分数是显示此局玩家所获得的分数和历史最高的分数,假设2-12-1玩耍根本规章一张卡片合并。系统概要设计系统流程的设计2-22-2算法设计“2”或“4”2-32-3简洁卡片合成当有两张卡片一样时,且在他一样的方向有张跟它们之和的卡片,向它们可以碰撞的方向滑屏,一样的卡片会移动到无法移动的位置并生成期两倍数字的2”或“4”2-42-4简单卡片合成2-5示:2-53章系统实现开头界面的实现ZuomianActivity3-1publicclassZuomianActivityextendsActivity{protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main0);}3-1开头界面玩耍界面的实现中当前分数、最高分数、玩耍区域,MainActivity.java3-2protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}3-2主界面玩耍滑屏卡片移动的实现方法来实现卡片的移动,如图3-3所示。initGameView函数来监听玩家手指滑动的位置,先通过猎取开头坐标和完毕坐标,然后通过比较完毕坐标跟开头坐标的差值来推断玩家是怎样滑动屏幕的。推断出玩家的滑动轨迹后,通过调用swipeLeft、swipeRight、swipeUp、方法来实现卡片的移动,如图3-3所示。3-3卡片移到publicvoidinitGameView{setColumnCount(4);setOnTouchListener(newOnTouchListener{privatefloatstartX,startY,offsetX,offsetY;publicbooleanonTouch(Viewv,MotionEventevent){switch(event.getAction){caseMotionEvent.ACTION_DOWN:startX=event.getX;startY=event.getY;break;caseMotionEvent.ACTION_UP:offsetX=event.getX-startX;offsetY=event.getY-startY;if(Math.abs(offsetX)>Math.abs(offsetY)){if(offsetX<-5){swipeLeft;}elseif(offsetX>5){swipeRight;}}else{if(offsetY<-5){swipeUp;}elseif(offsetY>5){swipeDown;}}break;}returntrue;}});}privatevoidswipeLeft{booleanmerge=false;for(inty=0;y<4;y++){for(intx=0;x<4;x++){for(intx1=x+1;x1<4;x1++){if(cardsMap[x1][y].getNum>0){if(cardsMap[x][y].getNum<=0){cardsMap[x][y].setNum(cardsMap[x1][y].getNum);cardsMap[x1][y].setNum(0);x--;merge=true;}elseif(cardsMap[x][y].equals(cardsMap[x1][y])){cardsMap[x][y].setNum(cardsMap[x][y].getNum*2);cardsMap[x1][y].setNum(0);MainActivity.getMainActivity.addScore(cardsMap[x][y].getNum);merge=true;}break;}}}}if(merge){addRandomNum;checkComplete;}}privatevoidswipeRight{booleanmerge=false;for(inty=0;y<4;y++){for(intx=3;x>=0;x--){for(intx1=x-1;x1>=0;x1--){if(cardsMap[x1][y].getNum>0){if(cardsMap[x][y].getNum<=0){cardsMap[x][y].setNum(cardsMap[x1][y].getNum);cardsMap[x1][y].setNum(0);x++;merge=true;}elseif(cardsMap[x][y].equals(cardsMap[x1][y])){cardsMap[x][y].setNum(cardsMap[x][y].getNum*2);cardsMap[x1][y].setNum(0);MainActivity.getMainActivity.addScore(cardsMap[x][y].getNum);merge=true;}break;}}}}if(merge){addRandomNum;checkComplete;}}privatevoidswipeUp{booleanmerge=false;for(intx=0;x<4;x++){for(inty=0;y<4;y++){for(inty1=y+1;y1<4;y1++){if(cardsMap[x][y1].getNum>0){if(cardsMap[x][y].getNum<=0){cardsMap[x][y].setNum(cardsMap[x][y1].getNum);cardsMap[x][y1].setNum(0);y--;merge=true;}elseif(cardsMap[x][y].equals(cardsMap[x][y1])){cardsMap[x][y].setNum(cardsMap[x][y].getNum*2);cardsMap[x][y1].setNum(0);MainActivity.getMainActivity.addScore(cardsMap[x][y].getNum);merge=true;}break;}}}}if(merge){addRandomNum;checkComplete;}}privatevoidswipeDown{booleanmerge=false;for(intx=0;x<4;x++){for(inty=3;y>=0;y--){for(inty1=y-1;y1>=0;y1--){if(cardsMap[x][y1].getNum>0){if(cardsMap[x][y].getNum<=0){cardsMap[x][y].setNum(cardsMap[x][y1].getNum);cardsMap[x][y1].setNum(0);y++;merge=true;}elseif(cardsMap[x][y].equals(cardsMap[x][y1])){cardsMap[x][y].setNum(cardsMap[x][y].getNum*2);cardsMap[x][y1].setNum(0);MainActivity.getMainActivity.addScore(cardsMap[x][y].getNum);merge=true;}break;}}}}if(merge){addRandomNum;checkComplete;}}重开头玩耍功能的实现3-43-4重开头玩耍btnNewGame=(Button)findViewById(R.id.btnNewGame);btnNewGame.setOnClickListener(newView.OnClickListener{publicvoidonClick(Viewv){newAlertDialog.Builder(MainActivity.this).setTitle(“ 是否重再来!“).setNegativeButton(“取消“,newDialogInterface.OnClickListener{publicvoidonClick(DialogInterfacedialog,intwhich){}}).setPositiveButton(“确定“,newDialogInterface.OnClickListener{publicvoidonClick(DialogInterfacedialog,intwhich){if(getGameid==0)gameView.startGame;elseif(getGameid==1)gameView.startGame64;elseif(getGameid==2)gameView.startGame128;elseif(getGameid==3)gameView.startGame256;elseif(getGameid==4)gameView.startGame512;elseif(getGameid==5)gameView.startGame1024;elseif(getGameid==6)gameView.startGame2048;elseif(getGameid==7)gameView.startGame4096;elseif(getGameid==8)gameView.startGame8192;elseif(getGameid==9)gameView.startGame16384;elseif(getGameid==10)gameView.startGame32768;elseif(getGameid==11)gameView.startGame65536;}}).show;}});}触控交互设计本模块主要实现用户通过手指滑动屏幕,起始位置,获得水平或垂直方向的偏移离量,以此来推断用户的意图,主要是通过调用OnTouchListener监听器来实现的,具体代码实现如下:setOnTouchListener(newOnTouchListener{privatefloatstartHorizontal,startVertical;privatefloatshiftHorizontal,shiftVertical;publicbooleanonTouch(Viewv,MotionEventevent){//TODOAuto-generatedmethodstubswitch(event.getAction){caseMotionEvent.ACTION_DOWN:startHorizontal=event.getX;startVertical=event.getY;break;caseMotionEvent.ACTION_UP:shiftHorizontal=event.getX-startHorizontal;shiftVertical=event.getY-startVertical;

if(Math.abs(shiftHorizontal)>Math.abs(shiftVertical)){if(shiftHorizontal<-4){slipLeft;}elseif(shiftHorizontal>4){slipRight;}}else{if(shiftVertical<-4){slipUp;}elseif(shiftVertical>4){slipDown;}}break;}由于人的手指只有滑动一段距离才能说明用户的意图,不行能点一下屏幕或者略微动一下就表示滑动意图,这明显不太符合现实状况,所以要定义偏移肯定的距离才能推断用户的真正意图。规定当水平方向的偏移距离大于或者等于水平555,用户向右滑动。在玩耍中添加随机数0的文本框的数字,把每个空的文本框存储在一个空点数组中,最终91。privatevoidaddRadomNumber{emptyPoint.cle

温馨提示

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

评论

0/150

提交评论