我正在为家庭作业编写简单的纸牌游戏“战争”,现在游戏可以运行了,我正在尝试使其更加模块化和有条理。下面是Main()
包含大部分程序的部分。我应该提一下,该课程是用 C# 教授的,但它不是 C# 课程。相反,我们正在学习基本逻辑和 OOP 概念,因此我可能不会利用某些 C# 功能。
bool sameCard = true;
while (sameCard)
{
sameCard = false;
card1.setVal(random.Next(1,14)); // set card value
val1 = determineFace(card1.getVal()); // assign 'face' cards accordingly
suit = suitArr[random.Next(0,4)]; // choose suit string from array
card1.setSuit(suit); // set card suit
card2.setVal(random.Next(1,14)); // rinse, repeat for card2...
val2 = determineFace(card2.getVal());
suit = suitArr[random.Next(0,4)];
card2.setSuit(suit);
// check if same card is drawn twice:
catchDuplicate(ref card1, ref card2, ref sameCard);
}
Console.WriteLine ("Player: {0} of {1}", val1, card1.getSuit());
Console.WriteLine ("Computer: {0} of {1}", val2, card2.getSuit());
// compare card values, display winner:
determineWinner(card1, card2);
所以这是我的问题:
- 我可以在 Main() 中使用循环并仍然认为它是模块化的吗?
- 抽卡过程是否写得好/包含正确?
- 在方法中打印消息是否被认为是不好的做法(即:)
determineWinner()
?
我只编程了两个学期,我想在这个阶段养成良好的习惯。任何输入/建议将不胜感激。
编辑:
catchDuplicate() 现在是一个布尔方法,调用如下所示:
sameCard = catchDuplicate(card1, card2);
感谢@Douglas。