类似拼图游戏设计

客户端设计

1、如何绘制?

分上下两层,下层为最终图片,上层尺寸和下层一致,并将上层分割为 m 行 n 列的方格。

2、方格位置如何设定?

m 行 n 列的方格,设定左上角坐标为(0,0),那么最右下角坐标为( (m-1) , (n-1) )。

3、如何定义方格对象,及方格拥有什么方法和属性?

方格Pane有4个属性:

locationX,locationY,PaneState,visitor。

(locationX,locationY)组成方格位置信息;

PaneState包含3种状态,VISIBLE(0)方格可见
, INVISIBLE(1) 方格隐藏, PORTRAIT(2)其他用户点击过;

visitor,头像路径或用户信息。

Pane类还有一个setView(View view)方法,将实际对应View赋值给Pane,Pane根据自身属性,修改定制自身View。

部分Android源码如下:

public class Pane {
	private int locationX;
	private int locationY;
	private PaneState state = PaneState.INVISIBLE;
	private String visitor;
	public Pane(){}
	public Pane(int locationX,int locationY,PaneState state,String visitor){
		this.locationX = locationX;
		this.locationY = locationY;
		this.state = state;
		this.visitor = visitor;
	}
	...
	public void setView(View view){
		view.setClickable(true);
		switch (state) {
		case VISIBLE:
			view.setVisibility(View.VISIBLE);
			view.setOnClickListener(new OnClickListener() {

				@Override
				public void onClick(View v) {
					// TODO Auto-generated method stub
					v.setVisibility(View.INVISIBLE);
				}
			});
			break;
		case INVISIBLE:
			view.setVisibility(View.INVISIBLE);
			break;
		case PORTRAIT:

			break;
		default:
			break;
		}
	}
}
public enum PaneState {
	VISIBLE(0) , INVISIBLE(1) , PORTRAIT(2);
        ...
}

自定义View:

	private void init(){
		this.removeAllViews();
		for(int y=0; y<rowNum; ++y){
			TableRow row = new TableRow(context);
			row.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT, 1.0f));
			for(int x=0; x<colNum; ++x){
				items.add(new View(context));
				View button = items.get(y*rowNum + x);
				button.setBackgroundColor(Color.BLUE);
				button.setOnClickListener(new OnClickListener() {

					@Override
					public void onClick(View v) {
						// TODO Auto-generated method stub
						v.setVisibility(View.INVISIBLE);
					}
				});
				row.addView(button, new TableRow.LayoutParams (LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1.0f));
			}
			this.addView(row);
		}
	}

	public void setDataAndDraw(int rowNum,int colNum,List<Pane> paneList){
		this.rowNum = rowNum;
		this.colNum = colNum;
		setDataAndDraw(paneList);
	}

	public void setDataAndDraw(List<Pane> paneList){
		init();
		Iterator<Pane> iterator = paneList.iterator();
		while(iterator.hasNext()){
			Pane pane = iterator.next();
			int index = pane.getLocationY() * rowNum + pane.getLocationX();
			pane.setView(items.get(index));
		}
	}

4、如何使用?

仅需将数据添加给View即可,使用对外公开的setDataAndDraw()方法。

示例如下:

                List<Pane> list = new ArrayList<Pane>();
		Pane pane1 = new Pane(0,0,PaneState.valueOf(1),null);
		Pane pane2 = new Pane(1,1,PaneState.valueOf(1),null);
		Pane pane3 = new Pane(2,2,PaneState.valueOf(1),null);
		list.add(pane1);
		list.add(pane2);
		list.add(pane3);
		gridView.setDataAndDraw(list);

5、运行截图:

如上指出(0,0),(1,1),(2,2),三处方格不可见。

二、服务器端接口设计

由于功能需求还没确定,仅设计 上传和获取 某关卡 的 方格组信息json,如下:

{

"PaneList":[

{"locationX":0,"locationY":0,"PaneState":1,"visitor":""},

{"locationX":0,"locationY":0,"PaneState":1,"visitor":""},

{"locationX":0,"locationY":0,"PaneState":1,"visitor":""}

]

}

类似拼图游戏设计,布布扣,bubuko.com

时间: 2024-12-16 19:27:18

类似拼图游戏设计的相关文章

Android群英传-拼图游戏puzzle-代码设计和实现

上个周末,3个小时总体上读完了<Android群英传>,本周主要在研究代码层次的设计和实现.  编译安装在手机上,玩了几把,结合代码,一周时间才掌握了整体的思路.  大部分时间,其实花在了"重构"上.  重构的过程,就是学习和思考的过程.    本文,算是一篇学习总结,总体介绍下这款小游戏的实现思路.  后面抽空,再改造下这个游戏不合理的设计方式,即格子是N*N+1,而不是N*N个.    写到快吐了:在写过的几百篇文章里,其中有很多案例了,写得次数越多,越发现很多流程和思

Android拼图游戏的设计逻辑,从切图到交互动画,从关卡到倒计时,实例提高!

Android拼图游戏的设计逻辑,从切图到交互动画,从关卡到倒计时,实例提高! 群英传的最后一章,我大致的看了一下这个例子,发现鸿洋大神也做过,就参考两个人的设计逻辑,感觉都差不多,就这样实现起来了 一.切图工具类 我们九宫格嘛,肯定要一个切图的工具,把一个图片给切成九张,那具体是怎么实现呢?我们先写一个bean来存储一切的状态 ImagePiece package com.lgl.ninegame.utils; import android.graphics.Bitmap; /** * * C

Android 实战美女拼图游戏 你能坚持到第几关

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/40595385,本文出自:[张鸿洋的博客] 1.概述 继2048之后,今天给大家带来一个拼图游戏,当然了不是很传统那个缺一块的拼图,那游戏我不会玩~~所有我们换个方式玩拼图,怎么玩呢,把图片且成很多份,点击交换拼成一张完整的:这样关卡也很容易设计,3*3:4*4:5*5:6*6:...一直下去.... 博客产生的原因是,没事在网上逛看到一个图片切片的辅助类,类很简单,上面说了一句

Android群英传-拼图游戏puzzle-6点吐槽

一.缘由  经常写文章,混了一些C币.最近在深入学习Android应用开发,就从商城里买了一本<Android群英传>.这本书的内容,不是纯粹的入门那种,分几个章节,重点讲解Activity.动画等.最后一章是2个小游戏的实例,其中1个是拼图游戏.  认真研究了下作者的代码,有不敢苟同的地方,特意吐槽几句. 二.游戏相关资料  游戏名称:拼图.移动拼图.滑动拼图.Pullze  在搜索过程中,搜到了"华容道"和"数字推盘游戏".    数字推盘游戏(n-

一款html拼图游戏详解

本文是爱编程原创翻译,转载请看清文末的转载要求,谢谢合作! 游戏介绍 这篇文章是献给web游戏开发者用简单的开发工具开发一款游戏.此文介绍了用html.css.javascript只需简单和几个步骤开发一款2d游戏.在这里,我要呈现给大家如何创建一款拼图游戏,在这个游戏中你可以拖动小图块来拼成完整的大图. 点击这里查看游戏效果. 游戏规则 游戏规则非常简单,你只要拖动被切碎的图片块来组成完整的大图.需要用正确的方法才能最终拼成完整的图片.在游戏中拖动小图片的次数将被统计下来.所以.应该尽量用最少

程序设计 之 C#实现《拼图游戏》 (下) 原理篇

前言:在 http://www.cnblogs.com/labixiaohei/p/6698887.html 程序设计 之 C#实现<拼图游戏>(上),上传了各模块代码,而在本文中将详细剖析原理,使读者更容易理解并学习,程序有诸多问题,欢迎指出,共同学习成长! 正文: 拼图是一个非常经典的游戏,基本每个人都知道他的玩法,他的开始,运行,结束.那么,当我们想要做拼图的时候如何入手呢?答案是:从现实出发,去描述需求(尽量描述为文档),当我们拥有了全面的需求,就能够提供可靠的策略,从而在代码中实现,

第1章 游戏之乐——连连看游戏设计

连连看游戏设计 连连看是一种很受大家欢迎的小游戏.微软亚洲研究院的实习生们就曾经开发过一个类似的游戏--Microsoft Link-up.    图1-17为Microsoft Link-up的一个截图.如果用户可以把两个同样的图用线(连线拐的弯不能多于两个)连到一起,那么这两个头像就会消掉,当所有的头像全部消掉的时候,游戏成功结束.游戏头像有珍稀动物.京剧脸谱等.Microsoft Link-up还支持用户输入的图像库,微软的同事们曾经把新员工的漫画头像加到这个游戏中,让大家在游戏之余也互相

实战美女拼图游戏_Android游戏源码

今天给大家带来一个拼图游戏,当然了不是很传统那个缺一块的拼图,那游戏我不会玩~~所以我们换个方式玩拼图,怎么玩呢,把图片切成很多份,点击交换拼成一张完整的:这样关卡也很容易设计,3*3:4*4:5*5:6*6:...一直下去.... 没事在网上逛看到一个图片切片的辅助类,类很简单,上面说了一句,如果做拼图游戏的话可以用到,然后,我们就用到了~~ 下载地址:http://www.dwz.cn/zo8gL 运行图

atitit.html5 拼图游戏的解决之道.

atitit.html5 拼图游戏的解决之道. 1. 拼图游戏的操作(点击法and 拖动法) 1 1. 支持键盘上.下.左.右键移动: 1 2. 支持点击空白模块中的上下左右箭头移动: 1 3. 支持点击空白模块的临近模块移动. 1 4. 还是点击法好,兼容性好...手机and电脑 1 2. 注释:无解的问题(逆序和判别法) 2 5. 3*3的大概50%无解 2 6. Grid 旋转的问题.. 2 7. 要应用测试成功的api 2 8. 测试图片数字化,为轻松的测试.. 2 3. 能使用的 2