1.面向对象概述:
五子棋游戏:
(一)代码如下:
import os
# 游戏配置
BOARD_SIZE = 15 # 15x15棋盘(标准五子棋)
EMPTY = '+' # 空位置字符
BLACK = '●' # 黑子
WHITE = '○' # 白子
def clear_screen():
"""清空控制台(跨平台)"""
os.system('cls' if os.name == 'nt' else 'clear')
def init_board():
"""初始化棋盘:二维列表,存储每个位置的棋子(EMPTY/BLACK/WHITE)"""
return [[EMPTY for _ in range(BOARD_SIZE)] for _ in range(BOARD_SIZE)]
def print_board(board):
"""打印棋盘(带行列号,方便输入)"""
clear_screen()
# 打印列号(0~14)
print(' ', end='')
for col in range(BOARD_SIZE):
print(f'{col:2}', end=' ')
print('\n')
# 打印行号+每行棋子
for row in range(BOARD_SIZE):
print(f'{row:2} ', end='')
for col in range(BOARD_SIZE):
print(board[row][col], end=' ')
print()
print()
def is_valid_pos(board, row, col):
"""判断落子位置是否合法:在棋盘内且为空"""
return 0 <= row < BOARD_SIZE and 0 <= col < BOARD_SIZE and board[row][col] == EMPTY
def is_win(board, row, col, color):
"""判断当前落子是否获胜(五子连珠)"""
# 四个方向:水平、垂直、正对角线、反对角线
directions = [
(0, 1), # 左右(水平)
(1, 0), # 上下(垂直)
(1, 1), # 右下-左上(正对角线)
(1, -1) # 左下-右上(反对角线)
]
for dx, dy in directions:
count = 1 # 当前落子算1个
# 正向遍历(如右、下、右下、左下)
x, y = row + dx, col + dy
while 0 <= x < BOARD_SIZE and 0 <= y < BOARD_SIZE and board[x][y] == color:
count += 1
x += dx
y += dy
# 反向遍历(如左、上、左上、右上)
x, y = row - dx, col - dy
while 0 <= x < BOARD_SIZE and 0 <= y < BOARD_SIZE and board[x][y] == color:
count += 1
x -= dx
y -= dy
# 五子连珠则获胜
if count >= 5:
return True
return False
def get_input(player):
"""获取玩家输入的落子位置(行 列)"""
while True:
try:
pos = input(f'{player}方落子(输入 行 列,用空格分隔,如:7 7):')
row, col = map(int, pos.split())
return row, col
except ValueError:
print('输入错误!请输入两个数字,用空格分隔(如:7 7)。')
def main():
"""主游戏流程"""
board = init_board()
current_player = BLACK # 黑方先下
game_over = False
# 游戏主循环
while not game_over:
print_board(board)
# 获取合法落子位置
while True:
row, col = get_input('黑' if current_player == BLACK else '白')
if is_valid_pos(board, row, col):
break
print(f'位置({row},{col})已被占用或超出棋盘!请重新输入。')
# 落子
board[row][col] = current_player
# 判断是否获胜
if is_win(board, row, col, current_player):
print_board(board)
print(f'{"黑" if current_player == BLACK else "白"}方获胜!')
game_over = True
else:
# 切换玩家
current_player = WHITE if current_player == BLACK else BLACK
# 游戏结束后询问是否重玩
while True:
choice = input('是否重新开始?(y/n):')
if choice.lower() == 'y':
main()
elif choice.lower() == 'n':
print('游戏结束!')
break
else:
print('请输入y或n!')
if __name__ == '__main__':
print('五子棋(控制台版)')
print(f'棋盘大小:{BOARD_SIZE}x{BOARD_SIZE}')
print('操作说明:输入行号和列号(如7 7),按回车落子\n')
input('按回车开始游戏...')
main()
(二)运行结果如下:
2.类的定义:
(一)代码如下:
class Car:
wheels = 4
def drive(self):
print('行驶')
(二)运行结果如下: