CocosCreator项目实战(4):生成数字块


一、找空闲位置

  1. 编写一个找ROWS * ROWS块中空闲位置的函数getEmptyLocations(),返回值为一个表示空闲位置的数组。
    getEmptyLocations() {
        let locations = [];
        for (let i = 0; i < ROWS; ++i) {
            for (let j = 0; j < ROWS; ++j) {
                if (this.blocks[i][j] == null) {
                    locations.push({ x: i, y: j });
                }
            }
        }
        return locations;
    },

二、随机生成2或4的块

  1. 首先在game.js添加常量随机数字NUMBERS数组
const NUMBERS = [2, 4];
  1. 因为在游戏开始时需要有一些随机数字块,因此在init()方法中添加addBlock()方法,并循环调用ROWS-1次。
    init() {
		...
        for (let i = 0; i < ROWS - 1; ++i) {
            this.addBlock();
        }
    },
  1. 编写addBlock()方法,先调用getEmptyLocations()找到当前所有空闲位置,然后随机选择一个位置,在该位置生成NUMBERS数组中的随机数。
    addBlock() {
        let locations = this.getEmptyLocations();
        let location = locations[Math.floor(Math.random() * locations.length)];
        let x = location.x;
        let y = location.y;
        let position = this.positions[x][y];
        let block = cc.instantiate(this.blockPrefab);
        block.width = this.blockSize;
        block.height = this.blockSize;
        this.bg.addChild(block);
        block.setPosition(position);
        block.getComponent('block').setNumber(NUMBERS[Math.floor(Math.random() * NUMBERS.length)]);
    },
  1. 预览多次可看到每次生成不同的初始数字块。

在这里插入图片描述
在这里插入图片描述

发布了93 篇原创文章 · 获赞 10 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/Fan0628/article/details/104711643