Beispiel #1
0
        private void InitPictures()
        {
            if (_puzzlePicture == null)
            {
                _puzzlePicture = GetPuzzlePicture();
            }

            float w, h;

            w = gamePanel.rect.width / size;  // 512 P.width / size = 128
            h = gamePanel.rect.height / size;

            float offsetX, offsetY;

            offsetX = w / 2;    // 128/2 = 64
            offsetY = h / 2;

            puzzles      = new PuzzleSelection[size, size];
            puzzlesParts = new Rect[size, size];

            //        4x4
            //  0.3|1.3|2.3|3.3
            //  0.2|1.2|2.2|3.2
            //  0.1|1.1|2.1|3.1
            //  0.0|1.0|2.0|3.0

            Vector2 offset;
            Vector2 m_scale = new Vector2(1.0f / size, 1.0f / size);


            for (int x = 0; x < size; x++)
            {
                for (int y = 0; y < size; y++)
                {
                    PuzzleSelection newImg = _puzzlePooler.GetPooledObject();
                    newImg.gameObject.SetActive(true);  //Instantiate(puzzlePrefab);
                    newImg.transform.localPosition = new Vector2(x * w + offsetX, y * h + offsetY);

                    newImg.transform.SetParent(gamePanel, false);
                    newImg.GetComponent <RectTransform>().sizeDelta = new Vector2(w, h);
                    newImg.transform.rotation = gamePanel.rotation;
                    newImg.name = (y * size + x).ToString();
                    newImg.GetComponent <Button>().onClick.AddListener(() => { this.OnClick(newImg.name); });

                    puzzles[x, y] = newImg;
                    offset        = new Vector2(x * m_scale.x, y * m_scale.y);
                    puzzles[x, y].AssignImage(m_scale, offset);

                    puzzlesParts[x, y] = puzzles[x, y].PuzzlePart;

                    //images[x, y].CreatePuzzlePiece(size);
                }
            }
        }
Beispiel #2
0
        private void Move()
        {
            if (Time.time - _lastMove > _moveRate)
            {
                for (int i = 0; i < _grid.GetLength(0); i++)
                {
                    for (int j = 0; j < _grid.GetLength(1); j++)
                    {
                        if (_grid[i, j] > 0)
                        {
                            _grid[i, j]--;
                            if (_grid[i, j] == 0)
                            {
                                GameObject goToMove = GameObject.Find(i.ToString() + j.ToString());
                                if (goToMove != null)
                                {
                                    goToMove.SetActive(false);
                                }
                            }
                        }
                    }
                }

                _lastMove = Time.time;

                var go = _objPooler.GetPooledObject();
                go.SetActive(true);
                go.transform.position = new Vector3(_snakeX, _snakeY, 0);
                go.name = _snakeX.ToString() + _snakeY;

                SetDirection();
                VerifyNextMove();

                if (_grid[_snakeX, _snakeY] < 0)
                {
                    EatFood();
                }
                else if (_grid[_snakeX, _snakeY] > 0)
                {
                    GameOver();
                    _lost = true;
                    return;
                }

                _snakeTransform.position = new Vector3(_snakeX, _snakeY);
                _grid[_snakeX, _snakeY]  = _snakeLength;
            }
        }