CS代写 | 留学生计算机辅导 | Assignment代做 | Code代做 | 论文辅导

CS代写 | 留学生计算机辅导 | Assignment代做 | Code代做 | 论文辅导

案例展示 - CSSE1001 Assignment 1 Battleships

2024-09-16

案例展示 - CSSE1001 Assignment 1 Battleships

任务概述:

本次作业要求学生实现经典的战舰(Battleships)游戏的文本版。战舰是一款双人游戏,玩家首先在自己的棋盘上秘密放置舰船,然后轮流猜测对方棋盘上的位置以攻击对方的舰船。当一方玩家击中了所有对方的舰船位置后获胜。本作业涵盖了游戏的完整实现,包括棋盘的设置、攻击逻辑以及胜利条件判定。学生将根据已学过的Python编程知识,逐步完成所需功能模块。


游戏玩法:

  1. 设置阶段
    • 游戏开始时,系统会提示用户输入棋盘的大小(假设用户输入的是2到9之间的数字)。
    • 然后,用户将输入一个以逗号分隔的数字字符串,表示双方玩家将使用的舰船大小。
    • 接下来,双方玩家轮流在各自的棋盘上放置舰船。如果玩家输入的舰船无效(例如超出棋盘或与其他舰船重叠),系统会提示重新输入。
  2. 轮流攻击阶段
    • 玩家轮流攻击对方的棋盘。玩家1先开始。
    • 在每轮攻击中,显示当前游戏状态(不显示舰船的位置)。
    • 玩家选择攻击位置,系统检测攻击是否命中舰船,并更新棋盘状态。
    • 当一方玩家击中对方所有舰船时,游戏结束并宣布获胜者。

代码实现:

1. 基础功能函数

  • create_empty_board(board_size: int) -> list[str]: 创建一个指定大小的空棋盘,棋盘用~表示水面。
  • get_square(board: list[str], position: tuple[int, int]) -> str: 获取指定位置的棋盘字符。
  • change_square(board: list[str], position: tuple[int, int], new_square: str) -> None: 改变指定位置的棋盘字符。
  • coordinate_to_position(coordinate: str) -> tuple[int, int]: 将用户输入的坐标转换为棋盘上的位置。

2. 舰船操作函数

  • can_place_ship(board: list[str], ship: list[tuple[int, int]]) -> bool: 判断舰船能否放置在指定位置。
  • place_ship(board: list[str], ship: list[tuple[int, int]]) -> None: 将舰船放置到棋盘上。
  • attack(board: list[str], position: tuple[int, int]) -> None: 执行对棋盘上指定位置的攻击,如果命中舰船,则更新为沉船状态。

3. 辅助功能函数

  • display_board(board: list[str], show_ships: bool) -> None: 以人类可读的格式显示棋盘。如果show_shipsFalse,则隐藏舰船位置。
  • get_player_hp(board: list[str]) -> int: 计算玩家剩余的舰船部分,显示其生命值(HP)。

4. 高级功能函数

  • is_valid_coordinate(coordinate: str, board_size: int) -> tuple[bool, str]: 检查输入的坐标是否合法,并返回错误信息。
  • setup_board(board_size: int, ship_sizes: list[int]) -> list[str]: 设置玩家的棋盘并放置舰船,提供交互提示以确保舰船正确放置。

5. 游戏控制函数

  • play_game() -> None: 实现完整的游戏流程,包括设置棋盘、轮流攻击以及最终的胜利判断。确保所有提示和输出都与要求一致。

案例展示:

1. 棋盘生成与展示

   board = create_empty_board(4)
   display_board(board, True)

输出:
/ABCD
1|~~~~
2|~~~~
3|~~~~
4|~~~~

2. 舰船放置与攻击

board = ['~~~~', 'OO~~', '~~~~', '~~~~']
place_ship(board, [(0, 0), (0, 1)])
attack(board, (0, 0))
display_board(board, False)

输出:
/ABCD
1|X~~~
2|~~~~
3|~~~~
4|~~~~

3. 游戏流程展示

在实际游戏中,玩家会被提示输入棋盘大小、舰船大小和坐标进行攻击。游戏将根据攻击结果更新棋盘状态并最终决定胜利者。

作业要求与评分标准:

功能性(6分):代码将通过一系列自动测试来检查功能是否正确。作业的最终得分取决于通过的测试数量。学生需确保输出格式与预期一致,否则测试将失败。
代码风格(4分):手动评估代码的可读性、变量命名、逻辑结构以及注释情况。代码应保持简洁、清晰,并且遵循良好的编程实践。

联系我们

WeChat:pythonyt001
Email: [email protected]
edda132f17d99e9c9564847efc4d2ed.jpg

  • 0
class="duration-300 fixed bottom-5 right-5 flex items-center justify-center rounded-full bg-neutral p-3 opacity-0 shadow transition-all hover:opacity-70 hover:shadow-lg lg:bottom-10 lg:right-10">