提问:
老师,请问我这个为什么在代码运行正常的情况下按下键盘没有换方向呢?
import pygame
SCREEN_WIDTH = 700
SCREEN_HEIGHT = 500
BG_COLOR = pygame.Color(0, 0, 0)
TEXT_COLOR = pygame.Color(255, 0, 0)
class MainGame: # 主类
window = None
my_tank = None
def __init__(self):
pass
# 开始游戏
def startGame(self):
# 加载主窗口
pygame.display.init()
# 设置窗口大小及其显示
MainGame.window = pygame.display.set_mode([SCREEN_WIDTH, SCREEN_HEIGHT])
MainGame.my_tank = Tank(350, 250)
# 设置标题
pygame.display.set_caption('坦克大战1.03')
while True:
# 填充色
MainGame.window.fill(BG_COLOR)
# 获取事件
self.getEvent()
MainGame.window.blit(self.getTextSuface('敌方剩余坦克数量:%d' % 6), (10, 10))
MainGame.my_tank.displayTank()
pygame.display.update()
# 结束游戏
def endGame(self):
print('谢谢使用')
exit()
# 左上角文字的绘制
def getTextSuface(self, text):
# 初始化字体模块
pygame.font.init()
# 获取字体font对象
font = pygame.font.SysFont('kaiti', 18)
# 绘制文字信息
textSurface = font.render(text, True, TEXT_COLOR)
return textSurface
# 获取事件
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:
MainGame.my_tank.direction = 'L'
MainGame.my_tank.move()
print('按下左键')
elif event.key == pygame.K_RIGHT:
MainGame.my_tank.direction = 'R'
MainGame.my_tank.move()
print('按下右键')
elif event.key == pygame.K_UP:
MainGame.my_tank.direction = 'U'
MainGame.my_tank.move()
print('按下上键')
elif event.key == pygame.K_DOWN:
MainGame.my_tank.direction = 'D'
MainGame.my_tank.move()
print('按下下键')
class Tank: # 坦克类
def __init__(self, left, top):
self.images = {
'U': pygame.image.load('img/p1tankU.gif'),
'D': pygame.image.load('img/p1tankD.gif'),
'L': pygame.image.load('img/p1tankL.gif'),
'R': pygame.image.load('img/p1tankR.gif')
}
# 坦克默认朝向
self.direction = 'R'
self.image = self.images[self.direction]
# 获取区域
self.rect = self.image.get_rect()
self.rect.left = left
self.rect.top = top
self.speed = 15
# 展示
def displayTank(self):
MainGame.window.blit(self.image, self.rect)
# 移动
def move(self):
if self.direction == 'L':
self.rect.left -= self.speed
elif self.direction == 'U':
self.rect.top -= self.speed
elif self.direction == 'D':
self.rect.top += self.speed
elif self.direction == 'R':
self.rect.left += self.speed
# 射击
def shot(self):
pass
class MyTank(Tank): # 我方坦克类
pass
class EnemyTank(Tank): # 敌方坦克类
# def __init__(self):
pass
class Bullet: # 子弹类
def __init__(self):
pass
# 展示子弹
def display(self):
pass
def move(self):
pass
class Wall: # 墙壁类
def __init__(self):
pass
# 展示墙壁
def display(self):
pass
class Explode: # 爆炸效果类
def __init__(self):
pass
def displayExplode(self):
pass
class Music: # 音乐类
def __init__(self):
pass
# 播放音乐
def play(self):
pass
if __name__ == '__main__':
MainGame().startGame()