# encoding=UTF-8
import pygame,sys
from pygame.locals import *
class TankMain(object):
"""弹出坦克大战的主窗口"""
width=600
height=500
# 开始游戏的方法
def start_game(self):
# pygame模块初始化,加载系统资源(如系统的字体)
pygame.init()
screen=pygame.display.set_mode((TankMain.width,TankMain.height),0,32)
#给窗口设置一个标题
pygame.display.set_caption('坦克大战')
my_tank=MyTank(screen)
while True:
#color RGB(255,255,255)
screen.fill((0,0,0))
screen.blit(self.write_text(),(0,5))
self.get_event(my_tank)
my_tank.display()
pygame.display.update()
def get_event(self,my_tank):
for event in pygame.event.get():
if event.type == QUIT:
self.stop_game()
if event.type == KEYDOWN:
if event.key == K_LEFT or event.key==K_a:
my_tank.directon='L'
my_tank.move()
if event.key == K_UP or event.key==K_w:
my_tank.directon = 'U'
my_tank.move()
if event.key == K_DOWN or event.key==K_s:
my_tank.directon = 'D'
my_tank.move()
if event.key == K_RIGHT or event.key==K_d:
my_tank.directon='R'
my_tank.move()
if event.key == K_ESCAPE:
self.stop_game()
# 关闭游戏的方法
def stop_game(self):
sys.exit()
def write_text(self):
font=pygame.font.SysFont('方正兰亭超细黑简体',20)#定义一个字体
text_sf=font.render('敌方坦克数量为:5',True,(255,0,0))#根据字体创建一个文字的图像
return text_sf
class BaseItem(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
class Tank(BaseItem):
width = 50
height = 50
def __init__(self,screen,left,top):
super().__init__()
self.screen=screen#坦克在移动中需要用到当前游戏的屏幕窗口
self.direction='U'#坦克的方向,默认向下
self.speed=5# 坦克移动的速度
self.images={}#坦克的所有图片
self.images['L']=pygame.image.load('tankwar-images/mytankL.gif')
self.images['R']=pygame.image.load('tankwar-images/mytankR.gif')
self.images['D']=pygame.image.load('tankwar-images/mytankD.gif')
self.images['U']=pygame.image.load('tankwar-images/mytankU.gif')
self.image=self.images[self.direction]#坦克的图片由方向决定
self.rect=self.image.get_rect()
self.rect.left=left
self.rect.top=top
def display(self):
self.image=self.images[self.direction]# 这里如果不定义,那么坦克的方向永远保持默认向下
self.screen.blit(self.image,self.rect)
def move(self):
pass
def fire(self):
pass
class MyTank(Tank):
def __init__(self,screen):
super().__init__(screen,275,400)
def move(self):
if self.direction=='L':
if self.rect.left>0:
self.rect.left-=self.speed
else:
self.rect.left=0
elif self.direction=='R':
if self.rect.righttanke<TankMain.width:
self.rect.right+=self.speed
else:
self.rect.right=TankMain.width
elif self.direction=='U':
if self.rect.top>0:
self.rect.top-=self.speed
else:
self.rect.top=0
elif self.direction=='D':
if self.rect.bottom<TankMain.height:
self.rect.bottom+=self.speed
else:
self.rect.bottom=TankMain.height
game = TankMain()
game.start_game()