我也来开发2048之方块设计

这次我们的任务是实现游戏面板上的一个个小方块。我们的主面板是一个GridLayout,我们把小方块一个个加到GridLayout中,就形成了我们如今的这个游戏面板。

小方块还是比較简单的,关键是,怎样做才干最有效率呢?这是我们一直考虑的,也算是职业强迫症吧,我们的小方块上事实上就是显示一个数字,所以,我们能够用一个TextView或者ImageView。这个任意了,看以后的打算。是否须要自己定义图片呀等等,我们临时就用一个TextView吧。简单。

父布局选择什么呢?事实上由于我们就一个子View,所以什么布局都一样的啦,可是,还是为了效率考虑,首选FrameLayout,这个是几大布局中最简单。效率最高的了。

ok,我们还要为这个小方块实现一些方法:

1、设置显示的数字

2、依据数字设置背景颜色

3、一系列的get、set方法。这个能够在后面程序设计的时候再做

package com.xys.game2048.bean;

import android.content.Context;
import android.graphics.Color;
import android.view.Gravity;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.TextView;

public class GameItem extends FrameLayout {

    // Item显示数字
    private int cardShowNum;
    // Item显示颜色
    private int colorShow;
    // 数字Title
    private TextView tvNum;
    // 数字Title LayoutParams
    private LayoutParams params;

    public GameItem(Context context, int cardShowNum) {
	super(context);
	this.cardShowNum = cardShowNum;
	// 初始化Item
	initCardItem();
    }

    /**
     * 初始化Item
     *
     * @param context
     * @param cardShowNum
     */
    private void initCardItem() {
	// 设置背景色
	setBackgroundColor(Color.GRAY);
	tvNum = new TextView(getContext());
	setNum(cardShowNum);
	tvNum.setTextSize(30);
	tvNum.setGravity(Gravity.CENTER);
	params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
	params.setMargins(5, 5, 5, 5);
	addView(tvNum, params);
    }

    public View getItemView() {
	return tvNum;
    }

    public int getNum() {
	return cardShowNum;
    }

    public void setNum(int num) {
	this.cardShowNum = num;
	if (num == 0) {
	    tvNum.setText("");
	} else {
	    tvNum.setText("" + num);
	}
	// 设置背景颜色
	switch (num) {
	case 0:
	    tvNum.setBackgroundColor(0x00000000);
	    break;
	case 2:
	    tvNum.setBackgroundColor(0xffeee4da);
	    break;
	case 4:
	    tvNum.setBackgroundColor(0xffede0c8);
	    break;
	case 8:
	    tvNum.setBackgroundColor(0xfff2b179);
	    break;
	case 16:
	    tvNum.setBackgroundColor(0xfff59563);
	    break;
	case 32:
	    tvNum.setBackgroundColor(0xfff67c5f);
	    break;
	case 64:
	    tvNum.setBackgroundColor(0xfff65e3b);
	    break;
	case 128:
	    tvNum.setBackgroundColor(0xffedcf72);
	    break;
	case 256:
	    tvNum.setBackgroundColor(0xffedcc61);
	    break;
	case 512:
	    tvNum.setBackgroundColor(0xffedc850);
	    break;
	case 1024:
	    tvNum.setBackgroundColor(0xffedc53f);
	    break;
	case 2048:
	    tvNum.setBackgroundColor(0xffedc22e);
	    break;
	default:
	    tvNum.setBackgroundColor(0xff3c3a32);
	    break;
	}
    }
}

以上,背景设置颜色还是自己定义图片。大家都能够自己改动啦

PS 须要源代码的请留意,完好后会发给大家

时间: 2024-08-28 07:37:33

我也来开发2048之方块设计的相关文章

过程化开发2048智力游戏WebApp

时间荏苒,唯编程与青春不可辜负,感觉自己一直没有专心去提升编程的技能,甚是惭愧!!! 周五,无意间看到一个开发2048的视频,有点兴趣就动起手来了,虽然不擅长前端开发,在此献丑,分享一下自己使用过程化开发2048的编码思考与过程. 既然要开发2048,大部分人应该都玩过,如果你有更好的建议可以给我留言O(∩_∩)O~ 目录结构 1.什么是2048? 2.玩2048技巧? 3.移动端开发注意事项? 4.游戏设计图? 5.HTML编写? 6.CSS编写 7.JavaScript游戏模型编写? 8.J

我也来开发2048之确定思路

以下内容拔自百度: 2048是比較流行的一款数字游戏.原版2048首先在github上公布,原作者是Gabriele Cirulli.它是基于<1024>和<小3传奇>的玩法开发 而成的新型数字游戏.随后2048便出现各种版本号,走各大平台.由Ketchapp公司移植到IOS的版本号最为火热,如今约有1000万下载,其名字跟 原版一模一样.衍生版中最出名的是<2048六边形>版本号,先后在全球81个国家中的board game中排进了前200.安卓版非常火爆的有<

android开发2048时候屏幕过度敏感

============问题描述============ android开发2048时候屏幕过度敏感,在屏幕滑动的时候手势敏感,轻轻滑动一次就会移动好几次触发,在里面加入 thread.wait(1000)也没有用,只是时间延长了 ============解决方案1============ 常见的处理有 1. ACTION_DOWN 的时候记录按下的坐标,并标记正在"处理中". 2. ACTION_MOVE 的时候,如果正在"处理中",则与之前按下的坐标比较,看移动

C# 开发2048小游戏

这应该是几个月前,闲的手痒,敲了一上午代码搞出来的,随之就把它丢弃了,当时让别人玩过,提过几条更改建议,但是时至今日,我也没有进行过优化和更改(本人只会作案,不会收场,嘎嘎),下面的建议要给代码爱好的童鞋完成了. 更改建议: a.当数字超过四位数时,显示的时候有部分被它的容器TextBox遮挡了,能不能把显示的数值变小点?答案是可以的.代码里有一段通过矩阵数据填充TextBox值的操作,可以在填充时,判断下数值长度,然后修改TextBox的文字大小. b.玩游戏的时候,使用方向键移动时,焦点可能

我也来开发2048之终极奥义

本次教程跟之前隔了不少时间哈,有点忘记了的建议先看看前面的熟悉下,今天我准备把这个2048给结束了,拖了这么久. 按照惯例,我们已经把准备工作都做好了,今天这一部分信息量比较大,也是整个游戏的核心所在,所以我准备分功能来讲,最后大家结合源码来看就不会感觉太吃力了. 1.初始化游戏 初始化的时候,我们要干嘛呢,首先要看配置,配置了几行,然后先画好面板,然后要给在面板上随机生成2个数字Item,这涉及到2个方法,一个是初始化面板,一个是添加随机数字 private void initGameView

数据库开发中的一些设计以及命名规范

数据库开发中的一些设计以及命名规范 2011-03-21 13:41 大白鲨来了 博客 字号:T | T 数据库的开发涉及到很多方面的内容,本文将为大家介绍一部分,希望大家能从中收获您需要的. AD:51CTO 网+首届APP创新评选大赛火热启动——超百万资源等你拿! 之前已经为大家介绍了一部分有关数据库开发过程中规范,即数据库开发规范详细介绍(一),下文将继续为大家介绍更多有关数据库开发中的规范要求. 一. 其他设计 1.避免使用触发器 触发器的功能通常可以用其他方式实现.在调试程序时触发器可

jqm选项卡开发,底部标签式设计,jqm模仿iPhone手机桌面菜单,jqm实战开发,jqm开发例子Demo

我有一个水货的上司,大家都是知道的.所以我就只能自学了,今天我给大家带来的是jQuery Mobile 模仿iphone 手机桌面的选项卡功能.比如电话,短信,浏览器,音乐的标签菜单.好吧,直接上代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>jQuery Mobile模仿iphone菜单项</title

项目开发中自定义字段设计原则

在开发系统过程中,做到自定义字段策略设置,目前这种功能是很多系统的标准配置,这样子可以简化后续增加字段的难度,并对自定义字段做管理. 自定义字段功能要注意到以下几点: 1.批量规划好要自定义字段的数据表.2.对自定义字段存放的表字典表做设计3.对自定义字段做不同的属性设计4.自定义字段的扩展设计 1.明确是哪个表需要自定义字段.如果是开发一套易用的系统,做开发的时候对用到的主表做统一的自定义字段设计.这样子方便在以后的开发应用中直接操作自定义功能就能增加字段.很多程序员在初写程序的时候,增加字段

应用开发中数据字典项设计实现方案

应用开发中数据字典项设计实现方案 在 应用开发中,总会遇到许多数据字典项,比如对象状态.对象类型等等,这些项一般都是固定的若干可选值选项,比如对象状态可能有新建.修改.删除等状态,这 些数据字典项一旦定义完毕改动的频率非常低:在应用开发中,为了处理方便,一般要对这些数据字典项值选项进行数字编码(例如: 0表示新建,1表示修改,2表示删除等),以方便应用程序中使用.而UI显示对象信息时不能显示对象状态等的编码,对于编码值设计人员知道代表什么意思,但用户就不明白了,所以需要进行编码转换,从编码转换为