繁体   English   中英

如何在Pygame中连续移动图像

[英]How to continuously move an image in Pygame

我有一个用Pygame库用Python开发的游戏。 在其中,我有两个类,Main类,它使屏幕出现,使图像变暗,等等; Monster类,它创建和渲染我的怪物精灵,它们是:

主班:

import pygame, sys, random
from monster import *

pygame.init()

class Main:
    clock = pygame.time.Clock()

    screenSize = (500,500)
    background = pygame.image.load("C:/Users/Nathan/PycharmProjects/Monsters II A Dark Descent/images/background.jpg")

    screen = pygame.display.set_mode(screenSize)
    pygame.display.set_caption("MONSTERS!")

    monsters = pygame.sprite.Group()

    counter = 0

    x = 450
    while counter < 5:
            y = random.randint(50,450)
            monster = Monster(x,y)
            monsters.add(monster)
            counter = counter + 1

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

        screen.blit(background,(0,0))

        for monster in monsters:
            monster.render(screen)

        x=x-1 #This doesn't move the sprites

        clock.tick(60)

        pygame.display.flip()


Main()

怪物类:

import random, pygame

class Monster(pygame.sprite.Sprite):

    def __init__(self, x, y):
        pygame.sprite.Sprite.__init__(self)
        self.x = x
        self.y = y
        self.image = pygame.image.load("C:\Users\Nathan\PycharmProjects\Monsters II A Dark Descent\images\monster.png")

    def render(self, screen):
        screen.blit(self.image, (self.x, self.y))

我希望怪物连续向左移动一个随机的x值,直到它们撞到屏幕的另一侧。 在那之后,我希望他们传送回他们的起点,然后再做一次。 在主类中,我尝试在主循环中添加“ x = x + 1”,至少使它们移动一个,但是没有用。 我还尝试了使用“ x = x + 1”创建一个不同的循环,但没有成功。 如果您需要更多详细信息,请告诉我。 感谢您的时间。

您正在修改x变量,该变量仅用于创建对象。 要修改Monster对象的成员,您需要像这样更改它们:

monster.x += 1

我建议创建一个新功能,该功能将移动精灵并将其重置回原位。 遵循以下原则:

def move(self):
    if(self.x > 500):
        self.x = 0
    self.x += 1

在主循环中,您需要更新怪物中的x值。 您可以在遍历所有怪物的循环中执行此操作:

for monster in monsters:
    monster.x = monster.x-1
    monster.render(screen)

注意, monster.x表示更改此特定怪物的x值。 如果您只是做x ,python根本不知道您谈论怪物内部的x值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM