簡體   English   中英

C#控制台沖突

[英]C# Console Collision

目前,我正在制作主機游戲(類似胭脂),並且需要一些有關碰撞事件的建議。 我需要告訴玩家(@)旁邊是否有一堵牆(▒),是否不允許玩家朝該方向移動。 是否有人對我如何使用C#中的控制台有任何想法?

如果需要,我可以提供一些代碼。

兩種方式:

  • 將所有牆及其位置固定在HashSet或類似物中。
  • 檢查玩家想要走的方向,然后檢查是否有牆。

我不明白為什么這么難,也許你可以解釋一下;)

首先-我對控制台游戲的經驗為零,但是在我看來,您應該擁有一個包含用戶所在“地圖”的數據模型,並在更新UI(控制台)之前在數據模型中進行檢查

有多種處理方法。 我希望您有一個表示游戲地圖的二維數組。 一種簡單的方法是添加一個CheckMove方法,該方法可驗證嘗試的移動。 如果無效,則不執行移動。 這是一種偽代碼示例。

public bool CheckMove(int newY, int newX) {
    if (grid[newY][newX] == WALL)
        return false;
    if (newY < 0 || newY > Y_MAX || newX < 0 || newX > X_MAX)
        return false;
    return true;
}

public void Move(int dir) {
    // calc new x & y

    if (!CheckMove(newY, newX)) return;

    // else do the move
}

我認為是否編寫控制台應用程序都沒有關系。 因為View不是檢測沖突的目的。 這是您的游戲模型的目的。 模型僅顯示在視圖上。 內部壁結構甚至可以描述為二維陣列。 當前玩家坐標也存儲在模型中。 因此,檢測將某些位置移動的可能性如下所示:

public void IsPossibleMoveTo(int x, int y)
{
    return mazeArray[x, y] == null;
}

暫無
暫無

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

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