当前课程知识点:Python 交互式程序设计导论 > 第2周 > 本周项目:猫咪藏在哪个房间 > 项目模板
返回《Python 交互式程序设计导论》慕课在线视频课程列表
项目模板
# "猫咪藏在哪个房间"小项目程序模板 # 程序的输入来自按钮和输入框 import simpleguitk as gui # 简单用户图形界面接口 import random # 用random.randrange(range_high)随机生成猫咪要藏的房间号 import math # 用math.log(x, base)计算猜中所需的最少次数 # 初始化全局变量 secret_number = None # 每个回合计算机随机产生的秘密数字 range_high = 25 # 房间号的上限 new_game_started = True # 新一轮游戏是否开始 remaining_guesses = 0 # 一个回合剩余的猜测次数 canvas_height = 500 # 画布高度,单位为像素 canvas_width = 500 # 画布宽度,单位为像素 room_list = [] # 所有房间的状态 cat_image = gui.load_image("http://202.201.225.74/video/PythonResoure/ProjectResource/images/project2/cat.png") # 猫咪图片 def new_game(): """启动或重新启动游戏的辅助函数""" # 添加你自己的代码后删除pass pass # 初始化所有房间,请不要修改以下3行代码 room_list.clear() for i in range(range_high): room_list.append(False) # 为控制面板的控件定义事件处理函数 def range25(): # 设置房间号的范围为[0,25)并重新开始游戏 # 添加你自己的代码后删除pass pass def range36(): # 设置房间号的范围为[0,36)并重新开始游戏 # 添加你自己的代码后删除pass pass def range100(): # 设置房间号的范围为[0,100)并重新开始游戏 # 添加你自己的代码后删除pass pass secret_number = random.randrange(25) def guess_room_number(user_input): """文本输入框控件的处理函数,也是游戏的主要逻辑实现的函数""" # 添加你自己的代码后删除pass pass update_room(int(user_input)) # 更新房间状态,请不要修改这行代码 # 创建窗口 frame = gui.create_frame("猫咪藏在哪个房间", canvas_width, canvas_height) # 注册控件事件 # 添加你自己的代码后删除pass pass # 调用new_game初始化一些全局变量并向终端输出新一轮游戏开始的相关信息 new_game() # 请别忘记对照评分标准核对你最终完成的程序 # 请不要修改这行之后的所有代码 def draw(canvas): """画布显示刷新事件的处理函数""" # 请不要修改该函数 root = int(math.sqrt(range_high)) length = canvas_width // root for row in range(root): for col in range(root): index = root * row + col text_width = frame.get_canvas_textwidth(str(index), 12, 'sans-serif') top_left = [length * col,length * row] top_right = [length * (col + 1),length * row] bottom_right = [length * (col + 1),length * (row + 1)] bottom_left = [length * col,length * (row + 1)] if not room_list[index]: canvas.draw_polygon([top_left, top_right, bottom_right, bottom_left], 1, 'Red', 'Green') canvas.draw_text(str(index), (top_left[0] + (length - text_width) / 2, top_left[1] + length - 2), 12, 'White', 'sans-serif') else: canvas.draw_polygon([top_left, top_right, bottom_right, bottom_left], 1, 'Red', 'Blue') canvas.draw_text(str(index), (top_left[0] + (length - text_width) / 2, top_left[1] + length - 2), 12, 'White', 'sans-serif') if index != secret_number: no_cat = frame.get_canvas_textwidth('没有猫', 12, 'sans-serif') canvas.draw_text('没有猫', (top_left[0] + (length - no_cat) / 2, top_left[1] + length / 2), 12, 'White', 'sans-serif') else: canvas.draw_image(cat_image, [256,256], [512,512],[top_left[0] + length//2,top_left[1]+length//2 ],[length, length]) def update_room(guess): """更新房间的状态""" # 请不要修改该函数 if guess == secret_number: for i in range(range_high): room_list[i] = True elif guess < secret_number: if remaining_guesses == 0: for i in range(range_high): room_list[i] = True else: for i in range(0,guess + 1): room_list[i] = True else: if remaining_guesses == 0: for i in range(range_high): room_list[i] = True else: for i in range(guess, range_high): room_list[i] = True frame.set_draw_handler(draw) # 注册显示刷新处理事件,每秒调用draw函数60次 frame.start() # 启动窗口框架
-课程简介
--课程简介
-A 课程视频(算数操作符及表达式)
--绪论
-B 课程视频(变量及赋值)
--变量
--项目提交
-C 辅助视频(计算机结构、Python开发环境安装)
-D 辅助视频(如何提交项目)
--项目提交
-第0周--小测验
-本周项目:"我喜欢Python"
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
--项目提交
-A 课程视频(函数)
--函数
--其它操作符
--随机函数
-B 课程视频(逻辑及表达式)
--逻辑值和比较
--条件
--编程技巧
-第1周--小测验
-本周项目:“老虎杠子鸡虫”游戏
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(Python交互式应用)
--事件驱动编程
--按钮
-B 课程视频(输入框、全局变量)
--输入框
--编程技巧
-第2周--小测验A
-第2周--小测验B
-本周项目:猫咪藏在哪个房间
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(画布绘图)
--画布和图形绘制
--字符串处理
--图片和音效
-B 课程视频(计时器)
--计时器
--交互式绘图
--“神奇时钟”游戏
--编程技巧
-第3周--小测验A
-第3周--小测验B
-本周项目:“神奇时钟”
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(列表)
--列表
--键盘输入
--碰撞和反射
-B 课程视频(键盘控制)
--速度控制
--运动
--编程技巧
--“桌上冰球”游戏
-第4周--小测验A
-第4周--小测验B
-本周项目:“桌上冰球”游戏
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(鼠标输入、列表进阶)
--鼠标输入
--Video
--Video
--Video
-B 课程视频(字典和图片)
--Video
--Video
--Video
--Video
-第5周--小测验A
-第5周--小测验B
-本周项目:“世界杯八强连连看”
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(类)
--华容道中的类
-B 课程视频(平铺图片)
--平铺图片
--理解对象
--编程技巧
--“华容道”游戏
-第6周--小测验A
-第6周--小测验B
-本周项目:“华容道”游戏
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(类进阶及文件操作)
--集合
--文件操作
--文字块类
--处理停止的文字块
-B 课程视频(游戏状态控制)
--游戏记分规则
--编程技巧
-第7周--小测验A
-第7周--小测验B
-本周项目:决战三字经
--游戏说明
--程序说明
--编程步骤
--评分标准
--项目模板
-A、课程视屏(精灵集合)
--Video
--精灵类
--战士类
--编程技巧
-B、课程视屏(动画)
--精灵碰撞
--精灵动画
--编程技巧
--保卫家园游戏
-第8周--小测验
-本周项目:守卫家园
--游戏说明
--程序说明
--编程步骤
--评分标准
--项目模板