首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pygame用鼠标点击添加对象

pygame用鼠标点击添加对象
EN

Stack Overflow用户
提问于 2020-03-05 01:54:09
回答 1查看 129关注 0票数 0

正在尝试使用鼠标单击来添加更多的boids。

代码语言:javascript
复制
elif event.type == pygame.MOUSEBUTTONUP:
         self.boids_group.add(boids.Boids(rect=pygame.Rect(random()*self.width, random()*self.height, 40, 40)))

我得到一个错误消息,Boids中没有object Boids,然而这是我在开始时向游戏添加boids的方法。

代码语言:javascript
复制
self.boids_group = pygame.sprite.Group()
        for i in range(cfg.boidNum):
            self.boids_group.add(boids.Boids(rect=pygame.Rect(random()*self.width, random()*self.height, 40, 40)))

cfg.boidNum在开始时被设置为19,它添加了19个boids,但当我按下鼠标按钮时不会添加更多boids。

如果有人能给我指引正确的方向……

EN

回答 1

Stack Overflow用户

发布于 2020-03-05 08:12:26

当我尝试运行时,我得到的错误消息是:第69行,Boids中没有object Boids,第69行引用鼠标输入行。

代码语言:javascript
复制
#!/usr/bin/env python
from random import random
from pygame.locals import *
import boids, predator, diver, pygame, sys
import config as cfg

bgimage = pygame.image.load("ramfjord.png")

class Ramfjorden:

    def __init__(self, width=1024, height=760):
        pygame.init()
        self.width = width
        self.height = height
        self.screen = pygame.display.set_mode((self.width, self.height))
        pygame.display.set_caption('Ramfjorden')

    def loadSprites(self):

        self.predator_group = pygame.sprite.Group()
        for i in range(cfg.predatorNum):
            self.predator_group.add(predator.Predator(rect=pygame.Rect(random()*self.width, random()*self.height, 70, 70)))

        self.boids_group = pygame.sprite.Group()
        for i in range(cfg.boidNum):
            self.boids_group.add(boids.Boids(rect=pygame.Rect(random()*self.width, random()*self.height, 40, 40)))

        self.diver_group = pygame.sprite.Group()
        self.diver_group.add(diver.Diver(rect=pygame.Rect(300, 300, 150, 231)))

    def collision(self, sprite1, sprite2):
        if sprite1 == sprite2:
            return False
        else:
            return pygame.sprite.collide_circle(sprite1, sprite2)

    def mainLoop(self):
        fps = pygame.time.Clock()
        self.loadSprites()

        while True:
            self.screen.blit(bgimage, (0,0))
            self.predator_group.draw(self.screen)
            self.boids_group.draw(self.screen)
            self.diver_group.draw(self.screen)

            for predator in self.predator_group.sprites():
                predator.update(ramfjord=self)
            for boids in self.boids_group.sprites():
                boids.update(ramfjord=self)

            for predator in self.predator_group.sprites():
                predator.swim(ramfjord=self)                
            for boids in self.boids_group.sprites():
                boids.swim(ramfjord=self)

            spriteHitList = pygame.sprite.groupcollide(self.predator_group, self.boids_group, False, True, collided=self.collision)

            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    exit()
                    sys.exit()

                elif event.type == KEYDOWN:
                    if event.key == K_ESCAPE:
                        pygame.event.post(pygame.event.Event(QUIT))

                elif event.type == pygame.MOUSEBUTTONUP:
                    self.boids_group.add(boids.Boids(rect=pygame.Rect(random()*self.width, random()*self.height, 40, 40)))

            pygame.display.update()
            fps.tick(30)  


def main():
    ramfjord = Ramfjorden()
    ramfjord.mainLoop()

if __name__ == "__main__":
    main()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60531991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档