簡體   English   中英

如何在C#控制台中的給定坐標中獲取字符?

[英]How do i get a character in a given coordinate in the C# console?

我試圖在C#中制作一個類似rogue的游戲,我必須制作一張小地圖,並創建一個循環,用於檢查是否按下w / s / a / d來移動播放器; 但是我在檢測牆壁上有一個問題 ; 假設我想知道在移動之前是否有右邊的牆, 我得到了玩家的位置,我檢查了該位置右側的內容,如果它是“#”,我不讓玩家移動,因為它應該是一堵牆。

但這是問題所在,在控制台中, 如何檢查坐標,例如“(15,2)”是否包含“#”字符?

有沒有更簡單的方法來檢查給定坐標是否包含該字符?

如何? 因為我嘗試過,但是無法在控制台的某個坐標下獲取字符。

就像是:

static bool wallcheck_x(int xpos) {
        xpos++;
        //Now, it should GET the char allocated in xpos++;
        if (/*char that's in xpos++ */ == '#')
        {
            return true; //it's a wall
        }
        return false; //it's not a wall
    }

你不應該那樣做。 您應該有一些映射到控制台中顯示內容的東西,我認為那是您甚至看到映射開始的方式。 玩家移動時,您應該根據自己的地圖( 而不是控制台中顯示的內容)進行檢查。

例如

如何檢查坐標,例如“(15,2)”是否包含“#”字符?

不要檢查(15,2)控制台中的內容,而是查看顯示 #的控制台中顯示的地圖。 這樣更容易。

但是,假設我是在多維數組中繪制地圖的...那么如何在控制台中打印數組?

使用Google,伙計。 這是我從這個問題中得出的結論

int rowLength = arr.GetLength(0);
int colLength = arr.GetLength(1);

for (int i = 0; i < rowLength; i++)
{
    for (int j = 0; j < colLength; j++)
    {
        Console.Write(string.Format("{0} ", arr[i, j]));
    }
    Console.Write(Environment.NewLine + Environment.NewLine);
}

這樣做是逐行遍歷數組,在行中打印每個字符。 當到達一行的末尾時,它將打印新行並開始打印新行。 您的數組可能是代表地圖的二維字符數組。 同樣,您可以通過以下方式跟蹤玩家的位置:

int playerXPos;
int playerYPos;

您需要在角色移動時更新這些內容。 因此,值得一提的是,您可以檢查玩家是否碰壁:

if (arr[playerXPos, playerYPos] == '#')
{
     // player has collided with a wall
}
else
{
     // player has NOT collided with a wall
}

盡管擁有實際的Player數據結構將更具可伸縮性,但這似乎很適合您。

在無法訪問您的任何代碼的情況下(您應該真正將其發布以獲取此類幫助),我假設您將執行以下操作:

if (map[player.X, player.Y] == '#')
{
     // player has collided with a wall
}
else
{
     // player has NOT collided with a wall
}

此代碼假定map是包含地圖的多維數組。

暫無
暫無

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

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