图像未在开始菜单中掉落。Pygame

达维德·格鲁巴(Dawid Grubba)

我在这里有以下代码,在开始菜单中,我想让一些图像从天上掉下来,但不起作用。我尝试了很多东西,但是没有用。

这是代码:

import pygame
import random

pygame.init()

display_width= 1000
display_height= 600

black = (0,0,0)
white = (255, 255, 255)
blue = (0, 0, 112)

x=0
y=0

gameDisplay = pygame.display.set_mode((display_width, display_height))
pygame.display.set_caption("Name")

clock = pygame.time.Clock()

def text_objects(text, font, color):
    textSurface = font.render(text, True, color)
    return textSurface, textSurface.get_rect()

Stmenpic = pygame.image.load("Start_menu_sky_back_ground.png")

def StartMenPic(x,y):
    gameDisplay.blit(Stmenpic, (x,y) )

def Title_Of_Game(text):
    Title_Text = pygame.font.Font("ARDESTINE.ttf", 115)
    TextSurf, TextRect = text_objects(text, Title_Text, blue)
    TextRect.center = ((500),(100))
    gameDisplay.blit(TextSurf, TextRect)

    pygame.display.update

Baby_1=pygame.image.load("Baby_1.png")

def things(x,y):
    gameDisplay.blit(Baby_1,(x, y ))

x_change = 0

def Title_of_Game():
    Title_Of_Game("Title")

def Start_Menu():

    StartMenu=True
    while StartMenu:
        x = 0
        y = 0
        x_change = 0

        thing_startx = random.randrange(0, display_width)
        thing_starty = -600
        thing_speed = 7
        thing_width= 30
        thing_height=30

        for event in pygame.event.get():
            #print(event)
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()

        Title_of_Game()
        x_change=0

        x+= x_change

        if thing_starty > display_height:
            thing_starty = 0 - thing_height
            thing_startx = random.randrange(0, display_width)

        pygame.display.update()
        clock.tick(60)

StartMenPic(0, 0)
Start_Menu()

pygame.quit()
quit()

这可能很明显,但是我只是刚起步,所以我需要很多帮助。感谢您在这个问题上的所有帮助。现在,我遇到了一个问题,它总是在随机的位置生成,但不会崩溃。

这是此代码的主要部分:

    pygame.init()

    display_width= 1000
    display_height= 600

    Startmenpic = pygame.image.load("Start_menu_sky_back_ground.png")
    stmenpic = pygame.Surface((30, 50))
def Start_Menu():
    thing_rect = pygame.Rect(random.randrange(display_width), -60, 30, 30)
    thing_speed = 7

    StartMenu = True

    while StartMenu:

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

        Title_of_Game()

        thing_rect.y += thing_speed

        if thing_rect.y > display_height:
            thing_rect.y = 0 - thing_rect.height
            thing_rect.x = random.randrange(display_width)

            gameDisplay.fill((30, 30, 30))
            gameDisplay.blit(stmenpic, thing_rect)
            pygame.display.update()
            clock.tick(60)

    StartMenPic(0, 0)
    pygame.display.update()
    Start_Menu()

    pygame.quit()
    quit()

    stmenpic.fill((0, 200, 50))
r

不要在while循环中定义位置和速度变量,否则它们将在每帧重置(循环迭代)。而是在循环外部定义它们,并通过增加速度来更改循环内部的位置。

我还建议使用一个pygame.Rect对象,而不是独立的thing_startxthing_startything_widththing_height变量:

# Pass the top left coordinates, the width and the height.
thing_rect = pygame.Rect(random.randrange(display_width), -60, 30, 30)

然后通过增加每帧的速度来更新其y坐标:

thing_rect.y += thing_speed

这是一个最小的完整示例:

import pygame
import random


pygame.init()

display_width = 1000
display_height = 600

gameDisplay = pygame.display.set_mode((display_width, display_height))
clock = pygame.time.Clock()

stmenpic = pygame.Surface((30, 50))
stmenpic.fill((0, 200, 50))


def start_menu():
    thing_rect = pygame.Rect(random.randrange(display_width), -60, 30, 30)
    thing_speed = 7

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

        # Move the rect downwards.
        thing_rect.y += thing_speed
        # Reset the position of the rect when it leaves the screen.
        if thing_rect.y > display_height:
            thing_rect.y = 0 - thing_rect.height
            thing_rect.x = random.randrange(display_width)

        gameDisplay.fill((30, 30, 30))
        gameDisplay.blit(stmenpic, thing_rect)  # Blit the image at the rect.
        pygame.display.update()
        clock.tick(60)


start_menu()
pygame.quit()

如果您想要多个下落的物体,只需将一些矩形放入列表中并使用for循环来更新和绘制它们。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章