1、与难点重点: 游戏的主类和辅助类的设计。 游戏的布局和触控的交互设计难点: 游戏逻辑的实现。教学设计1、 通过完整讲解一个2048游戏的开发,使学生了解如何实现游戏的布局,主类的设计,完成游戏逻辑的开发,触控的开发。2、 使学生在完成游戏的基本设计后,自己实现动画,界面的优化,数据的保存。教学反思第六章 GAME2048的开发一、 游戏的布局二、 实现游戏的主类在初始化一个GameView,继承GradView,并加入一个初始化游戏view的方法initGameView在layout文件中将gridLayout用自己定义的GameView来绑定注:运行一下程序,是否成功运行。三、 游戏触控的交
2、互设计在gameview中重新触控的方法,判读手指滑动的方向。在initGameView中加上setOnTouchListener四、 实现卡片类Card.java1. 定义一个Card.java 2. 添加构造方法3、定义一个num的成员变量,来显示卡片上的值4、定义一个TextView的标签label在卡片上显示文字5、在构造方法中初始化label6、在num的set方法中实现label的值显示7.写一个判断两个卡片是否相同的方法五、 在GameView中添加游戏卡片1、 计算卡片的宽度为了让卡片铺满整个gameview,要根据屏幕的大小,动态的计算每个卡片的大小在gameView中重写o
3、nSizeChanged方法:为了防止手机的旋转导致屏幕的宽高变化,先设置手机屏幕的样式为竖屏2、 增加一个addCards的方法,并在onSizeChange中并在initGameView中添加,网格每行4列运行后效果如下:3、 .设置GameView的背景色,card的背景色,card的label显示居中,label的margin在card的初始化中4、 在GameView定义一个二维数据来记录卡片的方阵并在添加卡片的方法addCards中为卡片矩阵赋值六、 在GameView中添加随机数在新建游戏时,会随机在gameView中出现两个卡片,并加上2、4两个值。2和4出现的概率大致是9:1
4、。1、为了遍历所有的空的卡片,我们在Card.java中设定当num=0是为空2、在GameView中定义一个集合来存放card的值为0的card的位置3、 在GameView中定义一个addRandomNum的方法4 在GameView中定义一个startGame的方法在onSizeChange中引入一个startGame的方法。七、 在MainActivity中实现重启游戏的按钮功能八、 实现2048的游戏逻辑重新写swipeLeft四个滑动的代码/private void swipLeft() for(int y=0;y4;y+) for(int x=0;xx+) for(int x1=
5、x+1;x10) if(cardsMapxy.getNum()=0;x-) for(int x1=x-1;x1x1-) x+;/private void swipUp() for(int y1=y+1;y1 cardsMapxy.setNum(cardsMapxy1.getNum(); cardsMapxy1.setNum(0); y-; else if(cardsMapxy.equalCard(cardsMapxy1)private void swipDown() for(int y=3;yy-) for(int y1=y-1;y1y1-) y+;九、 游戏的计分1、利用layout上的Te
6、xtView显示计分定义一个计分变量,定义一个清理计分,显示计分,增加计分的方法2、为了能在GameView类中调用这个方法,定义一个MainActivity的静态对象mainAcitivity,并定义一个get接口。为了给这个mainActivity设为当前加载的MainActivity的对象,在构造法中增加一个赋值的方法。3、在GameView中加上,一个计分的方法在每次滑动后有卡片叠加,就执行一次计分4、 在startGame中的startGame方法中增加一个计分清零代码5 在每次滑动后,如果有卡片合并或有卡片滑动,再次添加新的卡片。在每个滑动的方法中加上:如果有合并加上一十、 检查游
7、戏结束在GameView中增加一个checkOver的方法,在每次新增随机数后,都要做一次游戏结束检查。判断依据:当所以card都有数据,请每一个card的前后左右的都不相同private void gameOver() boolean over=true; ALL:y+) for (int x = 0; x 0&cardsMapxy.cardEquals(cardsMapx-1y)| (xcardsMapxy.cardEquals(cardsMapxy-1)| (ycardsMapxy.cardEquals(cardsMapxy+1) over=false; break ALL; if(over) new AlertDialog.Builder(getContext().setTitle(你好!) .setMessage(游戏结束! .setPositiveButton(重新开始, new DialogInterface.OnClickListener() Override public void onClick(DialogInterface dialogInterface, int i) startGame(); ).show();作业:完成游戏2048
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1