请问老师我的子弹为什么不会消失
import pygame, time, random
_display = pygame.display
COLOR_BLACK = pygame.Color(0, 0, 0)
COLOR_WHITE = pygame.Color(255, 0, 0)
class MainGame():
# 开始游戏方法
window = None
Screen_Height = 500
Screen_Width = 800
My_tank = None
Tank_P1 = None
Enemytanklist = []
Enemytank_count = 5
bulluetlist = []
def startGame(self):
# 初始化
pygame.display.init()
# 设置窗口大小
MainGame.window = pygame.display.set_mode([MainGame.Screen_Width, MainGame.Screen_Height])
# 设置标题
_display.set_caption('坦克大战1.03')
# 初始化我方坦克
MainGame.Tank_P1 = Tank(400, 250)
# 初始化敌方坦克
self.createEnemytank()
while True:
# 延时
time.sleep(0.02)
# 设置颜色
MainGame.window.fill(COLOR_BLACK)
# 获取事件
self.getevent()
# 显示文本敌方坦克数量
MainGame.window.blit(self.getTextSurface('剩余敌方坦克{}辆'.format(MainGame.Enemytank_count)), (5, 5))
# 我方坦克展示
MainGame.Tank_P1.show_tank()
# 循环遍历敌方坦克列表,敌方坦克展示
MainGame.blitEnemytank(self)
# 子弹展示
MainGame.blitMyBulluet(self)
# 是否停止
if not MainGame.Tank_P1.stop == True:
MainGame.Tank_P1.move()
_display.update()
def endGame(self):
print('游戏结束')
exit()
def getevent(self):
eventlist = pygame.event.get()
for event in eventlist:
if event.type == pygame.QUIT:
self.endGame()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
print('按下左键,坦克向左移动')
MainGame.Tank_P1.direction = 'L'
MainGame.Tank_P1.stop = False
# 调用移动方法
# MainGame.Tank_P1.move()
elif event.key == pygame.K_RIGHT:
print('按下右键,坦克向右移动')
MainGame.Tank_P1.direction = 'R'
MainGame.Tank_P1.stop = False
# 调用移动方法
# MainGame.Tank_P1.move()
elif event.key == pygame.K_UP:
print('按下上键,坦克向上移动')
MainGame.Tank_P1.direction = 'U'
MainGame.Tank_P1.stop = False
# 调用移动方法
# MainGame.Tank_P1.move()
elif event.key == pygame.K_DOWN:
print('按下下键,坦克向下移动')
MainGame.Tank_P1.direction = 'D'
MainGame.Tank_P1.stop = False
# 调用移动方法
# MainGame.Tank_P1.move()
elif event.key == pygame.K_SPACE:
print('biubiubiu')
m = Bulluet(MainGame.Tank_P1)
MainGame.bulluetlist.append(m)
if event.type == pygame.KEYUP:
if event.key == pygame.K_UP or pygame.K_LEFT or pygame.K_RIGHT or pygame.KEYDOWN:
MainGame.Tank_P1.stop = True
def getTextSurface(self, text):
# 初始化字体
pygame.font.init()
# 选中合适的字体
font = pygame.font.SysFont('kaiti', 18)
textsurface = font.render(text, True, COLOR_WHITE)
return textsurface
# 创建敌方坦克的方法
def createEnemytank(self):
top = 100
for i in range(MainGame.Enemytank_count):
left = random.randint(0, 600)
speed = random.randint(3, 6)
enemy = Enemytank(left, top, speed)
MainGame.Enemytanklist.append(enemy)
# 循环遍历敌方坦克列表,敌方坦克展示
def blitEnemytank(self):
for Enemytank in MainGame.Enemytanklist:
Enemytank.show_tank()
Enemytank.randMove()
def blitMyBulluet(self):
for mybulluet in MainGame.bulluetlist:
if mybulluet.alive:
mybulluet.show_bulluet()
mybulluet.move()
else:
MainGame.bulluetlist.remove(mybulluet)
class Tank():
def __init__(self, left, top):
self.images = {
'U': pygame.image.load('image/p1tankU.gif'),
'D': pygame.image.load('image/p1tankD.gif'),
'L': pygame.image.load('image/p1tankL.gif'),
'R': pygame.image.load('image/p1tankR.gif'),
}
self.direction = 'U'
self.image = self.images[self.direction]
# 坦克所在的区域
self.rect = self.image.get_rect()
self.rect.left = left
self.rect.top = top
self.speed = 10
self.stop = True
# 坦克移动
def move(self):
# 坦克移动的方向
if self.direction == 'L':
if self.rect.left > 0:
self.rect.left -= self.speed
elif self.direction == 'R':
if self.rect.left + self.rect.height < MainGame.Screen_Width:
self.rect.left += self.speed
elif self.direction == 'U':
if self.rect.top > 0:
self.rect.top -= self.speed
elif self.direction == 'D':
if self.rect.top + self.rect.height < MainGame.Screen_Height:
self.rect.top += self.speed
# 坦克射击
def shoot(self):
pass
# 坦克展示
def show_tank(self):
self.image = self.images[self.direction]
MainGame.window.blit(self.image, self.rect)
# 碰撞墙壁
def hitWalls(self):
pass
class Mytank(Tank):
def __init__(self):
pass
# 碰撞敌方坦克的方法
def hitEnemytank(self):
pass
class Enemytank(Tank):
def __init__(self, left, top, speed):
self.images = {
'U': pygame.image.load('image/enemy1U.gif'),
'D': pygame.image.load('image/enemy1D.gif'),
'L': pygame.image.load('image/enemy1L.gif'),
'R': pygame.image.load('image/enemy1R.gif')
}
self.direction = 'U'
self.image = self.images[self.direction]
self.rect = self.image.get_rect()
self.rect.left = left
self.rect.top = top
self.direction = self.randDirection()
self.speed = speed
self.step = 0
# 碰撞我方坦克的方法
def hitMytank(self):
pass
# 敌方坦克随机方向的方法
def randDirection(self):
num = random.randint(1, 4)
if num == 1:
return 'U'
if num == 2:
return 'D'
if num == 3:
return 'R'
if num == 4:
return 'L'
# 随机移动的方法
def randMove(self):
if self.step < 0:
self.direction = Enemytank.randDirection(self)
self.step = 20
else:
self.step -= 1
self.move()
class Bulluet():
def __init__(self, tank):
# 加载图片
self.image = pygame.image.load('image/enemymissile.gif')
# 定义方向
self.direction = tank.direction
# 位置
self.rect = self.image.get_rect()
if self.direction == 'U':
self.rect.left = tank.rect.left + tank.rect.width / 2 - self.rect.width / 2
self.rect.top = tank.rect.top - self.rect.height
elif self.direction == 'D':
self.rect.left = tank.rect.left + tank.rect.width / 2 - self.rect.width / 2
self.rect.top = tank.rect.top + tank.rect.height
elif self.direction == 'L':
self.rect.left = tank.rect.left - self.rect.width / 2 - self.rect.width / 2
self.rect.top = tank.rect.top + tank.rect.width / 2 - self.rect.width / 2
elif self.direction == 'R':
self.rect.left = tank.rect.left + tank.rect.width
self.rect.top = tank.rect.top + tank.rect.width / 2 - self.rect.width / 2
# 速度
self.speed = 7
# 用来记录子弹是否活着
self.alive = True
# 子弹移动
def move(self):
if self.direction == 'L':
if self.rect.left > 0:
self.rect.left -= self.speed
else:
self.alive == False
elif self.direction == 'R':
if self.rect.left + self.rect.height < MainGame.Screen_Width:
self.rect.left += self.speed
else:
self.alive == False
elif self.direction == 'U':
if self.rect.top > 0:
self.rect.top -= self.speed
else:
self.alive == False
elif self.direction == 'D':
if self.rect.top + self.rect.height < MainGame.Screen_Height:
self.rect.top += self.speed
else:
self.alive == False
# 子弹展示
def show_bulluet(self):
MainGame.window.blit(self.image, self.rect)
# 子弹碰撞坦克方法
def hitTank(self):
pass
# 子弹碰撞墙壁的方法
def hitWalls(self):
pass
# 子弹碰撞窗口的方法
'''def hitwindow(self):
if not self.rect.left == 0 or self.rect.left + self.rect.height == MainGame.Screen_Width \
or self.rect.top == 0 or self.rect.top + self.rect.height == MainGame.Screen_Height:
self.alive = True
'''
class Wall():
def __init__(self):
pass
# 墙壁展示
def show_wall(self):
pass
class Explode():
def __init__(self):
pass
# 展示爆炸
def show_explode(self):
pass
class Music():
def __init__(self):
pass
# 展示音乐
def playmusic(self):
pass
if __name__ == '__main__':
MainGame().startGame()