android宠物连连看3.1手机版游戏可以加什么功能

基于安卓的游戏连连看设计_中华文本库
基于安卓的连连看游戏设计与实现毕业设计论文 - 编号: 南阳师范学院 2015 届毕业生 毕业论文(设计) 题 目: 基于 Android 的连连看游戏设计与实现...
基于Android系统的连连看详细设计说明书 - 基于 Android 系统的连连看 详细设计说明书 引言 1.1 、编写目的 本文档用于说明本游戏开发的详细过程, 使委托方了解软件...
Android海贼王连连看源代码 - Android 海贼王连连看游戏源代码 一个海贼王连连看的安卓游戏源码 项目组织结构如图所示: layout 布局文件 main.xml &?xml ve...
本设计以基于Linux的Android开源 手机系统为平台,以Java为核心语言的应用程序。通过对Android的架构和应用开发进行初步研究, 设计出一款连连看小游戏。此游戏包括新建,...
6 基于安卓系统的趣味连连看游戏设计与实现-需求分析报告书 第一章 引言 1.1 编写目的编写本游戏设计与实现的需求分析报告, 是为了以书面形式把用户对 《基于安卓...
连连看游戏分析设计与实现 - 用Android编写的连连看游戏分析、设计与实现,软件面向对象技术。
安卓版连连看毕业设计报告_工学_高等教育_教育专区。天津大学仁爱学院计算机科学与技术系毕业实习 题 目:安卓版水果连连看 系专学 名:计算机科学与技术...
Android课程设计连连看小游戏 - 长春大学 基于 Android 系统的连连看 1、 引言 、 课程设计纸 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊...
基于android平台连连看游戏设计与实现毕业论文 - 毕业论文 题姓学专班所 目:基于 Android 平台的连连 看游戏设计与实现 名:XXXX 号:XXX 业:计算机科学与技...
毕业设计(论文) Android 连连看 毕业设计(论文)原创性声明和使用授权说明 原创性...Android连连看毕业论文 170人阅读 37页 ¥20.00
基于Android的连连看游戏......安卓上最火的连连看游戏:水果连连看Ⅱ - 少数派
请选择你要投稿的专栏
安卓上最火的连连看游戏:水果连连看Ⅱ
0}" v-cloak>
要说到移动平台上的连连看游戏,很多人首先想到的便是水果连连看,那是iOS平台上最火的休闲游戏之一,其实咱安卓也有水果连连看,做得或许没iOS版那么优秀,但是可玩性绝对不低,特别是水果连连看Ⅱ,引入了新玩法,刚出就排在GooglePlay免费排行榜前列!
1连线模式与一款老牌休闲游戏很像,但是也有些区别,如果你喜欢水果连连看Ⅱ的连线模式,不妨去试一试那个Flow Free。
2此安卓版水果连连看Ⅱ与iOS上那个不是同一个公司开发,但是个人觉得安卓版更好玩,虽然它的水果造型没有iOS版的精细。
评论(${commentLength})
请勾选举报理由
${ item.text }
0" v-cloak>
${ related.released_at * 1000 | friendlyTime }
${related.summary}
${ related.likes_count }
根据国家网信办规定,互联网账号需要实名认证。验证手机号码再进行评论或撰写文章。
点击去验证连连看的游戏界面十分简单,大致可以分为两个区域:
游戏主界面区控制按钮和数据显示区1、开发界面布局
本程序使用一个RelativeLayout作为整体的界面布局元素,界面布局上面是一个自定义组件,下面是一个水平排列的LinearLayout。
下面是本程序的布局文件:/res/layout/main.xml
&?xml version="1.0" encoding="utf-8"?&
&RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:background="@drawable/room"&
&!-- 游戏主界面的自定义组件 --&
&cn.oyp.link.view.GameView
android:id="@+id/gameView" android:layout_width="fill_parent"
android:layout_height="fill_parent" /&
&!-- 水平排列的LinearLayout --&
&LinearLayout android:layout_width="fill_parent"
android:layout_height="fill_parent" android:orientation="horizontal"
android:layout_marginTop="380px" android:background="#1e72bb"
android:gravity="center"&
&!-- 控制游戏开始的按钮,该按钮的背景图片可以根据按钮的状态改变 --&
&Button android:id="@+id/startButton" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:background="@drawable/button_selector" /&
&!-- 显示游戏剩余时间的文本框 --&
&TextView android:id="@+id/timeText" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:gravity="center"
android:textSize="20dip" android:width="150px" android:textColor="#ff9" /&
&/LinearLayout&
&/RelativeLayout&
其中指定按钮背景色使用了@drawable/button_selector,这是在res/drawable目录下配置的StateListDrawable对象,配置文件代码如下:res/drawable/button_selector.xml
&?xml version="1.0" encoding="UTF-8"?&
&selector xmlns:android="http://schemas.android.com/apk/res/android"&
&!-- 指定按钮按下时的图片 --&
&item android:state_pressed="true" android:drawable="@drawable/start_down" /&
&!-- 指定按钮松开时的图片 --&
&item android:state_pressed="false" android:drawable="@drawable/start" /&
&/selector&
2、开发游戏界面组件
本游戏采用了一个自定义View:GameView,它从View的基类派生出来,这个自定义View的功能就是根据游戏状态来描绘游戏界面上的全部方块。
为了开发这个GameView,本程序还提供了一个Piece类,一个Piece对象代表游戏界面中的一个方块,它除了封装了方块上的图片之外,还需要封装该方块代表二维数组中的那个元素,也需要封装它的左上角在游戏界面中的X、Y坐标,这X、Y坐标可以决定方块的绘制位置,GameView根据这两个坐标值绘制全部方块即可。
下面是Piece类的代码:cn\oyp\link\view\Piece.java
package cn.oyp.link.
import android.graphics.P
* 连连看游戏中的方块对象 &br/&
* 关于本代码介绍可以参考一下博客: &a href="http://blog.csdn.net/ouyang_peng"&欧阳鹏的CSDN博客&/a& &br/&
public class Piece {
* 保存方块对象的所对应的图片
private PieceImage pieceI
* 该方块的左上角的x坐标
private int beginX;
* 该方块的左上角的y座标
private int beginY;
* 该对象在Piece[][]数组中第一维的索引值
private int indexX;
* 该对象在Piece[][]数组中第二维的索引值
private int indexY;
* 设置该Piece对象在数组中的索引值
* @param indexX
该方块的左上角的x坐标
* @param indexY
该方块的左上角的y座标
public Piece(int indexX, int indexY) {
this.indexX = indexX;
this.indexY = indexY;
* 获取该Piece的中心位置
* @return 中心点的坐标对象Point
public Point getCenter() {
return new Point(getBeginX() + getPieceImage().getImage().getWidth()
/ 2, getBeginY() + getPieceImage().getImage().getHeight() / 2);
* 判断两个Piece上的图片是否相同
* @param otherPieceImage
另外的一个Piece对象
* @return 是否相同
public boolean isSameImage(Piece otherPieceImage) {
if (pieceImage == null) {
if (otherPieceImage.pieceImage != null)
// 当两个Piece封装图片资源ID相同时,即可认为这两个Piece上的图片相同。
return pieceImage.getImageId() == otherPieceImage.pieceImage
.getImageId();
* @return 该方块的左上角的X坐标
public int getBeginX() {
return beginX;
* 设置该方块的左上角的X坐标
* @param beginX
public void setBeginX(int beginX) {
this.beginX = beginX;
* @return 该方块的左上角的Y座标
public int getBeginY() {
return beginY;
* 设置该方块的左上角的Y坐标
* @param beginY
public void setBeginY(int beginY) {
this.beginY = beginY;
* @return 该对象在Piece[][]数组中第一维的索引值
public int getIndexX() {
return indexX;
* 设置该对象在Piece[][]数组中第一维的索引值
* @param indexX
public void setIndexX(int indexX) {
this.indexX = indexX;
* @return 该对象在Piece[][]数组中第二维的索引值
public int getIndexY() {
return indexY;
* 设置该对象在Piece[][]数组中第二维的索引值
* @param indexY
public void setIndexY(int indexY) {
this.indexY = indexY;
* @return 保存方块对象的所对应的图片
public PieceImage getPieceImage() {
return pieceI
* 设置保存方块对象的所对应的图片
* @param pieceImage
public void setPieceImage(PieceImage pieceImage) {
this.pieceImage = pieceI
上面Piece类中封装的PieceImage代表了该方块上的图片,它封装了两个信息:Bitmap对象和图片资源ID。其中Bitmap对象用于在游戏界面上绘制方块;而图片资源ID则表示该Piece对象的标识,当两个Piece所封装的图片资源ID相等时,即可认为这两个Piece上的图片相同。
下面是PieceImage的代码:cn\oyp\link\view\PieceImage.java
package cn.oyp.link.
import android.graphics.B
* 封装图片ID与图片本身的工具类 &br/&
* 关于本代码介绍可以参考一下博客: &a href="http://blog.csdn.net/ouyang_peng"&欧阳鹏的CSDN博客&/a& &br/&
public class PieceImage {
* 图片资源ID
private int imageId;
* 构造函数
* @param image
* @param imageId
public PieceImage(Bitmap image, int imageId) {
this.image =
this.imageId = imageId;
* @return 图片
public Bitmap getImage() {
* 设置图片
* @param image
public void setImage(Bitmap image) {
this.image =
* @return 图片ID
public int getImageId() {
return imageId;
* 设置图片ID
* @param imageId
public void setImageId(int imageId) {
this.imageId = imageId;
GameView主要就是根据游戏的状态来绘制界面上的方块,GameView继承了View组件,重写了View组件上的onDraw(Canvas canvas)方法,重写该方法主要就是绘制游戏里剩余的方块,除此之外,它还复杂绘制连接方块的连接线。GameView的代码如下:cn\oyp\link\view\GameView.java
package cn.oyp.link.
import java.util.L
import android.content.C
import android.graphics.B
import android.graphics.C
import android.graphics.C
import android.graphics.P
import android.graphics.P
import android.util.AttributeS
import android.view.V
import cn.oyp.link.board.GameS
import cn.oyp.link.utils.ImageU
import cn.oyp.link.utils.LinkI
* 连连看游戏中的游戏主界面 &br/&
* 关于本代码介绍可以参考一下博客: &a href="http://blog.csdn.net/ouyang_peng"&欧阳鹏的CSDN博客&/a& &br/&
public class GameView extends View {
* 游戏逻辑的实现类
private GameService gameS
* 保存当前已经被选中的方块
private Piece selectedP
* 连接信息对象
private LinkInfo linkI
* 画笔Paint
* 选中标识的图片对象
private Bitmap selectI
* 构造方法
* @param context
* @param attrs
public GameView(Context context, AttributeSet attrs) {
super(context, attrs);
this.paint = new Paint();
// 设置连接线的颜色
this.paint.setColor(Color.RED);
// 设置连接线的粗细
this.paint.setStrokeWidth(3);
// 初始化被选中的图片
this.selectImage = ImageUtil.getSelectImage(context);
* 设置连接信息对象
* @param linkInfo
public void setLinkInfo(LinkInfo linkInfo) {
this.linkInfo = linkI
* 设置当前选中方块
* @param piece
public void setSelectedPiece(Piece piece) {
this.selectedPiece =
* 设置游戏逻辑的实现类
* @param gameService
public void setGameService(GameService gameService) {
this.gameService = gameS
* 绘制图形的方法
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (this.gameService == null)
Piece[][] pieces = gameService.getPieces();
if (pieces != null) {
// 遍历pieces二维数组
for (int i = 0; i & pieces. i++) {
for (int j = 0; j & pieces[i]. j++) {
// 如果二维数组中该元素不为空(即有方块),将这个方块的图片画出来
if (pieces[i][j] != null) {
// 得到这个Piece对象
Piece piece = pieces[i][j];
// 根据方块左上角X、Y座标绘制方块
canvas.drawBitmap(piece.getPieceImage().getImage(),
piece.getBeginX(), piece.getBeginY(), null);
// 如果当前对象中有linkInfo对象, 即连接信息
if (this.linkInfo != null) {
// 绘制连接线
drawLine(this.linkInfo, canvas);
// 处理完后清空linkInfo对象
this.linkInfo =
// 画选中标识的图片
if (this.selectedPiece != null) {
canvas.drawBitmap(this.selectImage, this.selectedPiece.getBeginX(),
this.selectedPiece.getBeginY(), null);
* 根据LinkInfo绘制连接线的方法。
* @param linkInfo
连接信息对象
* @param canvas
private void drawLine(LinkInfo linkInfo, Canvas canvas) {
// 获取LinkInfo中封装的所有连接点
List&Point& points = linkInfo.getLinkPoints();
// 依次遍历linkInfo中的每个连接点
for (int i = 0; i & points.size() - 1; i++) {
// 获取当前连接点与下一个连接点
Point currentPoint = points.get(i);
Point nextPoint = points.get(i + 1);
// 绘制连线
canvas.drawLine(currentPoint.x, currentPoint.y, nextPoint.x,
nextPoint.y, this.paint);
// 开始游戏方法
public void startGame() {
this.gameService.start();
this.postInvalidate();
LinkInfo是一个非常简单的工具类,它用于封装两个方块之间的连接信息:其实就是封装了一个List,List里面保存了连接线所需要经过的点。两个方块之间最多只能用3条线段相连,也就是说最多只能2个拐点,加上这两个方块的中心,方块的连接信息最多只需要4个连接点。因此,LinkInfo最多需要封装4个连接点,最少需要封装2个连接点。
下面是LinkInfo的代码:cn\oyp\link\utils.LinkInfo.java
package cn.oyp.link.
import java.util.L
import java.util.ArrayL
import android.graphics.P
* 连接信息类&br/&
* 关于本代码介绍可以参考一下博客: &a href="http://blog.csdn.net/ouyang_peng"&欧阳鹏的CSDN博客&/a& &br/&
public class LinkInfo {
创建一个集合用于保存连接点
private List&Point& points = new ArrayList&Point&();
提供第一个构造器, 表示两个Point可以直接相连, 没有转折点
* @param p1
* @param p2
public LinkInfo(Point p1, Point p2) {
// 加到集合中去
points.add(p1);
points.add(p2);
提供第二个构造器, 表示三个Point可以相连, p2是p1与p3之间的转折点
* @param p1
* @param p2
* @param p3
public LinkInfo(Point p1, Point p2, Point p3) {
points.add(p1);
points.add(p2);
points.add(p3);
提供第三个构造器, 表示四个Point可以相连, p2, p3是p1与p4的转折点
* @param p1
* @param p2
* @param p3
* @param p4
public LinkInfo(Point p1, Point p2, Point p3, Point p4) {
points.add(p1);
points.add(p2);
points.add(p3);
points.add(p4);
* @return 连接集合
public List&Point& getLinkPoints() {
关于具体的实现步骤,请参考下面的链接:
==================================================================================================
作者:欧阳鹏
欢迎转载,与人分享是进步的源泉!
转载请保留原文地址:
==================================================================================================
扫码向博主提问
非学,无以致疑;非问,无以广识
擅长领域:
项目开发-疯狂连连看游戏开发
我的Android进阶之旅------&Android疯狂连连看游戏的实现之游戏效果预览(一)
疯狂连连看学习心得-基于Android Studio 2.0
没有更多推荐了,连连看 - JavaApk-安卓应用游戏APP源码下载
今天是&&日&&&&&&星期一
您还没有登录,&&&&
当前位置:
自带200关卡的麻将消消乐
动物连连看
简单连连看海贼王版
五合一连连看小游戏源码
精品游戏在线连连看全套项目
三组图标可动态调整连连看
带详细注释的水果消消看源码
JavaApk.com· 鲁ICP备号-1· Powered by · Theme by JavaApkTM
· .1132 queries in 1.572 secondsAndroid连连看游戏的实现
Android连连看游戏的实现
连连看也是我们非常熟悉的一款非常经典的小游戏。其顾名思义就是找出相关联的东西进行连接,一般是找出相同的两样东西连接。只要将相同的两张图片用三根以内的直线连在一起就可以消除,界面中所有图片消除完毕,则游戏成功。本例我们使用android来创建一个海贼王连连看游戏,具体的运行效果如图所示。
&&图 海贼王连连看
【分析】连连看游戏的最主要功能是实现两种图片相同性的判断,以及实现其消除方法。同时,我们还要设置一个时钟计时器,当计时器倒数完毕时,结束游戏。
【实现】本游戏具体的实现流程如下所示。
(1)编写布局文件main.xml,里面使用了LinearLayout布局控件进行了时钟以及界面内图片的设置。文件main.xml的主要代码如下所示:
htp://schemas.android.com/apk/res/android"
&android:orientation="vertical"
android:layout_width="fill_parent"
&android:layout_height="fill_parent"&
&http://schemas.android.com/apk/res/android"
&android:layout_width="fill_parent"&android:layout_height="wrap_content"&
&&&&android:layout_height="wrap_content"
style="?android:attr/progressBarStyleHorizontal"
&&&&android:layout_weight="9"/&
&&&&android:text="@string/remain_time"
android:layout_weight="1"/&
&&&&android:id="@+id/show_remainTime"
android:layout_weight="1"/&&
&&android:layout_width="fill_parent"
android:layout_height="fill_parent" /&
(2)创建GameView.java文件,该文件实现了连连看游戏的布局设置。该文件的主要代码如下所示。
&& public class
GameView extends View {
&public final int row = 10;
&public int[] imageType = new int[] {
R.drawable.aa, R.drawable.bb,
&&&R.drawable.cc,
R.drawable.dd, R.drawable.ee, R.drawable.ff,
&&&R.drawable.gg,
R.drawable.hh, R.drawable.ii, R.drawable.jj,
&&&R.drawable.kk,
R.drawable.ll, R.drawable.mm, R.drawable.nn,
&&&R.drawable.oo,
R.drawable.pp };
&public Bitmap[]
&public List type = new ArrayList();
&public GameView(Context context, AttributeSet
&&super(context, attrs);
&&this.setFocusable(true);
&&this.setFocusableInTouchMode(true);
&public void fillImage(Context context) {
&&int lth =
imageType.
&&image = new Bitmap[lth];
&&for (int i = 0; i &
&&&Bitmap bitmap
= Bitmap.createBitmap((int) width, (int) height,
&&&&&Bitmap.Config.ARGB_8888);
&&&Drawable
&&&Canvas canvas
= new Canvas(bitmap);
context.getResources().getDrawable(imageType[i]);
&&&drw.setBounds(1,
1, 30, 30);
&&&drw.draw(canvas);
&&&image[i] =
&public void initType() {
&&int size = (row - 2) * (col -
&&int count = size /
imageType.
&&for (int j = 0; j &
imageType. j++) {
&&&for (int i =
0; i & i++) {
&&&&type.add(imageType[j]);
&public void initGrid() {
&&Random ad = new Random();
&&for (int i = 0; i &
&&&for (int j =
0; j & j++) {
(i == 0 || i == row - 1 || j == 0 || j == col - 1) {
&&&&&grid[i][j]
(type != null && type.size() & 0) {
index = ad.nextInt(type.size());
&&&&&&grid[i][j]
= type.get(index);
&&&&&&type.remove(index);
(3)创建OnePieceGame.java文件,该文件是本游戏的核心文件,实现了连连看游戏的实际功能,该文件的主要代码如下所示:
&&& public class
OnePieceGame extends Activity {
&private ProgressB
&private TextView show_RemainT
&private CtrlV
&@Override
&public void onCreate(Bundle savedInstanceState)
&&super.onCreate(savedInstanceState);
&&setContentView(R.layout.main);
&&findViews();
&&mRedrawHandler.sleep(dormant);
&private RefreshHandler mRedrawHandler = new
RefreshHandler();
&class RefreshHandler extends Handler {
&&@Override
&&public void
handleMessage(Message msg) {
&&&if(isCancel){
&&&&run();
&&&}else{}&&&&&&
&&public void sleep(long
delayMillis) {
&&&this.removeMessages(0);//
移除信息队列中最顶部的信息(从顶部取出信息)
&&&sendMessageDelayed(obtainMessage(0),
delayMillis);// 获得顶部信息并延时发送
&private void findViews() {
&&pb = (ProgressBar)
findViewById(R.id.pb);
&&show_RemainTime = (TextView)
findViewById(R.id.show_remainTime);
&&cv = (CtrlView)
findViewById(R.id.cv);
&&pb.setMax(cv.GAMETIME);
&&pb.incrementProgressBy(-1);
&&pb.setProgress(cv.PROCESS_VALUE);
&protected void onDestroy(){
&&isCancel=
&&super.onDestroy();
&@Override
&protected void onStart(){
&&isCancel=
&&newPlay();
&&isCancel=
&&super.onStart();
&public void newPlay() {
&&cv.reset();
&&pb.setProgress(cv.GAMETIME);
&&cv.PROCESS_VALUE =
cv.GAMETIME;
&&mRedrawHandler.sleep(dormant);
&&cv.setEnabled(true);
&public AlertDialog dialogForSucceed() {
&&AlertDialog.Builder builder =
new AlertDialog.Builder(this);
&&builder.setIcon(R.drawable.icon).setMessage(R.string.succeedInfo)
&&&&.setPositiveButton(R.string.next,
DialogInterface.OnClickListener() {
&&&&&&&@Override
&&&&&&&public
void onClick(DialogInterface dialog,
&&&&&&&&&int
&&&&&&&&//
TODO Auto-generated method stub
&&&&&&&&dormant
= dormant - 300;
&&&&&&&&newPlay();
&&&&&&}).setNeutralButton(R.string.again_challenge,
DialogInterface.OnClickListener() {
&&&&&&&@Override
&&&&&&&public
void onClick(DialogInterface dialog,
&&&&&&&&&int
&&&&&&&&//
TODO Auto-generated method stub
&&&&&&&&newPlay();
&&return builder.create();
&public AlertDialog dialogForFail() {
&&AlertDialog.Builder builder =
new AlertDialog.Builder(this);
&&builder.setIcon(R.drawable.icon).setMessage(R.string.failInfo)
&&&&.setPositiveButton(R.string.again_challenge,
DialogInterface.OnClickListener() {
&&&&&&&@Override
&&&&&&&public
void onClick(DialogInterface dialog,
&&&&&&&&&int
&&&&&&&&//
TODO Auto-generated method stub
&&&&&&&&newPlay();
&&&&&&}).setNegativeButton(R.string.exit,
DialogInterface.OnClickListener() {
&&&&&&&@Override
&&&&&&&public
void onClick(DialogInterface dialog,
&&&&&&&&&int
&&&&&&&&//
TODO Auto-generated method stub
&&&&&&&&isCancel=
&&&&&&&&finish();
&&return builder.create();
关键字:Android连连看游戏的实现&&
Android&&&
连连看游戏
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 android系统下载安装 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信