[英]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)控制台中的內容,而是查看顯示 #
的控制台中顯示的地圖。 這樣更容易。
但是,假設我是在多維數組中繪制地圖的...那么如何在控制台中打印數組?
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.