当前课程知识点:Python 交互式程序设计导论 >  第4周 >  本周项目:“桌上冰球”游戏 >  项目模板

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

项目模板资料文件与下载

项目模板


项目模板

# "桌上冰球"游戏
import simpleguitk as gui
import random
import math
from time import sleep

# 全局变量初始化
CANVAS_WIDTH = 1024                                  # 画布宽度
CANVAS_HEIGHT = 768                                  # 画布高度
PUCK_RADIUS = 40                                    # 冰球半径
MALLET_RADIUS = 47                                   # 球槌半径
MARGIN_WIDTH = 10                                   # 桌边宽度
GATE_RADIUS = 200                                  # 球门弧半径
puck_pos = [CANVAS_WIDTH / 2, CANVAS_HEIGHT / 2]        # 冰球的初始位置
puck_vel = [0, 0]                                 # 冰球的初始速度
mallet1_angle = 0                                # 左侧球槌的角度(以左侧球门中心为原点)
mallet1_angle_vel = math.pi / 180                    # 左侧球槌的角速度
mallet1_vel = [0, 0]                             # 左侧球槌的线速度
mallet1_pos = [GATE_RADIUS, CANVAS_HEIGHT / 2]          # 左侧球槌的初始位置

mallet2_angle = math.pi             # 右侧球槌的角度(右侧球门中心为原点)
mallet2_angle_vel = 0                        # 右侧球槌的角速度
mallet2_vel = [0, 0]                          # 由侧球槌的线速度

mallet2_pos = [CANVAS_WIDTH - GATE_RADIUS, CANVAS_HEIGHT / 2]   # 右侧球槌的初始位置
score1 = 0                                     # 计算机得分
score2 = 0                                     # 玩家得分
game_over = False                                # 一场比赛是否结束

# 加载图片资源
table = gui.load_image('http://202.201.225.74/74/video/PythonResoure/ProjectResource/images/project4/table2.png')
puck = gui.load_image('http://202.201.225.74/video/PythonResoure/ProjectResource/images/project4/puck.png')
mallet = gui.load_image('http://202.201.225.74/video/PythonResoure/ProjectResource/images/project4/mallet.png')

score_image = [gui.load_image('http://202.201.225.74/video/PythonResoure/ProjectResource/images/project4/0_60x60.png'),
               gui.load_image('http://202.201.225.74/video/PythonResoure/ProjectResource/images/project4/1_60x60.png'),
               gui.load_image('http://202.201.225.74/video/PythonResoure/ProjectResource/images/project4/2_60x60.png'),
               gui.load_image('http://202.201.225.74/video/PythonResoure/ProjectResource/images/project4/3_60x60.png'),
               gui.load_image('http://202.201.225.74/video/PythonResoure/ProjectResource/images/project4/4_60x60.png'),
               gui.load_image('http://202.201.225.74/video/PythonResoure/ProjectResource/images/project4/5_60x60.png'),
               gui.load_image('http://202.201.225.74/video/PythonResoure/ProjectResource/images/project4/6_60x60.png'),
               gui.load_image('http://202.201.225.74/video/PythonResoure/ProjectResource/images/project4/7_60x60.png')]
# 加载音效资源
collision_sound = gui.load_sound('http://202.201.225.74/video/PythonResoure/ProjectResource/sounds/project4/collision.wav')
goal_sound = gui.load_sound('http://202.201.225.74/video/PythonResoure/ProjectResource/sounds/project4/goal.wav')
lose_sound = gui.load_sound('http://202.201.225.74/video/PythonResoure/ProjectResource/sounds/project4/gameOver.ogg')
win_sound = gui.load_sound('http://202.201.225.74/video/PythonResoure/ProjectResource/sounds/project4/applause.ogg')

# 绘制比分的辅助函数
def draw_score(canvas, score1, score2):
    pass


# 计算两点距离的辅助函数
def distance(p,q):
    pass

# 碰撞检测辅助函数
def check_collision():
    global puck_vel,mallet1_vel, mallet2_vel,score1, score2
    collided = False
    # 玩家进球

    # 计算机进球

    # 碰右壁

    # 碰左壁

    # 碰下壁

    # 碰上壁


    # 冰球和计算机球槌碰撞


    # 冰球和玩家球槌碰撞


    # 播放碰撞音效


# 在球桌中央初始化冰球的位置和速度,方向可以向左或向右
def spawn_puck(direction):
    pass


# 初始化全局变量, 也是按钮事件处理函数,用来初始化游戏
def new_game():
    pass

# 主绘制函数
def draw(canvas):
    global score1, score2, mallet1_angle,mallet2_angle,mallet1_angle_vel, game_over

    # 检测碰撞


    # 绘制冰球桌
    

    # 绘制比分


    # 绘制冰球


    # 绘制左侧球槌


    # 绘制右侧球槌


    #绘制游戏结束信息、播放音效


# 键盘事件的处理函数
def key_down(key):
    pass


def key_up(key):
    pass

# 创建窗口
frame = gui.create_frame("桌上冰球", CANVAS_WIDTH, CANVAS_HEIGHT)
button = frame.add_button('重新开始', new_game, 50)
frame.set_draw_handler(draw)
frame.set_keydown_handler(key_down)
frame.set_keyup_handler(key_up)


# 启动游戏
new_game()
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周--小测验

-本周项目:守卫家园

--游戏说明

--程序说明

--编程步骤

--评分标准

--项目模板

项目模板笔记与讨论

也许你还感兴趣的课程:

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