当前课程知识点: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()-课程简介
--课程简介
-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周--小测验
-本周项目:守卫家园
--游戏说明
--程序说明
--编程步骤
--评分标准
--项目模板
