告訴學生們與玩家和計算機所做的移動有關的資訊可以儲存在名為a的3×3的陣列中。3×3陣列中的每個元素將表示戰場中的方格,如下圖所示。
a[0, 0]
a[0, 1]
a[0, 2]
a[1, 0]
a[1, 1]
a[1, 2]
a[2, 0]
a[2, 1]
a[2, 2]
對於每個陣列元素的單元格
最初,值0被儲存到所有陣列元素中。當玩家把炸彈放到單元格內時,對應於此單元格的陣列元素中的值更改為1。當計算機把炸彈埋設到單元格內時,對應於此單元格的陣列元素中的值更改為-1。
如果以下任一為true,則計算機將贏得遊戲:
n a[0,0] + a[0, 1] + a[0, 2] = -3
n a[1,0] + a[1, 1] + a[1, 2] = -3
n a[2,0] + a[2, 1] + a[2, 2] = -3
n a[0,0] + a[1, 0] + a[2, 0] = -3
n a[0,1] + a[1, 1] + a[2, 1] = -3
n a[0,2] + a[1, 2] + a[2, 2] = -3
n a[0,0] + a[1, 1] + a[2, 2] = -3
n a[0,2] + a[1, 1] + a[2, 0] = -3
如果以下任一為true,則玩家將贏得遊戲:
n a[0,0] + a[0, 1] + a[0, 2] = 3
n a[1,0] + a[1, 1] + a[1, 2] = 3
n a[2,0] + a[2, 1] + a[2, 2] = 3
n a[0,0] + a[1, 0] + a[2, 0] = 3
n a[0,1] + a[1, 1] + a[2, 1] = 3
n a[0,2] + a[1, 2] + a[2, 2] = 3
n a[0, 0]+ a[1, 1] + a[2, 2] = 3
n a[0,2] + a[1, 1] + a[2, 0] = 3
計算機將作為遊戲中的另乙個玩家。學生們需要編寫計算機動作的邏輯。計算機會在玩家贏得遊戲之前為其設立有難度的挑戰。
為計算機的移動編寫**時,必須考慮以下要點:
n 首先計算機應檢查它是否可通過將炸彈埋設到任意可用單元格內時贏得遊戲。為此您可以檢查任意行、列和對角線的單元格之和是-2。如果對於任意行、列或對角線,此條件為true,則意味著此行、列或對角線已經包含了計算機放置的兩個炸彈,還包含空白的單元格。計算機可以填滿此空白單元格贏得遊戲。
n 如果計算機通過將炸彈放到任一空白單元格內不會贏得遊戲,計算機應檢查這些,阻止玩家贏得遊戲。為此您可以檢查任意行、列和對角線的單元格之和是2。如果對於任意行、列或對角線,此條件為true,則意味著此行、列或對角線已經包含了玩家放置的兩個炸彈,還包含空白的單元格。玩家可以填滿此空白單元格贏得遊戲。因此,計算機應填滿此單元格,阻止玩家贏得遊戲。
n 如果以上兩個條件都不是true,則計算機可以隨機選擇乙個單元格並在那裡放置炸彈。
為了生成隨機數,可使用以下**:
random ran= new random();
num =ran.next(0,2); //0 is included in therange, 2 is excluded
以下是滑鐵盧戰役的最初螢幕的介面設計。
以下是遊戲板的介面設計。
以下是積分板的介面設計。
這組將用12個小時(每個學生)來完成專案。在此期間,他們需要:
n 分析用例研究並明確這些要求
n 設計遊戲的介面
n 開發遊戲所用的基本邏輯
n 實現開發的邏輯
n 開發遊戲
n 開發幫助系統並將其整合到專案中
n 打包完整的解決方案
四十四 小心使用feof
示例程式如下 main fclose fp 檔案file的內容如下 hello world first hello world second 程式的執行結果如下 the file point before fgets is 0 the file point after fgets is 18 hel...
加密函式(四十四)
下面我們來看一下最後一類函式,加密函式,這裡我們只羅列了兩個。1 md5 函式 實際上md5不能叫加密函式,更確切應該是摘要演算法,那麼具體什麼是摘要演算法,什麼是加密,大家感興趣的可以自己了解一下。下面我們簡單的演示一下,比如我們輸入select md5 admin 我們對admin進行一下加密。...
C 學習(四十四)流格式化輸入
所需標頭檔案 include 例子 cout std hex std setw 8 std setfill 0 123 格式化解釋 dec 置基數為10 相當於 d hex 置基數為16 相當於 x oct 置基數為8 相當於 o setfill c 設填充字元為c setprecision n 設...