一、功能展示
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “弹珠” 获取。👈👈👈
二、代码分析
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “弹珠” 获取。👈👈👈
好的,以下是各个模块的设计思路:
GameWindow类
- 设计目的:
- 创建和管理游戏窗口。
2.属性:
- window_length 和 window_wide:窗口的长度和宽度。
- game_window:游戏窗口对象,通过pygame.display.set_mode来设置窗口尺寸。
- window_color:窗口的背景颜色,设置为淡蓝色(RGB: 135, 206, 250)。
3.方法:
__init__
:初始化方法,设置窗口尺寸和标题。backgroud
:绘制窗口背景颜色。
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") # 定义游戏窗口背景颜色参数 self.window_color = (135, 206, 250) def backgroud(self): # 绘制游戏窗口背景颜色 self.game_window.fill(self.window_color)
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “弹珠” 获取。👈👈👈
Ball类
- 设计目的:
- 创建和管理游戏中的球。
2.属性:
ball_color
:球的颜色,设置为金色(RGB: 255, 215, 0)。move_x
和move_y
:球的移动速度。radius
:球的半径。
3.方法:
__init__
:初始化方法,设置球的颜色、速度和半径。ballready
:设置球的初始位置并绘制球。ballmove
:更新球的位置,并根据反弹条件重新绘制球。
class Ball(object): '''创建球类''' def __init__(self, *args, **kw): # 设置球的半径、颜色、移动速度参数 self.ball_color = (255, 215, 0) self.move_x = 1 self.move_y = 1 self.radius = 30 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)
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “弹珠” 获取。👈👈👈
Rect类
- 设计目的:
- 创建和管理球拍。
2.属性:
rect_color
:球拍的颜色,设置为红色(RGB: 255, 0, 0)。rect_length
和rect_wide
:球拍的长度和宽度。
3.方法:
__init__
:初始化方法,设置球拍的颜色、长度和宽度。rectmove
:根据鼠标位置绘制球拍,并限制球拍的移动范围。
class Rect(object): '''创建球拍类''' def __init__(self, *args, **kw): # 设置球拍颜色参数 self.rect_color = (255, 0, 0) self.rect_length = 100 self.rect_wide = 10
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “弹珠” 获取。👈👈👈
Brick类
- 设计目的:
- 创建和管理游戏中的砖块。
2.属性:
brick_color
:砖块的颜色,设置为棕色(RGB: 139, 126, 102)。brick_list
:砖块的二维数组,用于表示砖块的状态。brick_length
和brick_wide
:砖块的长度和宽度。
3.方法:
__init__
:初始化方法,设置砖块的颜色、状态、长度和宽度。brickarrange
:根据二维数组绘制砖块,并检查砖块与球的碰撞情况。
Score类
- 设计目的:
- 记录和显示玩家的得分。
- 属性:
score
:初始分数。score_font
:分数字体。point
:加分点数。frequency
:接球次数。
3.方法:
__init__
:初始化方法,设置初始分数、分数字体、加分点数和接球次数。countscore
:绘制玩家分数。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “弹珠” 获取。👈👈👈
GameOver类
- 设计目的:
- 处理游戏结束的逻辑和显示。
- 属性:
over_font
:游戏结束字体。over_sign
:游戏结束标识。
3.方法:
__init__
:初始化方法,设置游戏结束字体和标识。
Win类
- 设计目的:
- 处理游戏胜利的逻辑和显示。
- 属性:
win_font
:游戏胜利字体。win_sign
:游戏胜利标识。
- 方法:
__init__
:初始化方法,设置游戏胜利字体和标识。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “弹珠” 获取。👈👈👈
Collision类
- 设计目的:
- 处理球与其他物体的碰撞检测。
- 方法:
ball_window
:检测球与窗口边框的碰撞。ball_rect
:检测球与球拍的碰撞。ball_brick
:检测球与砖块的碰撞。
class Collision(object): '''碰撞检测类''' # 球与窗口边框的碰撞检测 def ball_window(self): if self.ball_x <= self.radius or self.ball_x >= (self.window_length - self.radius): self.move_x = -self.move_x if self.ball_y <= self.radius: self.move_y = -self.move_y
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “弹珠” 获取。👈👈👈
Main类
- 设计目的:
- 主程序类,整合上述所有类,管理游戏流程。
- 方法:
__init__
:初始化方法,调用各个类的初始化方法,并设置游戏开始标识。main loop
:主循环,处理游戏逻辑、事件检测和屏幕刷新。
class Main(GameWindow, Rect, Ball, Brick, Collision, Score, Win, GameOver): '''创建主程序类''' def __init__(self, *args, **kw): super(Main, self).__init__(*args, **kw) super(GameWindow, self).__init__(*args, **kw) super(Rect, self).__init__(*args, **kw) super(Ball, self).__init__(*args, **kw) super(Brick, self).__init__(*args, **kw) super(Collision, self).__init__(*args, **kw) super(Score, self).__init__(*args, **kw) super(Win, self).__init__(*args, **kw) # 定义游戏开始标识 start_sign = 0 while True: self.backgroud() self.rectmove() self.countscore() if self.over_sign == 1 or self.win_sign == 1: break # 获取游戏窗口状态 for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() if event.type == MOUSEBUTTONDOWN: pressed_array = pygame.mouse.get_pressed() if pressed_array[0]: start_sign = 1 if start_sign == 0: self.ballready() else: self.ballmove() self.brickarrange() # 更新游戏窗口 pygame.display.update() # 控制游戏窗口刷新频率 time.sleep(0.010) if __name__ == '__main__': pygame.init() pygame.font.init() catchball = Main()
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “弹珠” 获取。👈👈👈