游戏新闻

舰队小游戏

2026-01-04 12:18:28

我可以为您创建一个基于文本的舰队对战小游戏!下面是一个简单的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(

  • 你的舰队由4艘船组成: 长度分别为4, 3, 3, 2")
  • 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. 基础功能:

  • 8x8的游戏网格
  • 玩家和电脑各有4艘不同长度的船只
  • 交替回合制攻击
  • 自动检测击沉情况
  • 2. 符号说明:

  • `~`
  • 海洋(未探索区域)
  • `S`
  • 船只位置(仅在自己的板上可见)
  • `X`
  • 命中
  • `O`
  • 未命中
  • 3. 如何玩:

  • 游戏会自动为你和电脑放置船只
  • 在你的在你的回合,输入要攻击的行号和列号
  • 先击沉对方沉对方所有船只的玩家获胜
  • 您可以直接复制这段代码到Python环境中运行,或者如果您想要其他语言的实现,也可以告诉我!