python设计小游戏谁先走到17_python实现简单井字棋小游戏
时间: 2023-08-18 20:06:21 浏览: 37
以下是一个简单的井字棋小游戏的 Python 代码,玩家与电脑交替下棋,先连成一条线的玩家获胜,如果棋盘被下满了都没有连成一条线,则平局。
```python
import random
def draw_board(board):
# 打印棋盘
print(board[0] + '|' + board[1] + '|' + board[2])
print('-+-+-')
print(board[3] + '|' + board[4] + '|' + board[5])
print('-+-+-')
print(board[6] + '|' + board[7] + '|' + board[8])
def is_winner(board, player):
# 判断玩家是否获胜
return ((board[0] == player and board[1] == player and board[2] == player) or
(board[3] == player and board[4] == player and board[5] == player) or
(board[6] == player and board[7] == player and board[8] == player) or
(board[0] == player and board[3] == player and board[6] == player) or
(board[1] == player and board[4] == player and board[7] == player) or
(board[2] == player and board[5] == player and board[8] == player) or
(board[0] == player and board[4] == player and board[8] == player) or
(board[2] == player and board[4] == player and board[6] == player))
def get_computer_move(board, computer):
# 计算电脑下棋的位置
empty_spaces = []
for i in range(9):
if board[i] == ' ':
empty_spaces.append(i)
if len(empty_spaces) > 0:
for i in empty_spaces:
board_copy = board[:]
board_copy[i] = computer
if is_winner(board_copy, computer):
return i
for i in empty_spaces:
board_copy = board[:]
board_copy[i] = 'X'
if is_winner(board_copy, 'X'):
return i
return random.choice(empty_spaces)
else:
return None
def main():
board = [' '] * 9
player = 'O'
computer = 'X'
draw_board(board)
while True:
if player == 'O':
move = int(input('请输入您要下棋的位置(1-9):'))
if board[move - 1] == ' ':
board[move - 1] = player
player = 'X'
else:
move = get_computer_move(board, computer)
if move == None:
break
board[move] = computer
player = 'O'
draw_board(board)
if is_winner(board, 'O'):
print('恭喜您获得胜利!')
break
elif is_winner(board, 'X'):
print('很遗憾,您输了!')
break
elif board.count(' ') == 0:
print('平局!')
break
if __name__ == '__main__':
main()
```
玩家输入要下棋的位置,电脑则会计算最优的下棋位置,以此交替下棋,直到有一方获胜或者平局。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)