Python 3.x 使物体射击-Pygame
我是python新手,在大学的课程中,我们被设定了使用pygame创建游戏的任务,我从一些Youtube教程中获得了帮助,这是我迄今为止的代码: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
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()
。这是一种更好的方法
游戏快乐