精华内容
下载资源
问答
  • 有多个类继承了Sprite,请问使用group = pygame.sprite.Group()怎么知道创建的是哪个精灵的编组啊?
  • pygame

    2021-04-25 23:12:51
    (1)pygame——2D游戏开发工具包 (2)安装:>>> pip install pygame >>>import pygame (3)帮助文档:https://www.pygame.org/docs/ (4)Hello World 引入相关包:import pygame, sys等 初始...

    1、介绍及安装
    (1)pygame——2D游戏开发工具包

    (2)安装:>>> pip install pygame >>>import pygame

    (3)帮助文档:https://www.pygame.org/docs/

    (4)Hello World
    引入相关包import pygame, sys
    初始化pygame.init()
    得到窗口 pygame.Surface对象pygame.display.set_mode((400,300))
    游戏主循环:处理游戏事件 — 更新游戏状态 — 在屏幕上绘制
    游戏事件for event in pygame.event.get(): #退出游戏事件 if event.type == QUIT: pygame.quit() sys.exit()

    示例:

    # 引入相关的包
    import sys, pygame
    
    # 进行初始化操作
    pygame.init()
    
    size = width, height = 320, 240
    speed = [2, 2]
    black = 0, 0, 0
    
    # 得到初始化对象
    screen = pygame.display.set_mode(size)
    
    ball = pygame.image.load("intro_ball.gif")
    ballrect = ball.get_rect()
    
    # 游戏主循环
    while 1:
        # 处理游戏事件
        for event in pygame.event.get():
            if event.type == pygame.QUIT: sys.exit()
    
        # 更新游戏状态
        ballrect = ballrect.move(speed)
        if ballrect.left < 0 or ballrect.right > width:
            speed[0] = -speed[0]
        if ballrect.top < 0 or ballrect.bottom > height:
            speed[1] = -speed[1]
    
        #在屏幕上进行绘制
        screen.fill(black)
        screen.blit(ball, ballrect)
        pygame.display.flip()
    

    2、文字及颜色
    (1)游戏中的文字
    在这里插入图片描述

    import pygame, sys
    
    pygame.init()
    
    screen = pygame.display.set_mode((500,500))
    
    red = pygame.Color(255, 0 ,0)
    # 加载字体
    font = pygame.font.get_fonts()
    # print(font)
    
    # 方式一:使用系统默认的字体进行加载
    #font = pygame.font.SysFont('华文新魏', 40)
    # 方式二:自己准备好一个字体文件ttf,放到咱们的项目里面
    font = pygame.font.Font('simhei.ttf',40)
    # 文字对象 得到surface对象
    text = font.render('得分', True, red)
    # 文字加载
    
    
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
    # 在屏幕上绘制
        screen.blit(text, (20, 20))
        pygame.display.flip()
    

    (2)游戏中的颜色:
    使用RGB表示:取值范围: 0-255
    RGBA表示透明色:A(alpha):0-255

    线:

    import sys, pygame
    
    # 初始化pygame
    pygame.init()
    
    # 屏幕对象
    screen = pygame.display.set_mode((500, 500))
    
    # 加载图片
    ball = pygame.image.load('./static/intro_ball.gif')
    
    # 红色
    red = pygame.Color(255, 20, 255)
    
    # 游戏主循环
    while True:
        # 处理事件
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
        # 更新状态
    
        # 画线
        pygame.draw.line(screen, red, (10, 10), (200, 200), 10)
    
        # 画矩形
        pygame.draw.rect(screen, red, (10, 20, 200, 300), 10)
    
        # 画圆
        pygame.draw.circle(screen, red, (100, 100), 50, 5)
    
        # 绘制
        screen.blit(ball, (100, 100))
        pygame.display.flip()
    
    

    3、游戏中的图片
    图片加载:bg = pygame.image.load('bg.png')
    在屏幕上绘制:screen.blit(bg,bg.get_rect())

    4、游戏音效
    在这里插入图片描述

    5、动画切换
    在这里插入图片描述

    6、精灵及精灵组
    精灵:精灵可以认为是一个个小图片,一种可以在屏幕上移动的图形对象,并且可以与其他图形对象交互。精灵图像可以是使用pygame绘制函数绘制IDE图像,也可以是原来就有的图像文件

    精灵组:是一个容器,用于管理组内精灵的绘制和更新

    7、碰撞检测
    两个精灵之间的矩形检测:pygame.sprite.collide_rect(sprite_1,sprite_2 pygame.sprite.collide_rect_ratio(0.5)(sprite_1,sprite_2

    两个精灵之间的圆形检测:pygame.sprite.collide_circle(sprite_1,sprite_2)

    两个精灵之间的像素遮罩检测:pygame.sprite.collide_mask(sprite_1,sprite_2)

    精灵和精灵组之间的碰撞检测:pygame.sprite.spritecollideany(sprite,sprite_group,bool)

    # 1.引入相关的包
    import sys, pygame
    
    # 2. pygame进行初始化
    pygame.init()
    
    size = width, height = 320, 240
    speed = [2, 2]
    black = 0, 0, 0
    
    # 3. 得到屏幕对象Surface
    screen = pygame.display.set_mode((320, 240))
    
    
    class Block(pygame.sprite.Sprite):
    
        # Constructor. Pass in the color of the block,
        # and its x and y position
        def __init__(self, color, width, height, init_pos):
            # Call the parent class (Sprite) constructor
            pygame.sprite.Sprite.__init__(self)
    
            # Create an image of the block, and fill it with a color.
            # This could also be an image loaded from the disk.
            self.image = pygame.Surface([width, height])
            self.image.fill(color)
    
            # Fetch the rectangle object that has the dimensions of the image
            # Update the position of this object by setting the values of rect.x and rect.y
            self.rect = self.image.get_rect()
            self.rect.topleft = init_pos
    
    
    # 实例化精灵对象
    sprite_1 = Block(pygame.Color(255, 0, 0), 50, 50, (50, 50))
    sprite_2 = Block(pygame.Color(0, 255, 0), 50, 50, (90, 90))
    
    
    # 4. 游戏主循环
    while 1:
    
        # 处理游戏的事件
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
    
        # 往屏幕上画精灵
        screen.blit(sprite_1.image, sprite_1.rect)
        screen.blit(sprite_2.image, sprite_2.rect)
    
        # 矩形检测碰撞
        rest = pygame.sprite.collide_rect(sprite_1, sprite_2)
        print('rest', rest)
        # 链式调用
        rest2 = pygame.sprite.collide_rect_ratio(0.5)(sprite_1, sprite_2)
        print('rest2', rest2)
    
        pygame.display.flip()
    
    
    展开全文
  • Group 编组中,update()方法调用的是类中对应的update()方法,即类中一定要有update()才能在Group中调用update(),名称要对应 而draw()方法不同,它不需要类中有对应的函数名称,直接使用Group调用即可...

        Group 编组中,update()方法调用的是类中对应的update()方法,即类中一定要有update()才能在Group中调用update(),名称要对应

                                 而draw()方法不同,它不需要类中有对应的函数名称,直接使用Group调用即可,功能和非编组中的blitme(self)类似,都是重新在屏幕上绘制对象。

     

    def blitme(self):
        self.screen.blit(self.image,self.rect)
    

     

    展开全文
  • 说明: 1.以下所用的Group均为Group类的对象实例 2.Group类是对AbstractGroup类的继承 sprite.py文档中描述如下: class Group(AbstractGroup): ... pygame.sprite.Group(*sprites): return...

    说明:

    1.以下所用的Group均为Group类的对象实例

    2.Group类是对AbstractGroup类的继承

    sprite.py文档中描述如下:

    class Group(AbstractGroup):
        """container class for many Sprites
    
        pygame.sprite.Group(*sprites): return Group
    
        A simple container for Sprite objects. This class can be subclassed to
        create containers with more specific behaviors. The constructor takes any
        number of Sprite arguments to add to the Group. The group supports the
        following standard Python operations:
    
            in      test if a Sprite is contained
            len     the number of Sprites contained
            bool    test if any Sprites are contained
            iter    iterate through all the Sprites
    
        The Sprites in the Group are not ordered, so the Sprites are drawn and
        iterated over in no particular order.
    
        """
        def __init__(self, *sprites):
            AbstractGroup.__init__(self)
            self.add(*sprites)
    

     

     

    方法一:Group.draw(surface)

    说明:对精灵组中的每一个精灵依次调用surface.blit(),依次将精灵组中的精灵绘制在surface上

    AbstractGroup类中对其的定义:

        def draw(self, surface):
            """draw all sprites onto the surface
    
            Group.draw(surface): return None
    
            Draws all of the member sprites onto the given surface.
    
            """
            sprites = self.sprites()
            surface_blit = surface.blit
            for spr in sprites:
                self.spritedict[spr] = surface_blit(spr.image, spr.rect)
            self.lostsprites = []

     

    方法二:Group.update()

    说明:对精灵组中的每一个精灵依次调用update()方法,并且update()方法需要自己在自己定义的精灵类中去实现

    AbstractGroup类中对其的定义:

     

        def update(self, *args):
            """call the update method of every member sprite
    
            Group.update(*args): return None
    
            Calls the update method of every member sprite. All arguments that
            were passed to this method are passed to the Sprite update function.
    
            """
            for s in self.sprites():
                s.update(*args)

     

    转载于:https://www.cnblogs.com/huwt/p/10333500.html

    展开全文
  • 在使用pygame.sprite里面的group对象时,如果要对group列表中的每一个对象进行同样的方法(method)调用,普适的代码块如下: for sprite in group.sprites(): sprite.method() #实例 for laser in lasers....

    在使用pygame.sprite里面的group对象时,如果要对group列表中的每一个对象进行同样的方法(method)调用,普适的代码块如下:

    for sprite in group.sprites():
        sprite.method()
    
    #实例
    for laser in lasers.sprites():
        laser.blitme()
    

    上例中lasers是基于laser的一个group对象,blitme()是laser里面自主定义的一个method。

    但是,有一些特殊的方法,可以直接用group.method()的形式对group里面的每一个sprite进行操作,比如update()方法。

    # 用法
    # 代码1
    group.update()
    # 代码2
    for sprite in group.sprites():
        sprite.update()
    
    # 实例
    # 代码1
    lasers.update()
    # 代码2
    for laser in lasers.sprites():
        laser.update()
    

    上述用法以及实例中的代码1和代码2是等效的。需要指出的是,方法update()需要我们在编写具体sprite子类的过程中自己去定义。

     

    pygame.sprite.group中的另一个值得注意的method是draw(surface),利用代码group.draw()可以直接将group里面的每一个sprite对象在surface上通过surface.blit()操作进行绘制,见下例。

    # 用法
    # 代码1
    group.draw(surface)
    # 代码2
    for sprite in group.sprites():
        surface.blit(sprite.image, sprite.rect)
    
    # 用法
    # 代码1
    aliens.draw(screen)
    # 代码2
    for alien in aliens.sprites():
        screen.blit(alien.image, alien.rect)

    上述的draw(surface)的方法是pygame.sprite里面自定义的,不需要我们在编写具体的sprite子类时,自己去定义。

    展开全文
  • #Pygame中的 AttributeError: ‘Group’ object has no attribute 'rect’ 在使用Pygame编写程序时,会需要检测两个物体碰撞,如果这两个物体的一个是精灵(单个物体),一个是组,会使用到函数pygame.sprite....
  • pygame模块

    2019-03-06 14:33:45
    pygame.init() — 初始化所有导入的 pygame 模块 pygame.quit() — 卸载所有导入的 pygame 模块 pygame.error() — 标准 pygame 异常模块 pygame.get_error() — 获得当前错误信息 pygame.set_error() — 设置当前...
  • Pygame 官方文档 - pygame.sprite

    千次阅读 多人点赞 2019-03-06 10:23:27
    pygame.sprite 带有基本游戏对象类的pygame模块 pygame.sprite.Sprite - 可见游戏对象的简单基类。...pygame.sprite.Group - 用于保存和管理多个Sprite对象的容器类。 pygame.sprite.RenderPlain - 与pyga...
  • 【Python】Pygame.sprite中Group对象的特殊方法 在使用pygame.sprite里面的group对象时,如果要对group列表中的每一个对象进行同样的方法(method)调用,普适的代码块如下: for sprite in group.sprites(): ...
  • 雷电pygame代码

    2021-09-04 20:08:23
    import pygame, os ...from pygame.sprite import Group def fire_music(): pass # 设置开火音乐 # effect = pygame.mixer.Sound('sounds/fire.wav') # pygame.mixer.Sound.play(effect) class Boss(S.
  • Pygame项目

    2019-10-03 09:57:56
    一、利用Pygame 画一个大白 import pygame import random pygame.init() screen=pygame.display.set_mode((480,600)) pygame.display.set_caption("Baymax") screen.fill((250,50,50)) pygame.draw.circle(screen,...
  • Python pygame

    2019-03-08 13:58:21
    1.安装Pygame模块 pygame 就是一个 Python 模块,专为电子游戏设计 网站栏目内容 GettingStarted在各平台安装模块的说明 Docspygame 模块所有 类 和 子类 的参考手册 安装 pygame(pip install pygame...
  • pygame碎碎念

    2018-11-25 08:27:32
    对于一个对象要创建多次(像子弹)可以用pygame.Group生成的对象来实现 通过按下按键触发事件,再通过事件生成对象放入group生成的对象中 再通过gourp生成对象的update()方法,表示调用每个成员各自的update()方法来...
  • Pygame模块

    2019-12-18 20:26:09
    pygame模块 这个是python的一个模块,属于第三方的 所以需要导入 1.步骤: 首先win+r 回车 在命令窗口输入pip install pygame 等待下载就行了 2.这个模块是写像 坦克大战 植物大战僵尸的这类游戏的 3.学习这个主要...
  • pygame 模块

    2019-08-01 09:31:14
    简单的pygame pygame.init() #初始函数,使用pygame的第一步; pygame.display.set_mod((600,500),0,32) #生成主屏幕screen;第一个参数是屏幕大小,第二个0表示不使用特性,可用FULLSCREEN,RESIZEBLE,NOFRAME,...
  • pygame基础教程

    2021-08-27 16:17:15
    pygame 对象 屏幕对象 按键对象 精灵sprite对象 碰撞 collide Group管理 未完 持续更新 实例 实例1: 飞机导弹
  • pygame总结

    2019-10-07 19:54:09
    要使用pygame提供的所有功能之前,需要调用init方法 在游戏结束前需要调用一下quit方法 import pygame pygame.init() # 游戏代码... pygame.quit() 1.2 坐标系 原点 在 左上角 (0, 0) x 轴水平方向向右,...
  • 【Python】Pygame.sprite中Group对象的特殊方法 在使用pygame.sprite里面的group对象时,如果要对group列表中的每一个对象进行同样的方法(method)调用,普适的代码块如下: for sprite in group.sprites(): ...
  • pygame Sprited类3

    2021-01-26 21:34:14
    Group # coding: utf-8 # 作者:爱编程的章老师 # 创建:2021/1/26 8:46 下午 # 邮箱:slxxf000@163.com # 微信:slxxfl # 微信公众号:A卫隆少儿编程 # 格言:给自己的生活增加一份向上的力,每都进步一点点 import ...
  • pygame系列文章

    千次阅读 2017-06-22 11:12:03
    转自小五义大牛的pygame系列文章,很不错 pygame学习笔记(1)——安装及矩形、圆型画图  pygame是一个设计用来开发游戏的python模块,其实说白了和time、os、sys都是一样的东东。今天开始正式学习...
  • from pygame.sprite import Group from snake import Snake, Body from fruit import Fruit import game_functions as gf from time import sleep def run_game(): pygame.init() screen = pygame.display.set_...
  • pygame 的bug小游戏
  • pygame快速入门

    2021-02-03 12:47:21
    最近学习pygame了模块,由于官方文档全英文,翻译阅读不是很友好,于是在网上找到很多pygame模块的知识分享,简要总结在这里,希望对一起学习的小伙伴有所帮助。 (1)微信公众号:娜译站(有比较详细的pygame教程并...
  • 【代码】pygame学习

    万次阅读 2019-04-15 11:17:38
    文章目录效果图代码知识点Bli...import pygame import random from pygame.locals import * # Pygame 提供一个叫做 Sprites 的基础类,为了画图。Surface 看作一张白纸,Rects 是 Surface 中矩形区域的表示。 class...
  • Pygame库汇总

    千次阅读 多人点赞 2020-05-21 10:31:09
    Python中的Pygame库各个模块、方法的使用
  • pygame发射子弹

    2021-03-04 00:33:23
    from pygame.sprite import Group bg_color = 230,230,230 class Ship: def __init__(self,screen): self.screen = screen self.image = pygame.image.load('images/ship.bmp').convert_alpha()
  • pygame是基于Python语言的游戏开发框架; 其底层核心算法来自C语言库的支持; 官方文档地址:http://www.pygame.org/docs/ @安装pygame pip install pygame @几个重要概念 Surface:表面,pygame框架中的...
  • pygame之外星人入侵

    2020-03-23 13:46:33
    主程序alien_vasion import pygame import sys from settings import Settings from ship import Ship ...from pygame.sprite import Group from game_stats import GameStats from button impor...
  • pygame动画3

    2020-05-15 21:24:00
    import pygame import random from pygame import * from sys import exit WIDTH, HEIGHT = 600, 480 FPS = 30 jet_image = "D:\\workspace\\game\\data\\jet.png" cloud_image = "D:\\workspace\\game\\data\\...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,219
精华内容 1,287
关键字:

grouppygame