unity制作2048

前段时间迷上玩2048,有空就2048一下,终于皇天不负有心人啊。在经过无数次loser之后,终于赢了一把。

各人感觉这游戏做起来还是挺简单的,不过是否真如此,一句话光说不练假把式,那就练练看实际检验一番。

该游戏难点在于

1.如何让相邻的相等的数字相加

2.如何确定数字移动的方向

3.如何将移动方向上无数字的数字移动到边框

4.在随机没数字的地方产生新的数字

总体做法,是声明一个4X4的二维数组来保存数字,值为0的地方的表示没数字,值为2,4,6…的地方显示数字

这样就可以方便的判断两个相邻位置的值是否相等了,如果相等就相加,

如果不相等且为空则直接在移动方向上移动该数字(即将移动方向上的为0的值简单改为该数字即可)

至于移动方向的确定可以通过手指前后两次点击的位置的偏移量确定。

好吧,大概就这个样子。下

using UnityEngine;
using System.Collections;

//数字移动的方向
public enum Direction
{
    N,
    U,
    D,
    L,
    R,
}
public class Game2048 : MonoBehaviour
{
    //数字的位置
    private int xPos;
    private int yPos;
    //数字的尺寸
    private int xCell;
    private int yCell;

    //当前数字的坐标
    private int iCur;
    private int jCur;
    //显示结果的字符串
    private string result;
    //定义一个四乘四的二维数组保存数字
    private int[,] nums = new int[4, 4];
    //手指触摸的前一个位置
    private Vector3 prePos;
    //手机触摸的下一个位置
    private Vector3 nexPos;
    //数字移动方向
    private Direction movDir;
    //游戏是否结束
    private bool isOver;
    //是否移动数字
    private bool isMove;
    // Use this for initialization
    //初始化游戏格局
    void Start()
    {
        xPos = 0;
        yPos = 0;
        xCell = Screen.width / 4;
        yCell = xCell;

        isMove = false;
        isOver = false;
        result = "November";
        CreateOneNumber();
        CreateOneNumber();
    }

    // Update is called once per frame
    void Update()
    {
        //游戏结束
        if (isOver)
        {
            result = "YouLose";
            Time.timeScale = 0;
        }
        //检测手指划动方向确定数字移动方向
        if (Input.touchCount > 0 && Input.GetTouch(0).ph
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值