问题遇到的现象和发生背景
编程python的坦克大战游戏,使用pygame模块 在创建游戏窗口有后会发生未响应,然后我使用pygame.QUIT.和pygame.KEYDOWN后依然未响应
用代码块功能插入代码,请勿粘贴截图
总代码:如下
import pygame
_display = pygame.display
COLOR_BLACK = pygame.Color(0, 0, 0)
verson = 'v1.042'
class MainGame():#主逻辑类的实现
#游戏主窗口
window = None
SCREEN_HEIGHT = 500
SCREEN_WIDTH = 800
def __init__(self):
pass
#开始游戏方法
def startGame(self):
_display.init()
# 创建窗口加载窗口(借鉴官方文档)
MainGame.window =_display.set_mode([MainGame.SCREEN_WIDTH,MainGame.SCREEN_HEIGHT])
#设置游戏标题
_display.set_caption("坦克世界大战"+verson)
#让窗口持续刷新操作
while True:
#给窗口完成一个颜色的填充
MainGame.window.fill(MainGame.COLOR_BLACK)
_display.update()
#获取程序期间所有事件(鼠标事件,键盘事件)
def getEvent(self):
#1、获取所有事件
eventList = pygame.event.get()
#2、对事件进行判断处理(1.点击关闭按钮 2.按下键盘上的某个键)
for event in eventList:
#判断event.type 是否QUIT。如果是退出的话,直接调用程序结束方法
if event.type == pygame.QUIT:
self.endGame()
#判断事件类型是否为按键按下,如果是继续判断按键是哪一个按键来进行对应处理
if event.type == pygame.KEYDOWN:
#具体是那一按键的处理
if event.key == pygame.K_LEFT:
print("坦克向左掉头,移动")
elif event.key == pygame.K_RIGHT:
print("坦克向右掉头,移动")
elif event.key == pygame.K_UP:
print("坦克向上掉头,移动")
elif event.key == pygame.K_DOWN:
print("坦克向下掉头,移动")
elif event.key == pygame.K_SPACE:
print("发射子弹")
def endGame(self):
print("谢谢使用")
#结束python解释器
exit()
class Tank():
def __init__(self):
pass
#坦克的移动方法
def move(self):
pass
#射击方法
def shot(self):
pass
#展示坦克
def displayTank(self):
pass
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 Explode():
def __init__(self):
pass
def displayExplode(self):
pass
class Wall():
def __init__(self):
pass
#展示墙壁的方法
def displayWall(self):
pass
class Music():
def __init__(self):
pass
#开始播放音乐
def play(self):
pass
MainGame().startGame()
运行结果及报错内容
我的解答思路和尝试过的方法
一开始以为是pycharm上没有对应的类(像pygame一样没有安装)后来发现应该是def getEvent(self): 后的程序没有进行编译,还有
event.type == pygame.KEYDOWN: 中key的成员属性
我想要达到的结果
创建的游戏窗口响应,且对应我在键盘的操作输出对应信息。