老师:MainGame.TANK_P1 = Tank(100,450)#将坦克展示在窗口中,创建我方坦克。最后这步,我这个括号里的前一个数字无论怎么变,坦克图片都不移动,只有后面的数字变化,才有效果,咋整的?也不报错
import pygame
_display = pygame.display#简化了pygame.display的写法
# 8.设置窗口的颜色,定义全局参数变量,随时可以用
COLOR_BLACK = pygame.Color(0, 0, 0)
COLOR_RED = pygame.Color(255, 0, 0)
version="V1.06"#添加的全局变量,方便修改版本数字
class MainGame():#主逻辑类
window = None#2.游戏主窗口,属性性质
#变量窗口的高度和宽度
SCREEN_HEIGHT = 800
SCREEN_WIDTH = 500
#创建我方坦克
TANK_P1 = None
def __init__(self):
pass
def startgame(self):#开始游戏,1.创建窗口
pygame.display.init()#3.(创建初始化窗口,借鉴官方文档))
# 4.展示窗口,参数用类名调用,最后要存储起来存储在window里
MainGame.window = _display.set_mode([MainGame.SCREEN_HEIGHT,MainGame.SCREEN_WIDTH])
MainGame.TANK_P1 = Tank(100,450)#将坦克展示在窗口中,创建我方坦克
#5.设置游戏标题
_display.set_caption("坦克大战"+version)
#6.持续刷新窗口界面
while True:
#7.给窗口完成一个填充颜色
MainGame.window.fill(COLOR_BLACK)
#在循环中持续完成事件的获取
self.getevent()
#将绘制文字得到的小画布粘贴在窗口中
MainGame.window.blit(self.gettextsurface("剩余敌方坦克 %d辆"%5),(5,5))
#将我方坦克加载到窗口中
MainGame.TANK_P1.displayTank()
# 窗口的刷新
_display.update()
def getevent(self):#获取程序进行中所有事件(鼠标事件,键盘事件)
#1.获取所有事件
eventlist = pygame.event.get()
#2.对事件进行判断处理(1.点击关闭按钮 2.按下键盘上的某个按键)event.type--事件的属性
for event in eventlist:#遍历列表
#判断event.type 是否为Quit ,如果是退出的话,直接调用程序退出方法
if event.type == pygame.QUIT:
self.endgame()#同一个类里调用其它成员的方法,要用self
#判断事件类型是否为按键按下,如果是,继续判断是哪一个按键,来进行对应处理
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 gettextsurface(self,text):
#初始化字体模块
pygame.font.init()
#查看系统支持的所有字体
#fontList = pygame.font.get_fonts()
#print(fontList)
#得到一个合适的字体
font = pygame.font.SysFont("kaiti",18)
#使用对应的字符完成完成相关内容的操作
textsurface = font.render(text,True,COLOR_RED)
return textsurface
def endgame(self):#结束游戏
print("谢谢使用,我们会再接再厉")
exit()#结束python解释器
class Tank():#定义一个坦克类
def __init__(self,left,top):#定义x和y参数,指定坦克的位置
self.images = {
"U":pygame.image.load("C:/Users/王同学/Documents/temp/1553563124474147/img/p1tankU.gif"),#从磁盘加载图片
"D":pygame.image.load("C:/Users/王同学/Documents/temp/1553563124474147/img/p1tankD.gif"),
"L":pygame.image.load("C:/Users/王同学/Documents/temp/1553563124474147/img/p1tankL.gif"),
"R":pygame.image.load("C:/Users/王同学/Documents/temp/1553563124474147/img/p1tankR.gif")
}#图片的四个方向
self.direction = "U"#坦克的方向
self.image = self.images[self.direction]#坦克当前的位置方向
#坦克的区域 rect---返回rect类型
self.rect = self.image.get_rect()
#指定坦克初始化位置,分别距x,y,轴的位置
self.rect.left = left
self.rect.right = top
def move(self):#移动类
pass
def shot(self):#射击类
pass
def displayTank(self):#展示坦克(将坦克这个小的表面展示到窗口中,用 blit(粘贴方法))
#1.重新设置坦克图片
self.image = self.images[self.direction]
#2.将坦克加载到窗口中
MainGame.window.blit(self.image,self.rect)

