import time
import pygame as pg
SCREEN_WIDTH=700
SCREEN_HEIGHT=500
BG_COLOR=pg.Color(0,0,0)
TEXT_COLOR=pg.Color(255,0,0)
class MainGame():
window = None
my_tank = None
# 加载图片
def __init__(self):
pass
# 开始游戏
def startGame(self):
pg.display.init()
MainGame.window=pg.display.set_mode([SCREEN_WIDTH,SCREEN_HEIGHT])
MainGame.my_tank = Tank(350,250)
pg.display.set_caption("坦克大战")
while True:
time.sleep(0.02)
MainGame.window.fill(BG_COLOR)
self.getEvent()
MainGame.window.blit(self.getTextSuface("敌方坦克剩余数量%d"%6),(10,10))
MainGame.my_tank.displayTank()
if MainGame.my_tank.stop == False :
MainGame.my_tank.move()
pg.display.update()
# 获取事件
def getEvent(self):
eventList = pg.event.get()
for event in eventList:
if event.type == pg.QUIT:
self.endGame()
if event.type == pg.KEYDOWN:
if event.key == pg.K_LEFT:
MainGame.my_tank.direction = 'L'
MainGame.my_tank.stop = False
print("按下左键,坦克向左移动")
elif event.key == pg.K_RIGHT:
MainGame.my_tank.direction = 'R'
MainGame.my_tank.stop = False
print("按下右键,坦克向右移动")
elif event.key == pg.K_UP:
MainGame.my_tank.direction = 'U'
MainGame.my_tank.stop = False
print("按下上键,坦克向上移动")
elif event.key == pg.K_DOWN:
MainGame.my_tank.direction = 'D'
MainGame.my_tank.stop = False
print("按下下键,坦克向下移动")
elif event.key == pg.K_SPACE:
print("发射子弹")
if event.type == pg.KEYUP:
if event.key == pg.KEYUP or event.key == pg.K_DOWN or event.key == pg.K_RIGHT or event.key == pg.K_LEFT:
MainGame.my_tank.stop = True
# 左上角文字绘制
def getTextSuface(self,text):
pg.font.init()
font = pg.font.SysFont('kaiti',18)
textSurface = font.render(text,True,TEXT_COLOR)
return textSurface
# 结束游戏
def endGame(self):
print("谢谢使用,欢迎下次光临")
exit()
class Tank():
def __init__(self,left,top):
self.images = {
'U': pg.image.load('img/p1tankU.gif'),
'D': pg.image.load('img/p1tankD.gif'),
'L': pg.image.load('img/p1tankL.gif'),
'R': pg.image.load('img/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 = 5
self.stop = True
# 移动
def move(self):
if self.direction == 'L':
if(self.rect.left>0):
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.width<SCREEN_HEIGHT):
self.rect.top += self.speed
elif self.direction =='R':
if(self.rect.left+self.rect.height<SCREEN_WIDTH):
self.rect.left += self.speed
# 射击
def shot(self):
pass
# 展示坦克的方法
def displayTank(self):
self.image = self.images[self.direction]
MainGame.window.blit(self.image,self.rect)
# 我方坦克
class MyTank(Tank):
def __init__(self):
pass
# 敌方坦克
class EnemyTank(Tank):
def __init__(self):
pass
class Bullet():
def __init__(self):
pass
# 移动
def move(self):
pass
# 展示子弹的方法
def displayBullet(self):
pass
class Wall():
def __init__(self):
pass
# 展示墙壁的方法
def displayWall(self):
pass
class Explode():
def __init__(self):
pass
# 展示爆炸效果的方法
def displayExplode(self):
pass
class Music():
def __init__(self):
pass
if __name__ == '__main__':
mg = MainGame()
mg.startGame()
为什么我的坦克按一下上键就一直往上走,根本停不下来,其它3个方向是好的