gpt4 book ai didi

python - 图像没有落在开始菜单中。 pygame

转载 作者:行者123 更新时间:2023-12-01 01:38:33 27 4
gpt4 key购买 nike

我这里有这段代码,在开始菜单中我想要一些图像从天而降,但它不起作用。我尝试了很多方法,但没有成功。

这是代码:

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()

这可能非常明显,但我才刚刚开始,所以我需要很多帮助。感谢您对这个问题的所有帮助。现在我遇到了该 block 的问题,它总是在随机位置生成但不会下降。

这是这段代码的主要部分:

    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))

最佳答案

不要在 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 循环来更新和绘制它们。

关于python - 图像没有落在开始菜单中。 pygame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52154951/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com