坦克大战(四)完整代码
import pygame
import time
import random
from pygame.sprite import Sprite
SCREEN_WIDTH = 900
SCREEN_HEIGHT = 700
BG_COLOR = pygame.Color(0, 0, 255)
TEXT_COLOR = pygame.Color(255, 0, 0)
class BaseItem(Sprite):
def __init__(self, color, width, height):
pygame.sprite.Sprite.__init__(self)
class MainGame():
window = None
my_tank = None
enemyTankList = []
enemyTankCount = 5
myBulletList = []
enemyBulletList = []
explodeList = []
walllist = []
def __init__(self):
pass
def startGame(self):
pygame.display.init()
MainGame.window = pygame.display.set_mode([SCREEN_WIDTH, SCREEN_HEIGHT])
MainGame.my_tank = Tank(450,400)
self.creatEnemyTank()
self.createWall()
pygame.display.set_caption('坦克大战')
while True:
time.sleep(0.02)
MainGame.window.fill(BG_COLOR)
self.getEvent()
MainGame.window.blit(self.getTextSurface('敌方坦克的数量:%s'% len(MainGame.enemyTankList)),(10,10))
if MainGame.my_tank and MainGame.my_tank.live:
MainGame.my_tank.displayTank()
else:
del MainGame.my_tank
MainGame.my_tank = None
self.showEnemyTank()
self.showBullet()
self.showExplode()
self.showEnemyBullet()
self.showWall()
if MainGame.my_tank and MainGame.my_tank.live:
if not MainGame.my_tank.stop:
MainGame.my_tank.move()
MainGame.my_tank.hitWall()
MainGame.my_tank.myTank_hit_enemyTank()
pygame.display.update()
def creatMyTank(self):
MainGame.my_tank = Tank(450, 500)
music = Music('img/start.wav')
music.play()
def creatEnemyTank(self):
top = 100
for i in range(MainGame.enemyTankCount):
left = random.randint(0, 600)
speed = random.randint(1, 4)
enemy = EnemyTank(left, top, speed)
MainGame.enemyTankList.append(enemy)
def showBullet(self):
for myBullet in MainGame.myBulletList:
if myBullet.live:
myBullet.displayBullet()
myBullet.move()
myBullet.myBullet_hit_enemyTank()
myBullet.hitWall()
else:
MainGame.myBulletList.remove(myBullet)
def showEnemyBullet(self):
for enemyBullet in MainGame.enemyBulletList:
if enemyBullet.live:
enemyBullet.displayBullet(