【python】python基于pygame弹珠游戏设计(源码)【独一无二】

简介: 【python】python基于pygame弹珠游戏设计(源码)【独一无二】

一、功能展示

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “弹珠” 获取。👈👈👈


二、代码分析

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “弹珠” 获取。👈👈👈

好的,以下是各个模块的设计思路:

GameWindow类

  1. 设计目的
  • 创建和管理游戏窗口。

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类

  1. 设计目的
  • 创建和管理游戏中的球。

2.属性

  • ball_color:球的颜色,设置为金色(RGB: 255, 215, 0)。
  • move_xmove_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类

  1. 设计目的
  • 创建和管理球拍。

2.属性

  • rect_color:球拍的颜色,设置为红色(RGB: 255, 0, 0)。
  • rect_lengthrect_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类

  1. 设计目的
  • 创建和管理游戏中的砖块。

2.属性

  • brick_color:砖块的颜色,设置为棕色(RGB: 139, 126, 102)。
  • brick_list:砖块的二维数组,用于表示砖块的状态。
  • brick_lengthbrick_wide:砖块的长度和宽度。

3.方法

  • __init__:初始化方法,设置砖块的颜色、状态、长度和宽度。
  • brickarrange:根据二维数组绘制砖块,并检查砖块与球的碰撞情况。

Score类

  1. 设计目的
  • 记录和显示玩家的得分。
  1. 属性
  • score:初始分数。
  • score_font:分数字体。
  • point:加分点数。
  • frequency:接球次数。

3.方法

  • __init__:初始化方法,设置初始分数、分数字体、加分点数和接球次数。
  • countscore:绘制玩家分数。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “弹珠” 获取。👈👈👈

GameOver类

  1. 设计目的
  • 处理游戏结束的逻辑和显示。
  1. 属性
  • over_font:游戏结束字体。
  • over_sign:游戏结束标识。

3.方法

  • __init__:初始化方法,设置游戏结束字体和标识。

Win类

  1. 设计目的
  • 处理游戏胜利的逻辑和显示。
  1. 属性
  • win_font:游戏胜利字体。
  • win_sign:游戏胜利标识。
  1. 方法
  • __init__:初始化方法,设置游戏胜利字体和标识。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “弹珠” 获取。👈👈👈

Collision类

  1. 设计目的
  • 处理球与其他物体的碰撞检测。
  1. 方法
  • 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类

  1. 设计目的
  • 主程序类,整合上述所有类,管理游戏流程。
  1. 方法
  • __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()

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “弹珠” 获取。👈👈👈

相关文章
|
1月前
|
Python
用python进行视频剪辑源码
这篇文章提供了一个使用Python进行视频剪辑的源码示例,通过结合moviepy和pydub库来实现视频的区间切割和音频合并。
39 2
|
19天前
|
自然语言处理 Java 编译器
为什么要看 Python 源码?它的结构长什么样子?
为什么要看 Python 源码?它的结构长什么样子?
20 2
|
19天前
|
Python
源码解密 Python 的 Event
源码解密 Python 的 Event
32 1
|
18天前
|
数据采集 前端开发 Python
Python pygame 实现游戏 彩色 五子棋 详细注释 附源码 单机版
Python pygame 实现游戏 彩色 五子棋 详细注释 附源码 单机版
47 0
|
2月前
|
Ubuntu Linux 数据安全/隐私保护
使用Cython库包对python的py文件(源码)进行加密,把python的.py文件生成.so文件并调用
本文介绍了在Linux系统(Ubuntu 18.04)下将Python源代码(`.py文件`)加密为`.so文件`的方法。首先安装必要的工具如`python3-dev`、`gcc`和`Cython`。然后通过`setup.py`脚本使用Cython将`.py文件`转化为`.so文件`,从而实现源代码的加密保护。文中详细描述了从编写源代码到生成及调用`.so文件`的具体步骤。此方法相较于转化为`.pyc文件`提供了更高的安全性。
62 2
|
2月前
|
测试技术 Python
python自动化测试中装饰器@ddt与@data源码深入解析
综上所述,使用 `@ddt`和 `@data`可以大大简化写作测试用例的过程,让我们能专注于测试逻辑的本身,而无需编写重复的测试方法。通过讲解了 `@ddt`和 `@data`源码的关键部分,我们可以更深入地理解其背后的工作原理。
44 1
|
2月前
|
JSON 算法 API
京东以图搜图功能API接口调用算法源码python
京东图搜接口是一款强大工具,通过上传图片即可搜索京东平台上的商品。适合电商平台、比价应用及需商品识别服务的场景。使用前需了解接口功能并注册开发者账号获取Key和Secret;准备好图片的Base64编码和AppKey;生成安全签名后,利用HTTP客户端发送POST请求至接口URL;最后解析JSON响应数据以获取商品信息。
|
2月前
|
开发者 Python
深入解析Python `httpx`源码,探索现代HTTP客户端的秘密!
深入解析Python `httpx`源码,探索现代HTTP客户端的秘密!
78 1
|
2月前
|
算法 关系型数据库 程序员
程序员必备技能)基于Python的鼠标与键盘控制实战扩展与源码
这篇文章是关于如何使用Python的`pyautogui`库来控制鼠标和键盘进行各种操作,包括移动、点击、滚轮控制以及键盘的按键和快捷键输出,并介绍了如何结合图像处理和计算机视觉技术来扩展其应用。
|
Python Windows Linux
Python pygame如何安装?
Python pygame如何安装? 很多小伙伴各处找资料,花了很长时间也没有解决,所以我把自己学习的一点东西分享出来,供大家参考,有问题欢迎大家在下方提问.
1669 0