重庆交通大学安卓教程第六章GAME的开发Word下载.docx
- 文档编号:22271958
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:14
- 大小:635.85KB
重庆交通大学安卓教程第六章GAME的开发Word下载.docx
《重庆交通大学安卓教程第六章GAME的开发Word下载.docx》由会员分享,可在线阅读,更多相关《重庆交通大学安卓教程第六章GAME的开发Word下载.docx(14页珍藏版)》请在冰豆网上搜索。
与难点
重点:
Ø
游戏的主类和辅助类的设计。
游戏的布局和触控的交互设计
难点:
游戏逻辑的实现。
教学设计
1、通过完整讲解一个2048游戏的开发,使学生了解如何实现游戏的布局,主类的设计,完成游戏逻辑的开发,触控的开发。
2、使学生在完成游戏的基本设计后,自己实现动画,界面的优化,数据的保存。
教学反思
第六章GAME2048的开发
一、游戏的布局
二、实现游戏的主类
在初始化一个GameView,继承GradView,并加入一个初始化游戏view的方法initGameView
在layout文件中将gridLayout用自己定义的GameView来绑定
注:
运行一下程序,是否成功运行。
三、游戏触控的交互设计
在gameview中重新触控的方法,判读手指滑动的方向。
在initGameView中加上setOnTouchListener
四、实现卡片类Card.java
1.定义一个Card.java
2.添加构造方法
3、定义一个num的成员变量,来显示卡片上的值
4、定义一个TextView的标签label在卡片上显示文字
5、在构造方法中初始化label
6、在num的set方法中实现label的值显示
7.写一个判断两个卡片是否相同的方法
五、在GameView中添加游戏卡片
1、计算卡片的宽度
为了让卡片铺满整个gameview,要根据屏幕的大小,动态的计算每个卡片的大小
在gameView中重写onSizeChanged方法:
为了防止手机的旋转导致屏幕的宽高变化,先设置手机屏幕的样式为竖屏
2、增加一个addCards的方法,并在onSizeChange中
并在initGameView中添加,网格每行4列
运行后效果如下:
3、.设置GameView的背景色,card的背景色,card的label显示居中,label的margin
在card的初始化中
4、在GameView定义一个二维数据来记录卡片的方阵
并在添加卡片的方法addCards中为卡片矩阵赋值
六、在GameView中添加随机数
在新建游戏时,会随机在gameView中出现两个卡片,并加上2、4两个值。
2和4出现的概率大致是9:
1。
1、为了遍历所有的空的卡片,我们在Card.java中设定当num=0是为空
2、在GameView中定义一个集合来存放card的值为0的card的位置
3、在GameView中定义一个addRandomNum的方法
4在GameView中定义一个startGame的方法
在onSizeChange中引入一个startGame的方法。
七、在MainActivity中实现重启游戏的按钮功能
八、实现2048的游戏逻辑
重新写swipeLeft
四个滑动的代码
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
privatevoidswipLeft(){
for(inty=0;
y<
4;
y++){
for(intx=0;
x<
x++){
for(intx1=x+1;
x1<
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--;
///重新遍历一行0202这种情况应该合并为4000
}elseif(cardsMap[x][y].equalCard(cardsMap[x1][y])){
cardsMap[x][y].setNum(cardsMap[x][y].getNum()*2);
}
break;
//有合并或移动后退出遍历重新2222变成4400
}
privatevoidswipRight(){
System.out.println("
right"
);
for(intx=3;
x>
=0;
x--){
for(intx1=x-1;
x1>
x1--){
x++;
///
privatevoidswipUp(){
for(inty1=y+1;
y1<
y1++){
if(cardsMap[x][y1].getNum()>
cardsMap[x][y].setNum(cardsMap[x][y1].getNum());
cardsMap[x][y1].setNum(0);
y--;
}elseif(cardsMap[x][y].equalCard(cardsMap[x][y1])){
privatevoidswipDown(){
for(inty=3;
y>
y--){
for(inty1=y-1;
y1>
y1--){
y++;
九、游戏的计分
1、利用layout上的TextView显示计分
定义一个计分变量,定义一个清理计分,显示计分,增加计分的方法
2、为了能在GameView类中调用这个方法,定义一个MainActivity的静态对象mainAcitivity,并定义一个get接口。
为了给这个mainActivity设为当前加载的MainActivity的对象,在构造法中增加一个赋值的方法。
3、在GameView中加上,一个计分的方法
在每次滑动后有卡片叠加,就执行一次计分
4、在startGame中的startGame方法中增加一个计分清零代码
5在每次滑动后,如果有卡片合并或有卡片滑动,再次添加新的卡片。
在每个滑动的方法中加上:
如果有合并加上
一十、检查游戏结束
在GameView中增加一个checkOver的方法,在每次新增随机数后,都要做一次游戏结束检查。
判断依据:
当所以card都有数据,请每一个card的前后左右的都不相同
privatevoidgameOver(){
booleanover=true;
ALL:
y++){
for(intx=0;
x<
4;
x++){
if(cardsMap[x][y].getNum()==0||
(x>
0&
&
cardsMap[x][y].cardEquals(cardsMap[x-1][y]))||
(x<
3&
cardsMap[x][y].cardEquals(cardsMap[x+1][y]))||
(y>
cardsMap[x][y].cardEquals(cardsMap[x][y-1]))||
(y<
cardsMap[x][y].cardEquals(cardsMap[x][y+1]))){
over=false;
breakALL;
if(over){
newAlertDialog.Builder(getContext()).setTitle("
你好!
"
)
.setMessage("
游戏结束!
.setPositiveButton("
重新开始"
newDialogInterface.OnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialogInterface,inti){
startGame();
}).show();
作业:
完成游戏2048
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 重庆 交通大学 教程 第六 GAME 开发