老师,我这里可以显示坦克也可以移动,但是上一次移动的痕迹不会消失
import pygame
from pygame import *
#设置常量参数
GAME_WIDTH=700
GAME_HEIGHT=500
TEXT_COLOR=(255,0,0)
class MainGame(): #游戏运行管理窗口
window=None
tan_k=None
def __init__(self):
pass
def kai_shi(self):
#初始化窗口
display.init()
#设置窗口大小及显示
MainGame.window=display.set_mode([GAME_WIDTH,GAME_HEIGHT])
#初始化坦克
MainGame.tan_k=tank(350,250) #调用时,要使用 类名. 调用 否则报错
while True:
display.set_caption('坦克大战')
self.shi_jian()
display.flip() #使窗口其一直显示
MainGame.window.blit(self.zuo_shang_text('剩余坦克数量%d'%6),(10,10)) #可以通过这种方式来控制语句输出
MainGame.tan_k.disp_tank()
display.update()
def jie_shu(self):
print('欢迎使用')
exit() #t退出语句
#绘制左上角文字
def zuo_shang_text(self,text):
font.init() #进行文字模块初始化
Font=font.SysFont('kaiti',18) #先获取字体对象:楷体、大小18
left_text=Font.render(text,True,TEXT_COLOR) #这里才能导入
return left_text
def shi_jian(self): #获取所有事件
event_list=pygame.event.get() #获取所有事件,并返回一个列表
# print(type(event_list))
for event in event_list: #判断按下的是关闭还是键盘的建
if event.type ==QUIT: #按下窗口右上角关闭建,退出 #type可以获取标识符
print('这里键入的是退出按钮,event.type的值是:',event.type)
self.jie_shu()
elif event.type == KEYDOWN: #查看是上、下、左、右哪个键
print('这键入的是键盘的值',event.type)
if event.key==K_LEFT or event.key==ord('a'): #这里反馈键盘键入的是否是右键值
MainGame.tan_k.fang_xiang='L'
MainGame.tan_k.yi_dong()
print('键盘按下左键,坦克左移动')
elif event.key==K_RIGHT or event.key==ord('d'): #ord参数可以将字符串转为ascii妈
MainGame.tan_k.fang_xiang='R'
MainGame.tan_k.yi_dong()
print('按下右键,坦克向右移动')
elif event.key==K_UP or event.key==ord('w'):
MainGame.tan_k.fang_xiang='U'
MainGame.tan_k.yi_dong()
print('按下上键,坦克向上移动')
elif event.key == K_DOWN or event.key==ord('s'):
MainGame.tan_k.fang_xiang='D'
MainGame.tan_k.yi_dong()
print('按下下键,坦克向下移动')
class tank(): #坦克类
def __init__(self,left,top): #添加距离左边left 距离上边top
self.images={
'U':image.load('E:\pycharm_\gong_chen\GUI_bian_xie\photo\p1tankU.gif'),
'D':image.load('E:\pycharm_\gong_chen\GUI_bian_xie\photo\p1tankD.gif'),
'L':image.load('E:\pycharm_\gong_chen\GUI_bian_xie\photo\p1tankL.gif'),
'R':image.load('E:\pycharm_\gong_chen\GUI_bian_xie\photo\p1tankR.gif'),
}
#加载时默认方向
self.fang_xiang='U'
#根据当前图片的方向获取图片
self.image=self.images[self.fang_xiang]
self.rect=self.image.get_rect() #根据传入的图片获取图片大小的矩形区域
#设置初始时,图片存在的位置
self.rect.left=left
self.rect.top=top
#设置坦克速度
self.su=10
def disp_tank(self):
#展示图片
self.zhan_shi=self.images[self.fang_xiang]
MainGame.window.blit(self.zhan_shi,self.rect)
def yi_dong(self):
if self.fang_xiang=='U':
self.rect.top-=self.su
if self.fang_xiang=='D':
self.rect.top+=self.su
if self.fang_xiang=='L':
self.rect.left-=self.su
if self.fang_xiang=='R':
self.rect.left+=self.su
class music():
pass
class ZiDan():
pass
if __name__=='__main__':
MainGame().kai_shi()
