我可以为您创建一个基于文本的舰队对战小游戏!下面是一个简单的Python实现:
python
import random
class FleetBattle:
def __init__(self, size=8):
self.size = size
self.player_board = [['~' for _ in range(size)] for _ in range(size)]
puter_board = [['~' for _ in range(size range(size)] for _ in range(size)]
self.player_ships = []
puter_ships = []
def place_ship(self, board, ships, length):
随机放置一艘船
while True:
direction = random.choice(['horizontal', 'vertical'])
if direction == 'horizontal':
row = random.randint(0, self.size self.size-1)
col = random.randint(0, self.size-length)
# 检查是否有足够空间
if all(board[row][col+i] == '~' for i in range(length)):
positions = [(row, col+i) for i in range(length)]
ships.append(positions)
for r, c in positions:
board[r][c] = 'S'
break
else: # vertical
row = random.randint(0, self.size-length)
col = random.randint(0, self.size-1)
# 检查是否有足够空间
if all(board[row+i][col] == '~' for i in range(length)):
positions = [(row+i, col) for i in range(length)]
ships.append(positions)
for r, c in positions:
board[r][c] = 'S'
break
def setup_game(self):
设置游戏板
ship_lengths = [4, 3, 3, 2]
# 放置玩家船只
print("正在设置玩家舰队...")
for length in ship_lengths:
self.place_ship(self.player_board, self.player_ships, length)
# 放置电脑船只
print("电脑舰队部署完成...")
for length in ship_lengths:
self.place_ship(puter_board, puter_ships, length)
def display_boards(self, show_computer_ships=False):
显示两个游戏板
print("\
+ "="*50)
print("你的舰队:")
self.display_board(self.player_board)
print("\
敌方海域:")
computer_display = [row[:] for row in puter_board]
if not show_computer_ships:
for r in range(self.size):
for c in range(self.size):
if computer_display[r][c] == 'S':
computer_display[r][c] = '~'
self.display_board(computer_display)
def display_board(self, board):
显示单个游戏板
print(" " + " ".join(str(i) for i in range(self.size)))
for i in range(self.size):
print(f"{i} " + " ".join(board[i]))
def player_turn(self):
玩家回合
print("\
while True:
try:
row = int(input("请输入行号 (0-{}): ".format(self.size-1)))
col = int(input("请输入列号 (0-{}): ".format(self.size-1)))
if 0
if puter_board[row][col] in ['X', 'O']:
print("你已经攻击过这个位置了!")
continue
if puter_board[row][col] == 'S':
print("命中!")
puter_board[row][col] = 'X'
# 检查是否击沉
for ship in puter_ships:
if (row, col) in ship:
ship.remove((row, col))
红龙扑克poker官网版if len(ship) == 0:
print("你击沉了一艘敌舰!")
puter_ships.remove(ship)
break
else:
print("未命中!")
puter_board[row][col] = 'O'
break
else:
print("无效的位置!请重新输入。")
except ValueError:
print("请输入有效的数字!")
def computer_turn(self):
电脑回合
print("\
while True:
row = random.randint(0, self.size-1)
col = random.randint(0, self.size-1)
if self.player_board[row][col] in ['X', 'O']:
continue
if self.player_board[row][col] == 'S':
print(f"敌人在 ({row}, {col}) 命中了你的舰船!")
self.player_board[row][col] = 'X'
# 检查是否击沉
for ship in self.player_ships:
if (row, col) in ship:
ship.remove((row, col))
if len(ship) == 0:
print("敌人击沉了你的一艘舰船!")
self.player_ships.remove(ship)
break
else:
print(f"敌人在 ({row}, {col}) 未命中")
self.player_board[row][col] = 'O'
break
def play(self):
主游戏循环
print("欢迎来到舰队小游戏!")
print("规则说明:")
print(
print(
print(
self.setup_game
while True:
self.display_boards
# 检查胜利条件
if len(puter_ships) == 0:
print("\
恭喜!你赢得了战斗!")
break
if len(self.player_ships) == 0:
print("\
很遗憾,你输了!")
break
self.player_turn
# 再次检查胜利条件
if len(puter_ships) == 0:
print("\
恭喜!你赢得了战斗!")
break
puter_turn
# 运行游戏
if __name__ == "__main__":
game = FleetBattle
game.play
游戏特点
1. 基础功能:
2. 符号说明:
3. 如何玩:
您可以直接复制这段代码到Python环境中运行,或者如果您想要其他语言的实现,也可以告诉我!