我是歌珊学院的第一年物理专业。我应该为我的编程类创建一个最终项目。我正在考虑做游戏Battleship。我意识到我可以在网上找到完整的代码,但我真的想写自己的代码。我想出了一些我想尝试在游戏中实现的东西,以及我对程序的一般概念跑步。
我真的不知道从哪里开始。我对创建游戏所需的逻辑有一个大概的了解,我只是不知道从哪里开始并开始定义程序。 谢谢!
答案 0 :(得分:2)
您的算法看起来非常好。当您的目标是在Python中实现时,我首先创建简单的PyGame(或您选择的其他库)应用程序,它只绘制两个网格。这将有助于您调试其他功能,一旦您在控制台中看到它比阵列转储更好。
或者,您可以暂时实现基于文本模式的所有内容,稍后使用图形进行增强 - 使您的应用程序更像“查询 - 响应”,使用普通print()
打印两个网格并要求移动raw_input()
- 就这么简单。
答案 1 :(得分:1)
注意:以下基本设计概念适用于大多数棋盘游戏风格的游戏。
你需要先做出很多决定:
如果您执行最简单的操作(命令行,直接启动到游戏中),只需初始化四个矩阵,然后跳转到遵循以下方案的主循环:
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()
和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
相关的游戏状态。