2014-04-03 50 views
2

我在戈申學院一年級的物理專業。我應該爲我的編程課程創建一個最終的項目。我正在考慮做遊戲戰艦。我意識到我可以在網上找到完整的代碼,但我真的很想寫我自己的代碼。我想出了一份我想嘗試在遊戲中實現的事情列表,以及我希望如何實現該計劃的一般想法跑步。戰艦在Python

  1. 讓4個10×10格。一個存放計算機船隻的位置,一個存放玩家的船隻,另一個存放位置,跟蹤你和計算機的猜測。
  2. 通過使用格式(一,6),用戶/計算機可以猜測位置。
  3. 告訴用戶他們正在放置什麼船,它有多大。用戶給出一個星號 座標,然後給出向上,向左或向右以確定船舶位於哪個方向。這是網格之一。電網二是一個儲存的船舶網格。那 將是電腦的網格。遊戲會跟蹤你的猜測, ,並把你想念的 的圈子,x的地方,你打的和〜的是水(你沒有猜到的空間) 這是網格三,網格四是計算機的猜測
  4. 計算機隨機猜測,直到命中,然後用算法來檢查所有相鄰 空間,直到船舶沉沒。
  5. 輪流
  6. 顯示網格的三,四同步。

我真的不知道從哪裏開始,我對我的邏輯有一個大概的瞭解需要創建遊戲,我只是不知道在哪裏跳入並開始定義程序。 謝謝!

+2

你已經將你的程序劃分爲模塊。開始一次處理這些模塊 – Gogo

+0

可能我建議'pygame'。這會讓你的生活變得非常簡單。從我在「pygame」製作戰艦計劃時起,我仍然有我的計劃。 – sshashank124

回答

2

你的算法是完全正常的。當你的目標是在Python中實現時,我將開始創建簡單的PyGame(或其他你選擇的庫)應用程序,它只繪製兩個網格。這將有助於您調試其他功能,一旦您看到它比控制檯中的陣列轉儲更好。

或者,你可以實現基於只是現在一切文本模式,後來隨着圖形增強它 - 讓你的應用更像是「詢問 - 應答」,印花兩大電網與普通print()並要求招用raw_input() - 即簡單。

1

注:以下基本的設計理念,可用於大多數板遊戲風格的遊戲工作。

你需要做出很多決定第一:

  • 如果它在命令行中運行(簡單),有一個GUI工具包,或作爲OpenGL應用程序?
  • 它應該有一個「遊戲大廳」,讓開始一個新遊戲,還是應該乾脆以後直接啓動進入遊戲,並退出?

如果你做一個最簡單的(命令行,直接啓動進入遊戲),簡單地初始化你的四個矩陣,然後跳進遵循以下方案中的主循環:

initialize_gamestate() 

while True: 
    print_game() 
    input = player_input() 
    game_logic(0, input) 
    input = computer_AI() 
    game_logic(1, input) 

game_logic()計算由玩家號碼/ input引起的更改,並相應地更新您的四個矩陣(遊戲狀態)。然後它會檢查一個玩家是否贏了,如果是的話,停止主循環。

print_game()輸出當前的遊戲狀態。

computer_AI() and player_input()返回玩家/ AI選擇的座標。 computer_AI()試圖通過查看將提供給玩家1的信息來智能地確定下一個行動路線。player_input()詢問玩家該做什麼。開始時,只需讓你的電腦AI返回隨機座標,並在稍後改進。

作爲一個更先進的理念,可以讓玩家動態的數量和類型:

players = [ 
    ("mike", player_input), 
    ("vladimir", computer_AI_hard) 
] 

initialize_gamestate(len(players)) 

while True: 
    for number, (name, input_function) in enumerate(players): 
     print(name + "'s turn") 
     input = input_function(number) 
     game_logic(number, input) 
在這種情況下

,player_input將打印了比賽狀態,是有關球員number