Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 使物体射击-Pygame_Python 3.x_Pygame - Fatal编程技术网

Python 3.x 使物体射击-Pygame

Python 3.x 使物体射击-Pygame,python-3.x,pygame,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) bac

我是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()
我的问题是,我要怎么做才能让炮塔通过按下空格键来发射子弹? 如果有人能帮我我会非常感激


谢谢

您应该创建一个
Bullet
类。当
炮塔
发射时,它会创建一个新的
子弹
对象,该对象可能会有一种方法移动和另一种方法,如
销毁
,它会检查它是否与某物碰撞,然后销毁自身和该对象。另外,您的
Bullet
类应该继承自
pygame.sprite.sprite
,如下所示:

class Bullet(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        ...
    ...
这样,当您创建大量项目符号时,您可以将它们组合成
pygame.sprite.group
。例如,如果您创建一个名为
bullets
pygame.sprite.Group
组,并将所有项目符号实例添加到该组中,则可以
通过调用以下命令更新所有项目符号:

bullets.update()#这将调用单个项目符号的update()方法

我建议您阅读关于
pygame.sprite.sprite
pygame.sprite.Group

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

注意:我建议使用
pygame.display.update()
而不是
pygame.display.flip()
。这是一种更好的方法

游戏快乐