Python 3.x Python/Pygame将多个图像布点到列表坐标
所以我正在制作一个太空游戏,在那里你可以探索一个开放的世界(一个黑屏) 我想创建环绕宇宙的行星(从列表中) 这是我目前的代码Python 3.x Python/Pygame将多个图像布点到列表坐标,python-3.x,pygame,Python 3.x,Pygame,所以我正在制作一个太空游戏,在那里你可以探索一个开放的世界(一个黑屏) 我想创建环绕宇宙的行星(从列表中) 这是我目前的代码 star = pygame.image.load("star.png") planets = random.randrange(100,500) #<------#####NOT IMPORTANT####### positions = [(300,50),(400,27),(900,55)] #<------ position = () 它会闪动第一个
star = pygame.image.load("star.png")
planets = random.randrange(100,500) #<------#####NOT IMPORTANT#######
positions = [(300,50),(400,27),(900,55)] #<------
position = ()
它会闪动第一个或什么都没有,并且不会崩溃
为什么?
################################################-
如果有帮助的话,下面是完整的代码(这里有一些finish语言,希望不要麻烦)“ikkuna=屏幕(左、右)=(宽、高)Toiminassa=正在运行”
您将所有图像快速移动到完全相同的位置:
positions=[(300,50)]
,因此最后一张图像将覆盖所有其他图像。另外,您可能不知道这一点,但要在pygame
中显示任何内容,您必须在完成绘制后调用pygame.display.flip()
或pygame.display.update()
。我对你的代码做了一些修改,所以星星应该会出现:
import pygame
import random
import time
import sys
import math
def main():
pygame.init()
White = (255,255,255)
red = (255,0,0)
kello = pygame.time.Clock()
star = pygame.image.load("star.png")
planets = random.randrange(100,500)
positions = [(300,50), (310, 60), (320, 80), (607, 451), (345, 231)]
tausta_vari = (255,255,255)
(leveys, korkeus) = (1000, 1000)
ikkuna = pygame.display.set_mode((leveys, korkeus))
pygame.display.set_caption("SpaceGenerationTest")
######################################################################
toiminnassa = True
while toiminnassa:
for event in pygame.event.get():
if event.type == pygame.QUIT:
toiminnassa = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_g:
print("Generating World....")
print(planets)
ikkuna.fill((0, 0, 0)) # fill the screen with black
for position in positions:
ikkuna.blit(star, position)
print("Hello")
pygame.display.flip() # updating the screen
if __name__ == '__main__': # are we running this .py file as the main program?
try:
main()
finally:
pg.quit()
quit()
~Mr.Python您将所有图像快速移动到完全相同的位置:
位置=[(300,50)]
,因此最后一张图像覆盖了所有其他图像。另外,您可能不知道这一点,但要在pygame
中显示任何内容,您必须在完成绘制后调用pygame.display.flip()
或pygame.display.update()
。我对你的代码做了一些修改,所以星星应该会出现:
import pygame
import random
import time
import sys
import math
def main():
pygame.init()
White = (255,255,255)
red = (255,0,0)
kello = pygame.time.Clock()
star = pygame.image.load("star.png")
planets = random.randrange(100,500)
positions = [(300,50), (310, 60), (320, 80), (607, 451), (345, 231)]
tausta_vari = (255,255,255)
(leveys, korkeus) = (1000, 1000)
ikkuna = pygame.display.set_mode((leveys, korkeus))
pygame.display.set_caption("SpaceGenerationTest")
######################################################################
toiminnassa = True
while toiminnassa:
for event in pygame.event.get():
if event.type == pygame.QUIT:
toiminnassa = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_g:
print("Generating World....")
print(planets)
ikkuna.fill((0, 0, 0)) # fill the screen with black
for position in positions:
ikkuna.blit(star, position)
print("Hello")
pygame.display.flip() # updating the screen
if __name__ == '__main__': # are we running this .py file as the main program?
try:
main()
finally:
pg.quit()
quit()
~Mr.Python您的代码有一些问题:
pygame.display.update()
或pygame.display.flip()
更新屏幕import pygame
import random
pygame.init()
WHITE = (255, 255, 255)
RED = (255, 0, 0)
# I changed the background color to black, because I understood it as that is what you want.
BACKGROUND_COLOR = (0, 0, 0) # tausta_vari
clock = pygame.time.Clock() # kello
star = pygame.Surface((32, 32))
star.fill((255, 255, 255))
planets = random.randrange(100, 500)
positions = [(300, 50), (400, 27), (900, 55)]
WIDTH, HEIGHT = (1000, 1000) # (leveys, korkeus)
screen = pygame.display.set_mode((WIDTH, HEIGHT)) # ikkuna
pygame.display.set_caption("SpaceGenerationTest")
display_stars = False
running = True # toiminnassa
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_g:
print("Generating World....")
print(planets)
display_stars = True
screen.fill(BACKGROUND_COLOR)
if display_stars:
for position in positions:
# This will create 3 stars because there're 3 elements in the list positions.
# To create more stars you'll need to add more in the list positions.
screen.blit(star, position)
pygame.display.update()
您的代码存在一些问题:
pygame.display.update()
或pygame.display.flip()
更新屏幕import pygame
import random
pygame.init()
WHITE = (255, 255, 255)
RED = (255, 0, 0)
# I changed the background color to black, because I understood it as that is what you want.
BACKGROUND_COLOR = (0, 0, 0) # tausta_vari
clock = pygame.time.Clock() # kello
star = pygame.Surface((32, 32))
star.fill((255, 255, 255))
planets = random.randrange(100, 500)
positions = [(300, 50), (400, 27), (900, 55)]
WIDTH, HEIGHT = (1000, 1000) # (leveys, korkeus)
screen = pygame.display.set_mode((WIDTH, HEIGHT)) # ikkuna
pygame.display.set_caption("SpaceGenerationTest")
display_stars = False
running = True # toiminnassa
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_g:
print("Generating World....")
print(planets)
display_stars = True
screen.fill(BACKGROUND_COLOR)
if display_stars:
for position in positions:
# This will create 3 stars because there're 3 elements in the list positions.
# To create more stars you'll need to add more in the list positions.
screen.blit(star, position)
pygame.display.update()
它只显示第一个坐标,或者什么都不显示:所以当你多次运行它时,有时它会在第一个坐标上渲染一个行星,而有时它不会?顺便问一下,为什么要定义
位置=()
?它可能无法解决问题,但您可以删除它。是的,有几次它会将行星渲染到第一个坐标它只会渲染第一个坐标或什么也不渲染:因此,当您多次运行它时,有时它会在第一个坐标渲染行星,而其他时候它不会?顺便问一下,为什么要定义位置=()
?它可能无法解决问题,但您可以删除它。是的,它多次将行星渲染到第一个坐标系,这非常有效!以后我会尽量与我的代码更加一致。使用布尔变量声音的想法很好,我会研究一下。好的,这很好用!以后我会尽量与我的代码更加一致。使用布尔变量声音的想法很好,我会研究一下。