我仍然非常喜欢使用python,但我想从头开始制作我自己的游戏,我知道这是一个很好的练习。我已经将这四个游戏连接在一起,它可以在玩家之间切换并“丢弃”他们各自的作品。现在我需要一个胜利的条件,但老实说,我不知道从哪里开始。为了学习,我更喜欢一些指导而不是直接的代码,当然,任何帮助都会非常感激。谢谢。请注意,当前的while循环仅用于调试。我正在考虑将变量'winner'设置为False并执行循环'而胜利者== False:'并且让win条件将此变量设置为True。
board = [] #List for holding the board
for x in range(6):
board.append(["O"] * 7) #builds 7 x 6 board (rows x columns)
#function for printing the board
def print_board(board):
for row in board:
print " ".join(row)
print 'Welcome to Connect Four'
player_one = raw_input('Player 1. Enter your name: ')
player_two = raw_input('Player 2. Enter your name: ') #Gets players names
print '%s vs. %s' % (player_one, player_two)
print '--------------'
print print_board(board)
print 'Player 1 is Red(R) and Player 2 is Black(B)'
print 'Let\'s play!!' # Game's 'Opening'
turn = 0 #Keeps track of turn
while turn < 6: #debugging purposes
if turn % 2 == 0: #Determines whose turn it is by checking for even or odd turn
print '%s. Choose a column to drop your chip' % (player_one)
one_choice = int(raw_input('Column: ')) #Determines what column player will drop chip
#Checks for 'empty slot' from bottom up and fills it with players 'chip'
if (board[5][one_choice - 1] == 'O'):
board[5][one_choice - 1] = 'R'
print_board(board)
turn += 1
elif(board[4][one_choice - 1] == 'O'):
board[4][one_choice - 1] = 'R'
print_board(board)
turn += 1
elif(board[3][one_choice - 1] == 'O'):
board[3][one_choice - 1] = 'R'
print_board(board)
turn += 1
elif (board[2][one_choice - 1] == 'O'):
board[2][one_choice - 1] = 'R'
print_board(board)
turn += 1
elif (board[1][one_choice - 1] == 'O'):
board[1][one_choice - 1] = 'R'
print_board(board)
turn += 1
elif (board[0][one_choice - 1] == 'O'):
board[0][one_choice - 1] = 'R'
print_board(board)
turn += 1
else:
print "Column is full!!"
else:
#Same as above for player 2
print '%s. Choose a column to drop your chip' % (player_two)
one_choice = int(raw_input('Column: '))
if (board[5][one_choice - 1] == 'O'):
board[5][one_choice - 1] = 'B'
print_board(board)
turn += 1
elif(board[4][one_choice - 1] == 'O'):
board[4][one_choice - 1] = 'B'
print_board(board)
turn += 1
elif(board[3][one_choice - 1] == 'O'):
board[3][one_choice - 1] = 'B'
print_board(board)
turn += 1
elif (board[2][one_choice - 1] == 'O'):
board[2][one_choice - 1] = 'B'
print_board(board)
turn += 1
elif (board[1][one_choice - 1] == 'O'):
board[1][one_choice - 1] = 'B'
print_board(board)
turn += 1
elif (board[0][one_choice - 1] == 'O'):
board[0][one_choice - 1] = 'B'
print_board(board)
turn += 1
else:
print "Column is full!!"
#Gets me out of loop for debugging
if turn == 6:
print 'Game Over man!'
答案 0 :(得分:0)
你有一个7x6的电路板,你需要查看4个相邻或对角线空间的行是否包含相同的符号。这个7x6电路板存储在一个二维阵列中。
对于放在棋盘上的棋子,你必须做4组检查才能看出它是否是一个获奖作品:
如果我们将X和Y视为当前的电路板坐标,无论我放置哪一块,这些检查都对应于:
你应该做一个懒惰的检查,检查每个方向,一旦找到不属于你的东西就走另一条路。如果两个方向都已完成并且您的总数不是4,那么这不是获胜的向量并继续进行下一次检查。
编辑:格式和清晰度。
答案 1 :(得分:0)
这听起来像是一个不相交的集合问题,但是你的图形太小了,以至于每次像@John Rodgers谈论的那样检查所有四个方向可能更容易。虽然不相交的集合可能是一个有用的东西。如果你只想阅读它https://en.wikipedia.org/wiki/Disjoint-set_data_structure
,这是一个维基百科页面