当前课程知识点: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()  # 显示窗口



下一节:Video

返回《Python 交互式程序设计导论》慕课在线视频列表

Python 交互式程序设计导论课程列表:

第0周

-课程简介

--课程简介

-A 课程视频(算数操作符及表达式)

--绪论

--Python交互式解释器使用方法

--PyCharm集成开发环境介绍

--算数操作符及表达式

-B 课程视频(变量及赋值)

--变量

--项目提交

--“我喜欢Python”热身小项目

-C 辅助视频(计算机结构、Python开发环境安装)

--Windows平台安装Python开发环境

--Mac平台安装Python开发环境

-D 辅助视频(如何提交项目)

--项目提交

-第0周--小测验

-本周项目:"我喜欢Python"

--项目发布、完成、提交及评分流程

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

--项目提交

第1周

-A 课程视频(函数)

--函数

--其它操作符

--随机函数

-B 课程视频(逻辑及表达式)

--逻辑值和比较

--条件

--编程技巧

--“老虎杠子鸡虫”游戏

-第1周--小测验

-本周项目:“老虎杠子鸡虫”游戏

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第2周

-A 课程视频(Python交互式应用)

--事件驱动编程

--事件可视化跟踪执行

--SimpleGUITk

--按钮

-B 课程视频(输入框、全局变量)

--输入框

--局部变量和全局变量

--编程技巧

--“猫咪藏在哪个房间”游戏

-第2周--小测验A

-第2周--小测验B

-本周项目:猫咪藏在哪个房间

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第3周

-A 课程视频(画布绘图)

--画布和图形绘制

--字符串处理

--绘图和计时器可视化跟踪执行

--图片和音效

-B 课程视频(计时器)

--计时器

--交互式绘图

--“神奇时钟”游戏

--编程技巧

-第3周--小测验A

-第3周--小测验B

-本周项目:“神奇时钟”

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第4周

-A 课程视频(列表)

--列表

--键盘输入

--列表及变化可视化跟踪执行

--碰撞和反射

-B 课程视频(键盘控制)

--速度控制

--运动

--编程技巧

--“桌上冰球”游戏

-第4周--小测验A

-第4周--小测验B

-本周项目:“桌上冰球”游戏

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第5周

-A 课程视频(鼠标输入、列表进阶)

--鼠标输入

--Video

--Video

--Video

-B 课程视频(字典和图片)

--Video

--Video

--Video

--Video

-第5周--小测验A

-第5周--小测验B

-本周项目:“世界杯八强连连看”

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第6周

-A 课程视频(类)

--面向对象编程(类和对象入门)

--面向对象编程(类和对象进阶)

--对象可视化跟踪执行

--华容道中的类

-B 课程视频(平铺图片)

--平铺图片

--理解对象

--编程技巧

--“华容道”游戏

-第6周--小测验A

-第6周--小测验B

-本周项目:“华容道”游戏

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第7周

-A 课程视频(类进阶及文件操作)

--集合

--文件操作

--文字块类

--处理停止的文字块

-B 课程视频(游戏状态控制)

--游戏记分规则

--游戏结束的条件及处理

--编程技巧

--“决战三字经”游戏

-第7周--小测验A

-第7周--小测验B

-本周项目:决战三字经

--游戏说明

--程序说明

--编程步骤

--评分标准

--项目模板

第8周

-A、课程视屏(精灵集合)

--Video

--精灵类

--战士类

--编程技巧

-B、课程视屏(动画)

--精灵碰撞

--精灵动画

--编程技巧

--保卫家园游戏

-第8周--小测验

-本周项目:守卫家园

--游戏说明

--程序说明

--编程步骤

--评分标准

--项目模板

项目模板笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。