將數據存儲在標籤中是一個壞主意。標籤和文本框只能用於用戶交互(輸入和輸出/顯示)。將數據存儲在變量,字段或屬性中。它甚至最好使用單獨的類爲您的遊戲邏輯,而不是形式的內部執行邏輯
public class Game
{
private const int InitialLifesCount = 100;
public Game()
{
EnemyLifes = InitialLifesCount;
}
public int EnemyLifes { get; set; }
public AttackEnemy()
{
EnemyLifes--;
}
}
在表單你可以寫
private _game = new Game();
在按鈕點擊:
_game.AttackEnemy();
lblTotalEnemyLifes.Text = _game.EnemyLifes.ToString();
查看data binding也是一個不錯的主意。如果在遊戲類中實現了INotifyPropertyChanged
接口並將類屬性綁定到標籤,則標籤將自動更新。
除了提高清晰度外,邏輯和I/O的分離允許您爲遊戲邏輯編寫unit tests。在單元測試中你可以寫出
[TestMethod]
public void AttackingEnemyReducesHisLifes()
{
var game = new Game();
int lifesBefore = game.EnemyLifes;
game.AttackEnemy();
Assert.AreEqual(lifesBefore - 1, game.EnemyLifes);
}
首先,減去一個負值' - ( - 1)'會增加生命。除此之外什麼是壞的? – Plutonix
數學錯誤! – agentpx