我一直在研究一个实现连接4游戏的程序,我碰到了一个障碍。这里是我的输出:Python:连接四个轮流轮流
>>> ================================ RESTART ================================
>>>
Player 1 please pick a column: 5
-----------------------------
| 0 | 1 | 2 | 3 | 4 | 5 | 6 |
-----------------------------
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | x | |
-----------------------------
Player 2 please pick a column: 6
-----------------------------
| 0 | 1 | 2 | 3 | 4 | 5 | 6 |
-----------------------------
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | o |
-----------------------------
所以基本上板不是“更新”交替轮流当 本质上我的代码应该结束这样看:
-----------------------------
| 0 | 1 | 2 | 3 | 4 | 5 | 6 |
-----------------------------
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | x | o |
-----------------------------
我也不太知道我必须要做的,让董事会更新得当。我已经尝试了打印功能,但输出结果比以前变得更糟。这里是我的代码:
从播放器导入*
def play_game(board, player1,player2):
b = ConnectFour()
f = Human(1)
g = Human(2)
while True:
f.play_turn(1)
if b.is_game_over() == None:
g.play_turn(2)
if b.is_game_over() == None:
pass
else:
print "Player 2 wins"
break
else:
print "Player 1 wins"
break
基本上是:玩家1次,然后我们检查,如果有一个赢家,如果不是球员两部戏,等等。这需要一个单独的课程:
class Human(Player):
def play_turn(self,board):
super(Human, self).play_turn(board)
b = ConnectFour()
x = raw_input("Player %s please pick a column: " % self.playernum)
b.play_turn(self.playernum, int(x))
b.print_board()
任何想法,输入或建议将不胜感激!
看来你的代码是不完整的。它是从早期版本粘贴的吗? 特别是,董事会对象的通过不明确。 'play_game'和'play_turn'需要一个电路板参数,但它没有通过,然后他们使用'b = ConnectFour()',这是没有显示。 请详细说明。 – yoniLavi
它看起来像你创造了一个新的'ConnectFour'转向。你不应该只在整个游戏中创建一个吗? – ApproachingDarknessFish