首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pygame side scroller

Pygame side scroller
EN

Stack Overflow用户
提问于 2015-06-05 23:43:27
回答 1查看 148关注 0票数 3

我正在写一个侧滚街机游戏,在游戏中,你可以控制火箭,你必须避开小行星。我想让小行星从屏幕上从右向左移动的最后部分还不能工作。这是我到目前为止拥有的代码,但当我运行它时,什么也没有发生。我也尝试了一下,然后所有的小行星同时出现了。非常感谢您的帮助。

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

发布于 2015-06-06 00:07:39

使用Pygame的项目需要一个显式的游戏“主循环”-这是代码的一部分,将为应用程序的每一帧(甚至更频繁)反复运行。

为了移动所有的小行星,你需要在每个帧中循环所有的小行星。

在你的学习阶段,你已经混淆了对两个不同环路的需求-所以当你在所有小行星上运行时,你应该是“永恒的”主环就退出了:

代码语言:javascript
复制
while i < Nasteroid:
    x = x - dx
    y = y
    ...
    pg.display.flip()
    i = i + 1
pg.quit()

请看上面的内容?在你的第一次传递中,我得到了"2",然后你的循环退出了。作为第一步,在你的游戏变得真正互动之前,你至少需要:

代码语言:javascript
复制
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精灵组,让每个小行星都有自己的坐标。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30670637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档