我正在写一个侧滚街机游戏,在游戏中,你可以控制火箭,你必须避开小行星。我想让小行星从屏幕上从右向左移动的最后部分还不能工作。这是我到目前为止拥有的代码,但当我运行它时,什么也没有发生。我也尝试了一下,然后所有的小行星同时出现了。非常感谢您的帮助。
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()发布于 2015-06-06 00:07:39
使用Pygame的项目需要一个显式的游戏“主循环”-这是代码的一部分,将为应用程序的每一帧(甚至更频繁)反复运行。
为了移动所有的小行星,你需要在每个帧中循环所有的小行星。
在你的学习阶段,你已经混淆了对两个不同环路的需求-所以当你在所有小行星上运行时,你应该是“永恒的”主环就退出了:
while i < Nasteroid:
x = x - dx
y = y
...
pg.display.flip()
i = i + 1
pg.quit()请看上面的内容?在你的第一次传递中,我得到了"2",然后你的循环退出了。作为第一步,在你的游戏变得真正互动之前,你至少需要:
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()在应用程序退出之前,这应该足以让你看到一颗小行星在你的屏幕上猛击一次--在让它可播放之前,还有几个步骤,但你应该一次处理一件事情。下一步是行不通的:你可以为多个小行星使用全局的"x“和"y”变量--基本的方法是让你所有的小行星都放在一个容器中,-like一个Python列表,或者一个pygame精灵组,让每个小行星都有自己的坐标。
https://stackoverflow.com/questions/30670637
复制相似问题