Android 2048游戏开发

根据教程写的简单的2048游戏。

极客学院教程地址:http://www.jikexueyuan.com/course/43.html

我的源代码地址:https://github.com/myCodingTrip/2048Game

项目有3个类。

Card extends FrameLayout{

private int num;

private TextView label;

public Card(Context context)

public int getNum()

public void setNum(int num)

public boolean equals(Card o)

}

自定义概念:

1 num不为0的Card称为卡片,在游戏中显示num(2^n)。

2 num为0的Card称为空卡片,0是不显示的。

3 存放Card的容器成为格子。

界面+交互

GameView extends GridLayout{

private Card[][] cardsMap = new Card[4][4];

private List<Point> emptyPoints = new ArrayList<Point>();

public GameView(Context context, AttributeSet attrs, int defStyleAttr)

public GameView(Context context)

public GameView(Context context, AttributeSet attrs)

private void initGameView()

@Override

protected void onSizeChanged(int w, int h, int oldw, int oldh)

private void addCards(int cardWidth, int cardHeight)

private void startGame()

private void addRandomNum()

private void swipeLeft()

private void swipeRight()

private void swipeUp()

private void swipeDown()

private void checkComplete()

}

public GameView(Context context, AttributeSet attrs, int defStyleAttr)

public GameView(Context context)

public GameView(Context context, AttributeSet attrs)

构造方法,调用initGameView()方法。

private void initGameView()

用于初始化游戏,通过调用setOnTouchListener并重写其中的public boolean onTouch(View v, MotionEvent event)方法调用swipeLeft()、swipeRight()、swipeUp()、swipeDown()四个方法来定义程序与用户的交互。

@Override

protected void onSizeChanged(int w, int h, int oldw, int oldh)

该方法先计算出每个小格子的边长cardWidth,然后调用addCards(cardWidth, cardWidth)、 startGame();

private void addCards(int cardWidth, int cardHeight)

通过循环调用addView(c, cardWidth, cardHeight)来添加16张空卡片

private void startGame()

用于(重新)开始游戏,首先调用MainActivity.getMainactivity().clearScore()清零分数,然后将16个Card的数字设置为0,即添加16张空卡片,然后调用2次addRandomNum()方法。

swipeLeft()、swipeRight()、swipeUp()、swipeDown()

这四个方法是游戏的主要逻辑部分,包含卡片的移动和合并的逻辑,例如向左划调用的swipeLeft()方法原理是从左向右(上下顺序随意)搜索判断是否可以移动(左边一张空卡片右边一张卡片)或者合并(存在两张num相等的卡片),通过改变16张Card的num来达到视觉上移动、合并卡片的效果,如果发生了卡片的移动或合并,则调用addRandomNum()、checkComplete()这两个方法。

private void checkComplete()

用于检查游戏是否结束,条件是16个Card的num都不为0并且无卡片合并的可能,如果结束则弹出一个系统级别的对话框,可调用startGame()重新开始游戏。

private void addRandomNum()

首先统计出所有格子中的空卡片,然后随机找出一个空卡片修改其数值(90%为2,10%为4),使其变成卡片。

MainActivity extends Activity{

private int score = 0;

private TextView tvScore;

private static MainActivity mainactivity = null;

public static MainActivity getMainactivity()

@Override

protected void onCreate(Bundle savedInstanceState)

@Override

public boolean onCreateOptionsMenu(Menu menu)

public void clearScore()

public void showScore()

public void addScore(int s)

}

public static MainActivity getMainactivity()

使得GameView可以修改MainActivity上的score

时间: 2024-10-12 12:44:19

Android 2048游戏开发的相关文章

Android开发经典书籍下载——《Android 4高级编程》《疯狂Android讲义》《Android应用开发详解(郭宏志)》《Android应用案例开发大全》《Android 3D游戏开发技术》

这是我收集的关于android开发方面的经典书籍,高清PDF电子版,可以在我的百度网盘免费下载,希望对需要的朋友有帮助. 目录: <Android 4高级编程>(附完整源代码) <疯狂Android讲义> <Android应用开发详解(郭宏志)> <Android应用案例开发大全> <Android 3D游戏开发技术> <Android内核剖析 柯元旦> <深入理解Android  卷1> <深入理解Android

cocos2d-x游戏开发实战原创视频讲座系列1之2048游戏开发

 第一讲 游戏的演示和工具介绍...1 第二讲 创建项目...2 第三讲 界面显示...3 第四讲 数字2的产生...7 第五讲 输入操作的推断...9 第六讲 输入操作的反应...13 第七讲 分数的累加.游戏结束检測...18 第八讲 界面美化...22 视持续更新中.... 视频存放地址例如以下:http://ipd.pps.tv/user/1058663622 或者:http://www.iqiyi.com/u/1058663622 持续更新中~~~~~~~~~~~~~~. 第一讲 

Android+3D游戏开发技术详解与典型案例

 内容导读 本书共分两篇,第一篇介绍了Android 3D游戏开发的基础知识,主要对OpenGL ES的相关内容进行了介绍. 章 名主 要 内 容 第1章 英雄还看今朝-Android简介本章介绍了市场上主流的手机平台,同时也分析了未来手机平台的发展趋势及Android平台的前景 第2章 数风流人物-当前流行游戏类型简介本章以分类的方式简要地介绍了当前流行的游戏的玩法,游戏的视觉效果,游戏的设计及<仙剑>等著名游戏的历史 第3章 不积跬步,无以至千里-游戏开发基础知识本章初步介绍了游戏开发的基

极客学院Android之2048游戏开发全过程

2048完整开发 课1.游戏2048玩法介绍 同一条线上的相同数字折叠 课2.创建2048游戏项目 修改布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:lay

Cocos2d-x 3.x版2048游戏开发

今天给大家介绍如何快速开发2048这样一款休闲游戏,理解整个2048游戏的开发流程,从中你将可以学习到以下内容: 2048游戏的逻辑 Cocos2d-x中上下左右手势的识别 游戏中卡片类的创建 添加卡片到游戏中 游戏中的逻辑实现 游戏中随机卡片的生成 游戏结束判断 游戏分数的添加 游戏美化 笔者的开发环境:    Cocos2d-x 3.1.1(开发引擎)    Visual Studio 2012(Win32)    Xcode 5.1(Mac系统下) 这里注明一下,本教程来自极客学院,小巫对

Android cocos2dx游戏开发——示例程序HelloCpp源码分析

本文通过分析cocos2dx提供的示例程序HelloCpp来分析cocos2dx的启动过程. 我们从HelloCpp.java开始: [java] view plaincopyprint? package org.cocos2dx.hellocpp; import org.cocos2dx.lib.Cocos2dxActivity; import android.os.Bundle; public class HelloCpp extends Cocos2dxActivity{ protecte

android 2048游戏实现

android 的2048小游戏完整实现:GridLayout布局(android 4.0及以上). 曾经做过一个2048的算法题,学了几天android,认为能够实现个安卓版的.也就动手写了个. 包括的东西: GridLayout布局 在activity中动态加入view组件 推断用户在屏幕滑动的的方向 2048算法(參考之前用C++写的,写的还算通俗易懂吧,http://blog.csdn.net/liang5630/article/details/39895087). 不多说,先上图: p

Android手机中的2048游戏Demo开发

Android中正火的2048游戏开发,赶紧开发一个自己的2048吧 1.游戏中的几个关键点 1)界面 2048游戏的操作界面就是一个4X4的方格.如下图所示: 游戏首先要绘制出该界面. @1 界面布局文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:

[Android游戏开发]八款开源 Android 游戏引擎 (巨好的资源)

初学Android游戏开发的朋友,往往会显得有些无所适从,他们常常不知道该从何处入手,每当遇到自己无法解决的难题时,又往往会一边羡慕于 iPhone下有诸如Cocos2d-iphone之类的免费游戏引擎可供使用,一边自暴自弃的抱怨Android平台游戏开发难度太高,又连个像样的游 戏引擎也没有,甚至误以为使用Java语言开发游戏是一件费力不讨好且没有出路的事情. 事实上,这种想法完全是没有必要且不符合实际的,作为能和苹果iOS分庭抗礼的Android(各种意义上),当然也会有相当数量的游戏引擎存