我正在爲作業編寫簡單的紙牌遊戲「戰爭」,現在遊戲正常運行,我試圖讓它更加模塊化和組織化。以下是包含該程序大部分的Main()
的一部分。我應該提到,該課程正在用C#教授,但它不是C#課程。相反,我們正在學習基本邏輯和麪向對象的概念,所以我可能不會利用一些C#特性。在Main()中保持模塊性?
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。
不知道這是否真的是一個StackOverflow問題。這是一種最佳實踐問題,可以是主觀的,但往往會有共識。 – 2012-04-07 20:16:51
'catchDuplicate'是否改變'card1'和'card2'的值?如果沒有,那麼你應該改變它的簽名:'sameCard = catchDuplicate(card1,card2);' – Douglas 2012-04-07 20:17:25
@SionSheevok哦好吧,如果這應該被移動,我會非常樂意。 – nvillec 2012-04-07 20:20:39