当前课程知识点: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()                     # 启动窗口框架


下一节:画布和图形绘制

返回《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周--小测验

-本周项目:守卫家园

--游戏说明

--程序说明

--编程步骤

--评分标准

--项目模板

项目模板笔记与讨论

也许你还感兴趣的课程:

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