这份作业要练什么?
- 与小组成员协作,逐步完成同一个文字版游戏。
- 开发可在终端中运行的 Connect 4,不依赖图形界面。
- 综合练习课程前五周的变量、判断、循环、列表和函数。
课程按原 Connect 4 资料的函数顺序重建:输入、棋盘、落子、胜负、双人对战, 再进入 Easy、Medium、Hard 电脑玩家。没有类,没有对象建模负担。
def create_board():
return [[0] * 7 for _ in range(6)]
def drop_piece(board, player, column):
for row in range(5, -1, -1):
# gravity starts here ↓
def end_of_game(board):
# four directions, one result把本题代码缩进到预先给出的函数定义中;需要单独试跑时,再在文件底部调用它。
def function_name(parameters):
# 本题代码写在这里
return result
if __name__ == "__main__":
function_name(arguments)前十二题累计到同一个 connect4.py;T13 单独保存,不和主游戏混在一起。
A1_<group_name>.zip
├── connect4.py
└── connectk.py # optionalend_of_game 返回 0、1、2 或 3。validate_input(prompt, valid_inputs)反复读取输入,直到用户给出允许的字符串;这是所有菜单和回合输入的共同入口。
validate_input(prompt, valid_inputs)反复读取输入,直到用户给出允许的字符串;这是所有菜单和回合输入的共同入口。
为什么要做:把“询问—检查—重试”集中在一个函数里,后续菜单和玩家回合就不必重复相同的 while 循环。
promptstr每次调用 input() 时显示给用户的提示文字;它只负责说明要输入什么,不参与合法性判断。
valid_inputslist[str]完整的合法答案列表。因为 input() 总是返回字符串,所以列表元素也必须是字符串。
str用户最终输入的合法字符串
先完成并测试这些函数,再组合当前任务。
input() 的返回值总是字符串,所以合法选项也写成字符串列表。
循环条件直接写 answer not in valid_inputs。
return 应放在 while 循环结束之后。
检查标准能说明为什么 valid_inputs 使用字符串,而不是整数。
prompt="Choose: ", valid_inputs=["a", "b"], 用户输入 a"a"第一次输入合法,直接返回。prompt="Choose: ", valid_inputs=["a", "b"], 用户依次输入 x、b先打印错误提示,最后返回 "b"非法输入不能结束函数。valid_inputs=["1", "2", "3"], 用户输入 2"2"(字符串)类型保持为 str。Please select an option (a, b, c): 1
Please select an option (a, b, c): d
Please select an option (a, b, c): aInvalid input, please try again.
Invalid input, please try again.
返回值: "a"每关只编写当前函数,服务器会补齐前置依赖并逐项验证。T12 完成完整人机对局,T13 再把相同思路推广到任意尺寸的 Connect-K。
⌘ / Ctrl + Enter · submit tests