自己动手用Python实现一个保卫果实小游戏【完整版】
创始人
2025-07-03 11:10:55
0

Pygame介绍

pygame 是一个用 Python 语言写的跨平台的视频游戏开发库。它基于 SDL (Simple DirectMedia Layer) 库,可以让开发者轻松地创建游戏和多媒体应用程序。下面是关于 pygame 的一些基本介绍:

功能特点:

  • 声音和音乐处理
  • 图形和动画
  • 键盘、鼠标和操纵杆输入
  • 碰撞检测
  • 字体和文本渲染
  • 更多...

跨平台性:pygame 支持多种操作系统,包括 Windows、Linux 和 macOS。

易用性:与许多其他的游戏开发库相比,pygame 更为简单易学,特别适合初学者或者那些希望快速原型设计的开发者。

社区与资源:pygame 有一个活跃的社区,提供了大量的教程、例子和工具。这对新手来说是非常有价值的资源。

安装:你可以使用 pip 来安装 pygame:

pip install pygame

第一个Pygame小程序

一个简单的例子:

import pygame
pygame.init()

# 设置窗口大小
size = (700, 500)
screen = pygame.display.set_mode(size)

pygame.display.set_caption("我的第一个 pygame 程序")

running = True
clock = pygame.time.Clock()

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    screen.fill((255, 255, 255)) # 使用白色填充屏幕
    pygame.display.flip()

    clock.tick(60) # 控制帧率为60帧/秒

pygame.quit()

这只是一个简单的 pygame 概述,要充分利用其功能,还需要深入学习。如果你有兴趣开发游戏或多媒体应用,pygame 是一个很好的起点。

保卫果实小游戏

最终我们给大家的是一个完整的系统文件,如下图所示。

  • modules文件夹:相关动作的实现代码
  • resources文件夹:系统相关音乐、图片资源文件
  • cfg.py:配置文件(指定了图片、声音文件等路径)
  • Game1.py:启动文件

运行命令:

python Game1.py

即可看到界面效果。

核心代码

import math
import pygame


'''定义兔子类'''
class BunnySprite(pygame.sprite.Sprite):
    def __init__(self, image, position, **kwargs):
        pygame.sprite.Sprite.__init__(self)
        self.image = image
        self.rect = self.image.get_rect()
        self.rect.left, self.rect.top = position
        self.speed = 5
        self.rotated_position = position
    '''移动兔子'''
    def move(self, screensize, direction):
        if direction == 'left':
            self.rect.left = max(self.rect.left-self.speed, 0)
        elif direction == 'right':
            self.rect.left = min(self.rect.left+self.speed, screensize[0])
        elif direction == 'up':
            self.rect.top = max(self.rect.top-self.speed, 0)
        elif direction == 'down':
            self.rect.top = min(self.rect.top+self.speed, screensize[1])
    '''画到屏幕上'''
    def draw(self, screen, mouse_pos):
        angle = math.atan2(mouse_pos[1]-(self.rect.top+32), mouse_pos[0]-(self.rect.left+26))
        image_rotate = pygame.transform.rotate(self.image, 360-angle*57.29)
        bunny_pos = (self.rect.left-image_rotate.get_rect().width/2, self.rect.top-image_rotate.get_rect().height/2)
        self.rotated_position = bunny_pos
        screen.blit(image_rotate, bunny_pos)


'''定义弓箭类'''
class ArrowSprite(pygame.sprite.Sprite):
    def __init__(self, image, position, **kwargs):
        pygame.sprite.Sprite.__init__(self)
        self.angle = position[0]
        self.image = pygame.transform.rotate(image, 360-position[0]*57.29)
        self.rect = self.image.get_rect()
        self.mask = pygame.mask.from_surface(self.image)
        self.rect.left, self.rect.top = position[1:]
        self.speed = 10
    '''更新弓箭'''
    def update(self, screensize):
        velx = math.cos(self.angle) * self.speed
        vely = math.sin(self.angle) * self.speed
        self.rect.left += velx
        self.rect.top += vely
        if self.rect.right < 0 or self.rect.left > screensize[0] or self.rect.top > screensize[1] or self.rect.bottom < 0:
            return True
        return False


'''定义獾类'''
class BadguySprite(pygame.sprite.Sprite):
    def __init__(self, image, position, **kwargs):
        pygame.sprite.Sprite.__init__(self)
        self.image = image
        self.rect = self.image.get_rect()
        self.mask = pygame.mask.from_surface(self.image)
        self.rect.left, self.rect.top = position
        self.speed = 7
    '''更新獾'''
    def update(self):
        self.rect.left -= self.speed
        if self.rect.left < 64:
            return True
        return False

这段代码主要是利用 pygame 库定义了三个类,分别表示一个游戏中的兔子、箭和獾。

这段代码主要是利用 pygame 库定义了三个类,分别表示一个游戏中的兔子、箭和獾。下面我会逐个解释这些代码的含义:

(1) BunnySprite类 (兔子类):

  • 初始化:创建一个兔子精灵,设置其图像、位置以及速度。
  • move方法:基于给定的方向(上、下、左、右),移动兔子一个固定的速度。
  • draw方法:在屏幕上绘制兔子,并使其面朝鼠标的位置旋转。

(2) ArrowSprite类 (弓箭类):

  • 初始化:创建一个箭的精灵,根据一个给定的角度来旋转它,并设置它的位置和速度。
  • update方法:更新箭的位置。箭会根据它的旋转角度飞行。如果箭飞出屏幕,该方法会返回True,否则返回False。

(3) BadguySprite类 (獾类):

  • 初始化:创建一个獾的精灵,设置其图像和位置。
  • update方法:更新獾的位置,使其向左移动。如果獾到达了屏幕的最左边,该方法会返回True,否则返回False。

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...