打转游戏详解版
网上只要搜一下“打砖游戏”,基本会看到很多一样的代码,主要是注释也很少,对于python不熟悉的人来说,根本看不懂,只会拿来运行着玩玩。 于是我历经三个小时,把代码几乎每一行都注释了一遍!真是呕心沥血!!
点赞加个关注好吗?以后会有更多的分享,我是川川,大二计算机,有问题可以留言或者加我好友询问,我也是第一次阅读这个代码根据我对代码的理解以及效果的分析写的注释,有不对的地方还请指正。
还是看看效果图:
ok,上代码!!!复制粘贴就能运行,还请好好看下注释,你是来学习的不是来白嫖代码玩这种小游戏的。 如果有注释不好的地方还请指正!谢谢!!
# 导入模块
import pygame#导入pygame专门游戏的模块
from pygame.locals import *#导入pygame.locals的全部函数
import sys, random, time, math#导入sys访问模块,random随机模块,time时间模块,math数学模块
class GameWindow(object):
'''创建游戏窗口类'''
def __init__(self, *args, **kw):
self.window_length = 600#窗口高度
self.window_wide = 500#窗口宽度
# 绘制游戏窗口,设置窗口尺寸
self.game_window = pygame.display.set_mode((self.window_length, self.window_wide))
# 设置游戏窗口标题
pygame.display.set_caption("CatchBallGame")#标题CatchBallGame
# 定义游戏窗口背景颜色参数
self.window_color = (135, 206, 250)#RGB配色,做背景颜色
def backgroud(self):
# 绘制游戏窗口背景颜色
self.game_window.fill(self.window_color)#调用上面的RGB自定义颜色
class Ball(object):
'''创建球类'''
def __init__(self, *args, **kw):
# 设置球的半径、颜色、移动速度参数
self.ball_color = (255, 215, 0)#球颜色,RGB
self.move_x = 1#横向速度
self.move_y = 1#纵向速度
self.radius = 10#球半径10
def ballready(self):
# 设置球的初始位置、
self.ball_x = self.mouse_x#球位置为鼠标的横坐标位置
self.ball_y = self.window_wide - self.rect_wide - self.radius#纵坐标以球心位置为准
# 绘制球,设置反弹触发条件
pygame.draw.circle(self.game_window, self.ball_color, (self.ball_x, self.ball_y), self.radius)#绘制圆形的球,调用上面定义的窗口,球颜色,球的位置和半径
def ballmove(self):
# 绘制球,设置反弹触发条件
pygame.draw.circle(self.game_window, self.ball_color, (self.ball_x, self.ball_y), self.radius)#同上 代码一样
self.ball_x += self.move_x#反弹,横坐标增加
self.ball_y -= self.move_y#纵坐标不断减小
# 调用碰撞检测函数
self.ball_window()#碰撞的是墙还是砖块
self.ball_rect()#球的反应是怎样的(可以这么理解)
# 每接5次球球速增加一倍
if self.distance 520: #窗顶到球心距离大于520,那就说明已经不在挡板上了。窗顶到球心距离等于520才是一直在挡板上。
self.gameover = self.over_font.render("Game Over", False, (0, 0, 0))#定义一个游戏结束,False就表示失败,
self.game_window.blit(self.gameover, (100, 130))
self.over_sign = 1 #游戏结束标识
class Rect(object):
'''创建球拍类'''
def __init__(self, *args, **kw): #初始化 def __init__()这种都代表是初始化
# 设置球拍颜色参数
self.rect_color = (255, 0, 0)#RGB控制挡板(球拍)颜色
self.rect_length = 100#球拍的长度为100
self.rect_wide = 10#球拍高度(宽度)
def rectmove(self):
# 获取鼠标位置参数
self.mouse_x, self.mouse_y = pygame.mouse.get_pos()#获取鼠标横纵坐标
# 绘制球拍,限定横向边界
if self.mouse_x >= self.window_length - self.rect_length // 2:#如果鼠标横坐标大于了球拍最两侧中心位置
self.mouse_x = self.window_length - self.rect_length // 2#那么就回归到球心最右侧位置 窗口宽度减去球拍一半的距离
if self.mouse_x
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?