簡體   English   中英

在貪婪的蛇游戲中,如何找到蛇尾在二維數組中的位置?

[英]How to find where the snake tail is in a 2d array in the greedy snake game?

我正在嘗試用C ++編寫貪婪的蛇游戲。 我有一個2d數組,在這個數組中有一些以特定數字設置的位置,例如grid [3] [2] = 1; grid [3] [3] = 2; grid [2] [3] = 2; 那些地方像蛇一樣粘在一起。 當數字為1時,將在網格中顯示“ @”作為蛇的頭,當數字為2時,其將顯示“ *”作為主體。 因此,例如,如果我想讓蛇上升直到改變方向,我將嘗試使蛇保持運動。 我只是將grid [2] [2]分配為1,然后將grid [3] [2]分配為4,其余的2的地方也變為3。 然后重置那些3到2的地方; 像這樣:

void keep_moving_snake()
{
    //an example of going up
    for(int i = 0; i < 20; i++) {
        for(int j = 0; j < 20; j++) {
            if(grid[i][j] == 1) { //where the head is
                grid[i - 1][j] = 4;
                grid[i][j] = 3;
            }
            if(grid[i][j] == 2) {
                grid[i][j] = 3;
            }
        }
    }
    for(int i = 0; i < 20; i++) {
        for(int j = 0; j < 20; j++) {
            if(grid[i][j] == 4) { //set the new place as head
                grid[i][j] = 1;
            }
            if(grid[i][j] == 3) {
                grid[i][j] = 2;
            }
        }
    }
}

而且我將上面的一些代碼放入循環中,所以蛇不斷移動:

while(true) {
    keep_moving_snake();
    system("cls");
    show_grid();
    Sleep(500);
}

但是我需要找到蛇尾在哪里並將數字設置為0。否則蛇會變得越來越長。 那么我該如何解決呢? 謝謝。

我建議為頭部和尾部維護一個Point變量。 更新蛇時,請更新這些變量。 比搜索矩陣快得多。 Point結構可以像std::pair<int, int>一樣簡單

struct Point
{
  int row;
  int column;
};

Point snake_head;
Point snake_tail;

可以通過board[snake_head.row][snake_head.column]訪問蛇的頭部。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM