python第三方库pygame的使用

article/2025/8/26 16:22:49

        作用:pygame一般用来做游戏

        注意:1.在使用pygame提供的功能之前,需要调用init方法

                   2.在游戏结束前需要调用 quit 方法

        pygame中的各个函数:

1.pygame.init():该函数在使用pygame时进行初始化,只有引用了该函数才能使用pygame提供的所用功能

2.pygame.Rect():该函数可以设置一张图片的位置以及大小,这是一个特殊的函数,不需要引用init函数都可以使用

3.pygame.display.set_mode(resolution=(0,0),flags=0,depth=0):该函数可以创建游戏的主窗口对象,

        参数1:指定屏幕的宽和高,默认与屏幕大小一致

        参数2:指定屏幕的附加选项,默认不传递

        参数3:颜色的位数,默认自动匹配

4.pygame.display.update():刷新主窗口内容

5.pygame.image.load():加载需要的图片

6.主窗口对象.blit(图像,位置):将图像绘制到指定的位置

7.pygame.time.Clock():创建一个时间对象,用来控制帧率

8.时间对象.tick(数字):控制每秒的帧率

9.pygame.event.get():事件监听,返回的是一个列表

10.pygame.sprite.Sprite:精灵,用来存储图像数据images和rect的对象

11.pygame.sprite.Group(精灵1,精灵2):创建精灵组对象

12.精灵组对象.update():更新精灵组中精灵的位置

13.精灵组对象.draw():把精灵组中的所有精灵绘画到主窗口

14.pygame.time.set_time(eventid,milliseconds):设置每个一段时间程序会执行什么内容,第一个需要基于常量pygame.USEREVENT来指定,第二个参数是毫秒值

15.pygame.key.get_pressed():按键监听,会返回所有按键的元组,通过键盘常量,判断元组中某个按键是否被触发,如果被触发对应数值为1

16.pygame.sprite.groupcollide(精灵组1,精灵组2,bool,bool):检测两个精灵组的碰撞,会返回一个字典,第一个参数和第三个参数关联,第二个参数和第四个参数关联,当bool类型为真时,碰撞会被销毁

17.pygame.sprite.spritecollide(精灵,精灵组,bool):检测精灵和精灵组的碰撞,会返回一个精灵组的列表,当bool类型为真时,精灵组会被销毁

         一个飞机大战的游戏总结:

import pygame
import time
from plane_Sprite import *class PlaneGame(object):def __init__(self):print('初始化')# 1.创建游戏窗口self.screem = pygame.display.set_mode(SCREEM_RECT.size)  # 这里需要拿到元组类型的数据,使用 .size 可以拿到数组中的数据# 2.创建游戏时钟self.clock = pygame.time.Clock()# 3.调用私有方法,精灵和精灵组的创建self.__create_sprite()# 4.创建敌机定时器pygame.time.set_timer(CREATE_ENEMY_EVENT, 1000)# 5.创建子弹定时器pygame.time.set_timer(HERO_FIRE_EVENT, 500)def __create_sprite(self):# 创建背景精灵类# bg1 = BackGround('./images/background.jpg')# bg2 = BackGround('./images/background.jpg')bg1 = BackGround()bg2 = BackGround(True)self.back_groud = pygame.sprite.Group(bg1, bg2)  # 创建背景精灵组self.enemy_group = pygame.sprite.Group()  # 创建敌机精灵组self.he1 = Hero()self.hero_group = pygame.sprite.Group(self.he1)  # 创建英雄精灵组def StartGame(self):print('开始游戏')while True:# 1.设置刷新的帧率self.clock.tick(SHUA)# 2.事件监听self.__event_handler()# 3.碰撞检测self.__check_cllide()# 4.更新/和绘制精灵组图片self.__update_sprite()# 5.更新显示pygame.display.update()# 定义私有方法def __event_handler(self):"""监听事件处理"""for event in pygame.event.get():if event.type == pygame.QUIT:# 调用静态方法:使用类名PlaneGame.__game_over()# 判断定时器事件elif event.type == CREATE_ENEMY_EVENT:# 创建敌机对象enemy = Enemy()# 添加到精灵组中self.enemy_group.add(enemy)elif event.type == HERO_FIRE_EVENT:self.he1.fire()# 获取键盘信息key_pressed = pygame.key.get_pressed()# 判断对应的键盘if key_pressed[pygame.K_RIGHT]:self.he1.speed = 3elif key_pressed[pygame.K_LEFT]:self.he1.speed = -3elif key_pressed[pygame.K_UP]:self.he1.speed = -2elif key_pressed[pygame.K_DOWN]:self.he1.speed = 2else:self.he1.speed = 0def __check_cllide(self):"""碰撞检测"""# 子弹摧毁敌机pygame.sprite.groupcollide(self.he1.bullets, self.enemy_group, True, True)# 敌机撞毁英雄enemy_list = pygame.sprite.spritecollide(self.he1, self.enemy_group,True)if len(enemy_list) > 0:# 销毁英雄self.he1.kill()# 结束游戏PlaneGame.__game_over()def __update_sprite(self):"""更新精灵组"""self.back_groud.update()  # 刷新图像数据self.back_groud.draw(self.screem)  # 绘画图像# 敌机精灵组更新self.enemy_group.update()self.enemy_group.draw(self.screem)# 英雄精灵组更新self.hero_group.update()self.hero_group.draw(self.screem)# 子弹精灵组更新self.he1.bullets.update()self.he1.bullets.draw(self.screem)@staticmethod # 静态方法def __game_over():"""结束游戏"""print('游戏结束')pygame.quit()exit()
if __name__ == "__main__":# 创建游戏对象plane_start = PlaneGame()# 启动游戏plane_start.StartGame()

上面是游戏实现功能的代码

import random
import pygame# 定义常量,一般使用大写字母'
# 屏幕大小常量
SCREEM_RECT = pygame.Rect(0, 0, 591, 764)
# 刷新的帧率
SHUA = 60
# 设置敌机定时器事件常量
CREATE_ENEMY_EVENT = pygame.USEREVENT
# 设置英雄子弹定时器事件常量
HERO_FIRE_EVENT = pygame.USEREVENT + 1  # 因为 pygame.USEREVENT 被占用,所以需要加1进行区分class GameSprite(pygame.sprite.Sprite):"""飞机大战游戏精灵"""def __init__(self, image_name, speed = 1):# 需要调用超级初始化方法super().__init__()# 定义属性self.image = pygame.image.load(image_name)  # 加载图像self.rect = self.image.get_rect()  # 获取到图像位置变更的信息self.speed = speed  # 设置变更的速度def update(self):# 在屏幕垂直向上移动self.rect.y += self.speed# 创建一个子类,完成屏幕需求
class BackGround(GameSprite):"""游戏背景精灵"""# is_alt 判断参数def __init__(self, is_alt= False):# 调用父类初始化方法设置参数super().__init__('./images/background.jpg')# 判断是否是叠加图像if is_alt:self.rect.y = -self.rect.heightdef update(self):# 调用父类的方法super().update()# 2.判断是否移出屏幕,移出屏幕,重新设置到屏幕上方if self.rect.y >= SCREEM_RECT.height:self.rect.y = -self.rect.height# 创建敌机类
class Enemy(GameSprite):def __init__(self):# 1.调用父类方法,创建敌机精灵,同时指定敌机图片super().__init__('./images/enemy_2.jpg')# 2.指定敌机的初始随机速度self.speed = random.randint(1, 3)# 3.指定敌机的初始随机位置self.rect.bottom = 0max_x = SCREEM_RECT.width - self.rect.width  # 计算x的最大值self.rect.x = random.randint(0, max_x)def update(self):# 调用父类方法,保持垂直飞行super().update()# 判断是否非常屏幕,是,则删除精灵组if self.rect.y >= SCREEM_RECT.height + self.rect.height:# kill 方法可以将精灵从精灵组中移除,精灵就会被自动销毁self.kill()def __del__(self):# print('%s' % self.rect)pass# 创建英雄类
class Hero(GameSprite):def __init__(self):# 1.调用父类中的初始方法,加载图片super().__init__('./images/planeNormal_2.jpg', 0)# 2.重新设置位置self.rect.centerx = SCREEM_RECT.centerxself.rect.bottom = SCREEM_RECT.bottom - 80# 创建子弹组self.bullets = pygame.sprite.Group()def update(self):self.rect.x += self.speed# 控制屏幕不会出界if self.rect.x <= -30:self.rect.x = -30elif self.rect.right >= SCREEM_RECT.right + 30:self.rect.right = SCREEM_RECT.right + 30def fire(self):# 设置每次发射三枚子弹for i in (0, 1, 2):# 1.创建子弹精灵bullet = Bullet()# 2.设置精灵位置bullet.rect.bottom = self.rect.y - i * 24bullet.rect.centerx = self.rect.centerx# 3.将精灵添加到精灵组self.bullets.add(bullet)
# 创建子弹类
class Bullet(GameSprite):def __init__(self):# 调用父类方法super().__init__('./images/bullet2.jpg', -3)def update(self):super().update()if self.rect.bottom < 0:self.kill()

上面是每个精灵实现的代码,改代码段命名为 plane_Sprite,作为一个模块在功能实现代码中被引用,上面代码用到的图片需要自己找

        【代码实现效果】

 


http://chatgpt.dhexx.cn/article/cHGUKA8X.shtml

相关文章

Py之pygame:Python的pygame库的简介、安装、使用方法详细攻略

Py之pygame&#xff1a;Python的pygame库的简介、安装、使用方法详细攻略 目录 pygame库的简介 pygame库的安装 pygame库的使用方法 pygame库的简介 PyPoice是SDL多媒体库的Python包装模块。它包含Python函数和类&#xff0c;这些类和类允许使用SDL对CDROM、音频和视频输出、…

python3安装pygame出错(输入“pip3 install pygame“,安装pygame模块报错)

使用pip3 install pygame,安装出错 自己已经更换源镜像&#xff0c;但总是在执行到最后一步的时候报错&#xff0c;通过网上的方法安装&#xff0c;总是出现两个配置无法被找到&#xff0c;向下执行的时候出现错误&#xff0c;最后以第一种方式安装成功。 执行&#xff1a; p…

【Pygame基本使用】

pygame是什么 pygame是跨平台Python模块&#xff0c;专门为电子游戏设计&#xff0c;包含图像、声音等&#xff1b;简单的说它是别人已经编写好的程序&#xff0c;并放在了一个类似库里&#xff0c;专门给别人使用的&#xff1b; pygame的图形接口 https://www.jianshu.com/p…

python Pygame的具体使用讲解

一、实验介绍 1.1 实验内容 在本节课中&#xff0c;我们将讲解Pygame的常用对象及其操作&#xff0c;包括图形、动画、文字、音频等&#xff0c;确保同学们对Pygame有一个基础的了解&#xff0c;同时为后续课程做好准备。 Pygame图形Pygame动画Pygame文字Pygame音频Pygame事…

Pygame 官方文档 - 中译版

pygame 文档 Pygame之家【Pygame Home】 帮助内容【Help Contents】 指导索引【Reference Index】最有用的东西 【Most useful stuff】Color | display | draw | event | font | image | key | locals mixer | mouse | Rect | Surface | time | music | pygame 高级的东西【…

pygame入门

pygame入门 文章目录 pygame入门说明一、pygame的安装二、pygame模块概览三、pygame的“hello world”四、事件理解事件事件检索处理鼠标事件处理键盘事件事件过滤产生事件 五、显示全屏显示改变窗口尺寸复合模式其他 六、字体创建font对象使用字体中文字体 七、颜色八、图像使…

pygame下载(非常详细)

pygame安装 第一次安装pygame&#xff0c;从网上查了很多资料&#xff0c;各种方式都有&#xff0c;我发现了一种很简单的方法&#xff0c;不用去官网找&#xff0c;直接输入命令就能下载&#xff0c;希望能给大家提供一些参考&#xff01; 打开终端 1、winR 打开终端&#…

Pygame是什么

Python 是当下最为火热,且功能最为全面的一门编程语言。Python 之所以深受大家喜爱, 除了可以被应用到“人工智能”领域之外,还可以延伸到数据分析、Web 开发、自动化测试、自然语言处理、游戏开发等各个领域。这一切的实现得益于 Python 有一个强大的第三方库,这个第三方库…

【pygame游戏开发】这几个经典游戏,勾起了少年的快乐

给大家分享几个好玩有趣的小游戏&#xff0c;既提升了学习的兴趣&#xff0c;又提升了学习效率&#xff0c;告别枯燥的学习。 一、飞机大战 1、源码部分 模块导入 import sys import cfg import pygame from modules import *游戏界面 def GamingInterface(num_player, scr…

python-颜色识别

使用Python来做颜色识别&#xff0c;使用了openCV import cv2 import numpy as np import time class ColorTac(object):def colorTacing(self):print(-*-COLOR TACKING MODE-*-)print(you can input:blue,red,yellow,green,purple.and must input one)color input("Col…

android颜色识别

写的一个关于颜色识别的小功能。识别主要颜色。 思路&#xff1a;遍历像素点&#xff0c;找出出现次数最多的像素值作为主要颜色。 采用的方法有&#xff1a; 1.调用摄像头&#xff0c;拍照&#xff0c;裁剪&#xff0c;压缩。 2.找出色值。 3.转换成hsv空间&#xff0c;进行颜…

颜色及图片识别原理,颜色识别传感器介绍

光及颜色 1.光&#xff1a;是人类眼睛可以看见的一种电磁波&#xff0c;也称可见光谱。在科学上的定义&#xff0c;光是指所有的电磁波谱。光是由光子为基本粒子组成&#xff0c;具有粒子性与波动性&#xff0c;称为波粒二象性&#xff0c;一般人的眼睛所能接受的光的波长在380…

颜色识别总结

颜色检测 1、目标检测detr 【End-to-End Object Detection with Transformers】 论文解读 源码复现 2、目标检测deformable detr 【DEFORMABLE DETR: DEFORMABLE TRANSFORMERS FOR END-TO-END OBJECT DETECTION】 论文解读 源码复现 3、目标检测mmdet中的deformable detr …

Python-OpenCV实现简单的颜色识别(对红色和蓝色识别并输出)

摄像头识别红色和蓝色并框选&#xff0c;当该颜色为摄像头屏幕上大多数颜色时打印出该颜色的名称 新手学习笔记&#xff0c;第一次写博客&#xff0c;若有错误还请指出&#xff08; ~_ &#xff09;~ 1.调包 import cv2 import numpy as np from matplotlib import pyplot as…

Python3识别判断图片主要颜色并和颜色库进行对比的方法

【更新】主要提供两种方案&#xff1a; 方案一&#xff1a;&#xff08;参考网上代码&#xff0c;感觉实用性不是很强&#xff09;使用PIL截取图像&#xff0c;然后将RGB转为HSV进行判断&#xff0c;统计判断颜色&#xff0c;最后输出RGB值 方案二&#xff1a;使用opencv库函…

【Python 之HSV颜色识别】

Python 之HSV颜色识别 前言一、HSV颜色模型二、黄色识别三、使用步骤1.引入库2.处理图片3.识别结果 总结 前言 汽车自动驾驶&#xff0c;需要颜色识别&#xff0c;如黄色/红色车道线&#xff0c;蓝色车牌。 本文从HSV颜色模型出发&#xff0c;提供一种识别黄色车道线的方法供参…

OpenCV识别图像中的颜色

OpenCV识别图像中的颜色 利用OpenCV识别图像中区域的颜色 效果如图所示&#xff1a; 代码中需要读取的图像RGB对照表&#xff1a; 代码中所需读取的BGR对照表在此下载&#xff1a;图像RBG对照表 import cv2 import pandas as pdimg_path "./rgb_pic/color.jpg" i…

openCV python 颜色识别

图像识别 这个代码的功能是根据摄像头输入的图像&#xff0c;识别红色块&#xff0c;绿色块的坐标&#xff0c;并返回红绿色块的中心点的图像坐标&#xff08;单位为像素&#xff09; 当然&#xff0c;识别色可以自己更改&#xff0c;如蓝色&#xff0c;白色&#xff0c;黑色…

K210视觉体验—颜色识别

K210视觉体验—颜色识别 使用设备ZTFR开发板 颜色识别Lab 颜色空间构造函数示例代码1&#xff1a;识别RGB&#xff08;红&#xff0c;绿&#xff0c;蓝&#xff09;示例代码2&#xff1a;识别指定颜色 使用设备 ZTFR开发板 颜色识别 MaixPy 集成了 RGB565 颜色块识别 find_blo…

Halcon 学习笔记八:颜色识别

Halcon 学习笔记八&#xff1a;颜色识别 一、图像处理需要的知识二、图像处理的预处理和分割过程二、颜色识别的方法三、例子一四、例子二五、例子三 一、图像处理需要的知识 1.图像处理基础&#xff08;rgb(hsv),gray&#xff09; 2.图像灰度变换(scale_img) 3.图像基础(emph…