首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用MOUSEBUTTONDOWN将对象追加到列表

尝试使用MOUSEBUTTONDOWN将对象追加到列表
EN

Stack Overflow用户
提问于 2018-02-28 07:38:34
回答 1查看 27关注 0票数 1

我正在制作boids的一个版本,并试图通过使用pygames MOUSEBUTTONDOWN函数将boid添加到列表中。在某种程度上,它工作得很好。我想让它添加对象的一个实例,但当我左键单击时,它会添加很多实例。

代码语言:javascript
复制
from precode import *
from config import *
import pygame as pg
from boids import Boid
from obstacle import Obstacle

def boids():
screen_res = (SCREEN_W,SCREEN_H)
pg.init()
screen = pg.display.set_mode(screen_res)
clock = pg.time.Clock()
boids = []
obstacles = []
while True:
    for event in pg.event.get():
        if event.type == pg.QUIT or event.type == pg.KEYDOWN:
            if event.key == pg.K_ESCAPE:
                exit()
    pg.draw.rect(screen, (0,0,0), (0, 0, screen.get_width(), screen.get_height()))
    time_passed = clock.tick(60) # limit to 60FPS
    time_passed_seconds = time_passed / 1000.0   # convert to seconds


    if event.type == pg.MOUSEBUTTONDOWN and event.button == LEFT:
        x, y = pg.mouse.get_pos()
        obstacles.append(Obstacle(screen, Vector2D(x,y)))
    for obstacle in obstacles:
        obstacle.draw()

    if event.type == pg.MOUSEBUTTONDOWN and event.button == RIGHT:
        x, y = pg.mouse.get_pos()
        boids.append(Boid(screen, Vector2D(x,y), Vector2D(10,5)))
    for boid in boids:
        boid.move()
        boid.draw()

    pg.display.update()
if __name__ == '__main__':
    boids()

boids和障碍物的类都是简单的类,如果需要,我可以添加它们。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-28 10:05:41

if event.type == pg.MOUSEBUTTONDOWN:子句应该在事件循环中。查看此版本是否按预期工作:

代码语言:javascript
复制
def boids():
    screen_res = (SCREEN_W, SCREEN_H)
    pg.init()
    screen = pg.display.set_mode(screen_res)
    clock = pg.time.Clock()
    boids = []
    obstacles = []

    while True:
        time_passed = clock.tick(60) # limit to 60FPS
        time_passed_seconds = time_passed / 1000.0   # convert to seconds

        # Handle the events.
        for event in pg.event.get():
            if event.type == pg.QUIT or event.type == pg.KEYDOWN:
                if event.key == pg.K_ESCAPE:
                    return
            elif event.type == pg.MOUSEBUTTONDOWN:
                if event.button == LEFT:
                    x, y = pg.mouse.get_pos()
                    obstacles.append(Obstacle(screen, Vector2D(x,y)))
                elif event.button == RIGHT:
                    x, y = pg.mouse.get_pos()
                    boids.append(Boid(screen, Vector2D(x,y), Vector2D(10,5)))

        # Insert game logic here.

        # Draw everything.
        pg.draw.rect(screen, (0,0,0), (0, 0, screen.get_width(), screen.get_height()))

        for obstacle in obstacles:
            obstacle.draw()

        for boid in boids:
            boid.move()
            boid.draw()

        pg.display.update()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49019719

复制
相关文章

相似问题

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