我是python的新手,对于我在大学的课程,我们已经设置了使用pygame创建游戏的任务,我从一些Youtube教程获得了帮助,这是我到目前为止的代码:
import pygame, sys
from pygame.locals import *
pygame.init()
window = pygame.display.set_mode((800, 600))
clock = pygame.time.Clock()
black = (0,0,0)
white = (255,255,255)
background = pygame.image.load('grassy.gif')
turret = pygame.image.load('turret.png').convert_alpha()
pygame.display.set_caption("Tank Blast!")
moveX, moveY = 0,0
class Turret:
def __init__ (self, x, y):
self.x=x
self.y=y
self.width=50
self.height=50
self.i0 = pygame.image.load("turret.png")
self.i1 = pygame.image.load("turret2.png")
self.timeTarget = 10
self.timeNum = 0
self.currentImage = 0
def update (self):
self.timeNum+=1
if (self.timeNum==self.timeTarget):
if (self.currentImage==0):
self.currentImage+=1
else:
self.currentImage=0
self.timeNum=0
self.render()
def render(self):
if (self.currentImage==0):
window.blit(self.i0, (self.x, self.y))
else:
window.blit(self.i1, (self.x, self.y))
player = Turret(380, 480)
while True:
for event in pygame.event.get():
if event.type == QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE):
sys.exit()
if (event.type==pygame.KEYDOWN):
if (event.key==pygame.K_LEFT):
moveX = -7
if (event.key==pygame.K_RIGHT):
moveX = 7
if (event.type==pygame.KEYUP):
if (event.key==pygame.K_LEFT):
moveX = 0
if (event.key==pygame.K_RIGHT):
moveX = 0
window.blit(background, (0,0))
player.x+=moveX
player.y+=moveY
player.update()
pygame.display.flip()
clock.tick(60)
pygame.quit()
我的问题是,我需要做些什么才能通过按空格键来制作炮塔射击子弹? 如果有人可以帮助我,我会非常感激,
谢谢
答案 0 :(得分:2)
您应该创建一个Bullet
课程。当Turret
射击时,它会创建一个新的Bullet
对象,该对象可能有move
的方法和另一个方法,如destroy
,它将检查它是否与某些东西发生碰撞然后摧毁自己和那个对象。此外,您的Bullet
类应继承自pygame.sprite.Sprite
,如下所示:
class Bullet(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
...
...
这样,当您创建大量项目符号时,可以将它们组合到pygame.sprite.Group
中。例如,如果您创建了一个名为pygame.sprite.Group
的{{1}},您添加了所有项目符号实例,则可以通过调用bullets
所有项目符号来填充:{/ p>
update
我建议您阅读bullets.update() #this will then call the update() method of the individual bullets
和pygame.sprite.Sprite
。
在处理类似对象的多个实例时,它们非常方便。
注意:我建议使用pygame.sprite.Group
代替pygame.display.update()
。这是一种更好的方式。
Happy Pygaming!