拍摄对象 - Pygame

时间:2014-03-22 14:38:46

标签: python-3.x pygame

我是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()

我的问题是,我需要做些什么才能通过按空格键来制作炮塔射击子弹? 如果有人可以帮助我,我会非常感激,

谢谢

1 个答案:

答案 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 bulletspygame.sprite.Sprite

在处理类似对象的多个实例时,它们非常方便。

注意:我建议使用pygame.sprite.Group代替pygame.display.update()。这是一种更好的方式。

Happy Pygaming!