import pygame as pg
from random import *
pg.init()
asteroidgif = pg.image.load("Asteroid.gif")
asteroidimg = pg.transform.scale(asteroidgif, (75,75))
#Setup screen and define colors
res = (1000,800)
screen = pg.display.set_mode(res)
pg.display.set_caption('Rocket game')
#pg.image.load("space.jpg")
black = (0,0,0)
white = (255,255,255)
background1 = pg.image.load("space.jpg").convert()
background2 = pg.image.load("space.jpg").convert()
#Generate random asteroids.
Nasteroid = 1
i = 0
x = 999
y = randint(1,800)
dx = 10 #pixel step for asteroid
dy = 0
while i < Nasteroid:
x = x - dx
y = y
pg.event.pump()
screen.blit(asteroidimg,(x,y))
pg.display.flip()
i = i + 1
pg.quit()
答案 0 :(得分:2)
使用Pygame的项目需要一个明确的&#34; mainloop&#34;游戏 - 代码的一部分,每个帧都会反复运行 (甚至更频繁地)您的申请。
并且 - 为了移动所有小行星,你需要遍历所有小行星 小行星,在每一帧。
在你的学习阶段,你已经混淆了对两个不同循环的需求 - 那么你的&#34;永恒&#34;一旦你对所有小行星进行交流,主循环就会退出:
while i < Nasteroid:
x = x - dx
y = y
...
pg.display.flip()
i = i + 1
pg.quit()
见上文?在你的第一次通过我cotains&#34; 2&#34;,你的循环退出。 作为第一步,在你的游戏真正实现互动之前,你至少需要:
while True:
i = 0
pg.event.pump()
while i < Nasteroid:
x -= dx
#y = y
screen.blit(asteroidimg,(x,y))
i = i + 1
pg.display.flip()
pg.time.delay(30)
pg.quit()
这应该足以让你在应用程序退出之前看到一个小行星在你的屏幕上飞镖一次 - tehre还有几个步骤才能让它可玩,但你应该一次接近一件事。作为下一个不会起作用的东西:你显然可以使用全球&#34; x&#34;和&#34; y&#34;多个小行星的变量 - 基本方法是将所有的asterois都放在容器中 - 比如Python列表或pygame精灵组,并让每个小行星保持自己的坐标。