当前课程知识点:Python 交互式程序设计导论 > 第7周 > 本周项目:决战三字经 > 项目模板
返回《Python 交互式程序设计导论》慕课在线视频课程列表
# “决战三字经”游戏
import simpleguitk as gui
import random
import urllib.request
# 全局变量
has_rising_box = True # 是否有文字块正在上升
canvas_height = 600 # 画布高度,单位为像素
canvas_width = 480 # 画布宽度,单位为像素
box_height = 30 # 文字块高度,单位为像素
box_width = 120 # 文字块宽度,单位为像素,包含3个汉字
rising_speed = -1 # 上升速度,单位为像素
game_over = False # 游戏是否结束
rising_box = None # 正在运动的文字块对象
stopped_box = [] # 停止移动的所有文字块列表
prime_sentence_list = [] # 三字经全文列表,3个字构成1句,每句为一个列表元素
current_section_list = [] # 当前处理的段落文字列表,每句为一个列表元素,4句为一个段落
score = 0 # 游戏得分
def read_from_file(filename):
"""从文本文件读入三字经,存储在列表中,并返回该列表"""
# 三字经文件的格式如下:
'''
# rén zhī chū xìng běn shàn xìng xiāng jìn xí xiāng yuǎn
#人之初 性本善 性相近 习相远
gǒu bú jiào xìng nǎi qiān jiào zhī dào guì yǐ zhuān
苟不教 性乃迁 教之道 贵以专
......
'''
# 奇数行为诗句拼音,偶数行为诗句文本
# 三字经每3个汉字为1句,每1句作为列表的1个元素,四句为一行(一段),句间隔为空格
pass
def text_shuffle(text):
"""打乱文字的次序"""
pass
def draw_all_stopped_box(boxes, canvas):
"""绘制所有的停止块"""
pass
def generate_current_section_list():
"""生成当前段落四句诗歌列表"""
pass
def check_collision(group, moving_box):
"""检查移动块和所有停止块是否发生碰撞"""
pass
def delete_last_four(group):
"""消除最后4个块,字序和句序都正确时调用该函数"""
n = len(group)
group.pop(n-1)
group.pop(n-2)
group.pop(n-3)
group.pop(n-4)
def last_four_ok(group):
"""判断最后4个块的字序和句序是否都正确"""
n = len(group)
if group[n-1].proper_order and group[n-1].sentence == group[n-1].correct_sentence and \
group[n-2].proper_order and group[n-2].sentence == group[n-2].correct_sentence and \
group[n-3].proper_order and group[n-3].sentence == group[n-3].correct_sentence and \
group[n-4].proper_order and group[n-4].sentence == group[n-4].correct_sentence:
return True
def stop_box(group, moving_box):
"""停止移动块"""
global has_rising_box, game_over, score, label
pass
def draw_game_over_msg(canvas, msg):
"""绘制游戏结束信息"""
pass
class Box:
"""Box类的定义"""
def __init__(self, pos, width, height, sentence, correct_sentence, order):
self.pos = [pos[0], pos[1]] # 文字块左上角在画布的坐标位置
self.width = width # 文字块的宽度
self.height = height # 文字块的高度
self.sentence = sentence # 文字块实际显示的句子
self.correct_sentence = correct_sentence # 文字块正确字序的句子
self.rising = True # 文字块是否正在上升
self.processed = False # 反射碰撞后是否处理完毕
self.order = order # 该文字块在一段中的正确句序
self.proper_order = True # 实际句序是否正确
def shuffle_sentence(self):
"""打乱字序"""
pass
def collide(self, moving_object):
"""检查是否和移动块发生碰撞"""
pass
def draw(self, canvas):
"""绘制自己"""
pass
def update(self):
"""更新垂直位置,使其向上移动"""
pass
def box_spawner():
"""时钟事件处理函数,生产一个上升的方块"""
global has_rising_box, rising_box, current_section_list, game_over
pass
def draw(canvas):
"""屏幕刷新事件处理函数"""
pass
def key_down(key):
"""处理键盘按下事件的函数"""
pass
def start_game():
"""为游戏开始或重新开始初始化全局变量,也是鼠标点击按钮的事件处理函数"""
global prime_sentence_list, stopped_box, rising_box, current_section_list, has_rising_box, game_over, score
pass
# 创建窗口初始化画布
frame = gui.create_frame("决战《三字经》", canvas_width, canvas_height)
label = frame.add_label("游戏得分 = 0分")
# 注册事件处理函数
frame.set_keydown_handler(key_down) # 按键处理,每次按键会调用key_down函数
frame.set_draw_handler(draw) # 显示处理,每秒调用draw函数60次
timer = gui.create_timer(1000.0, box_spawner) # 每秒调用box_spawner函数1次
button = frame.add_button('重新开始游戏', start_game, 100) # 鼠标每次点击“重新开始游戏”按钮,调用start_game函数1次
# 启动游戏
start_game() # 为游戏开始或重新开始初始化全局变量
timer.start() # 启动定时器
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周--小测验
-本周项目:守卫家园
--游戏说明
--程序说明
--编程步骤
--评分标准
--项目模板



