# coding=utf-8
"""
新增功能:
左上角文字绘制:
左上角输出敌方坦克的数量6
"""
#导入pygame模块
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 #定义窗口对象,初始化为None,属于类对象
def __init__(self):
pass
#开始游戏
def startGame(self):
#加载主窗口
pygame.display.init() #初始化窗口(显示窗口)
#设置窗口的大小及显示
MainGame.window=pygame.display.set_mode([SCREEN_WIDTH,SCREEN_HEIGHT])
#窗口大小作为列表传进去,返回一个对象surface,传给窗口对象
#MainGame.window 调用用类名.类属性
# 设置窗口标题
pygame.display.set_caption("坦克大战1.03")
while True:
# 给窗口设置填充色,用surface里面的fill方法
MainGame.window.fill(BG_COLOR)
#获取事件
self.getEvent()
#绘制文字
MainGame.window.blit(self.getTextSurface("敌方坦克剩余数量%d"%6),(10,10))
#(10,10)表示小的surface在窗口window中的位置
pygame.display.update() # 窗口一直显示
#点击x窗口关闭不了
#结束游戏
def endGame(self):
print("谢谢使用,欢迎再次使用")
exit()
#左上角文字的绘制
def getTextSurface(self,text): #text指敌方坦克数量,变化量
#初始化字体模块
pygame.font.init()
#查看所有的字体名称
#print(pygame.font.get_fonts())
#获取字体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:
print("按下左键,坦克向左移动")
elif event.key == pygame.K_RIGHT:
print("按下右键,坦克向右移动")
elif event.key == pygame.K_UP:
print("按下上键,坦克向上移动")
elif event.key == pygame.K_DOWN:
print("按下下键,坦克向下移动")
class Tank():
def __init__(self):
pass
#移动
def move(self):
pass
#射击
def shot(self):
pass
#展示坦克的方法
def dispaliTank(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 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
#播放音乐的方法
def play(self):
pass
if __name__=="__main__":
#MainGame().startGame() #调用startGame()方法显示窗口对象
#窗口对象只显示一次就关闭
MainGame().getTextSurface()
老师,我上面的代码为什么出现以下报错
Traceback (most recent call last):
File "F:/py/tank/tank05.py", line 134, in <module>
Hello from the pygame community. https://www.pygame.org/contribute.html
MainGame().getTextSurface()
TypeError: getTextSurface() missing 1 required positional argument: 'text'