我一直在为“小行星”的翻拍工作。但是我不能让物体随机运动。我确信这是使用向量进化而来的,但是我不知道如何随机为每个小行星生成一个向量。在
我正在寻找一个类似于这个asteroid game中显示的运动的运动,但是我甚至不知道如何开始。这是我目前为止的代码:
import pygame as game
import random as r
import math
game.init()
game.display.set_caption("Asteroids")
screen = game.display.set_mode([800,600])
time=0
gameon=True
bgcolor = game.color.Color("#f6cb39")
black=game.color.Color("black")
badguy = game.image.load("asteroid.png")
badguy = game.transform.scale(badguy, (50, 50))
badguys=[]
SPAWNENEMY=10
CLOCK=11
game.time.set_timer(SPAWNENEMY,800)
game.time.set_timer(CLOCK,1000)
font=game.font.Font(None,20)
timetext=font.render("Time: 0", 0, black)
while gameon:
screen.fill(bgcolor)
event=game.event.poll()
if event.type==SPAWNENEMY:
bgbox = game.Rect(badguy.get_rect())
bgbox.x = r.randint(50,800)
bgbox.y = r.randint(50,600)
badguys.append(bgbox)
if event.type==game.QUIT:
gameon=False;
for bg in badguys:
'''
This is where I tried to put the mocment code,
but I was unableto get randmom movments,
only for asteroids to randomly appear or consistently
move in one direction something like "bg.x+=2"
'''
for bg in badguys:
screen.blit(badguy,(bg.x,bg.y))
game.display.flip()
我很抱歉,如果它有点长,我不知道我可以削减什么,以创造一个MCV。在
所以游戏中的每颗小行星都由一个
Rect
表示,存储在badguys
中。在使用
Rect
,您可以存储一个位置和一个大小(因为Rect
具有x
、y
、width
和height
)的属性。在现在,您需要为每颗小行星存储额外的信息/状态,因此仅使用
Rect
是不够的。您需要一个包含更多字段的不同数据结构。在由于使用python,fitting数据结构是一个能够保存随机向量的类。在
但让我们再考虑一下。由于您使用了pygame,pygame已经提供了一个用于表示游戏对象的类,该类称为^{} 。在
所以我们开始(注意代码中的注释):
下面是如何使用向量来实现这一点。
badguy
列表中的每个项现在都是一对项、其当前位置和相关的速度矢量。注意,位置本身也是一个向量(又名“位置向量”)。在更新当前位置只需将每个坏蛋的速度矢量添加到当前位置即可。i、 e.
bg[0] += bg[1]
。在相关问题 更多 >
编程相关推荐