问题遇到的现象
坦克图片不断重叠
问题相关代码
import pygame
击杀字的颜色red=pygame.Color(255,0,0)
class Gamesubject(): # Gamesubject=游戏主体
Window=None
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 500
#游戏主窗口
#创建我方坦克
TANK_P1 = None
def __init__(self):
pass
def Startgame(self): # Startgame=开始游戏
pygame.display.init()
Gamesubject.Window = pygame.display.set_mode([Gamesubject.SCREEN_WIDTH, Gamesubject.SCREEN_HEIGHT])
#创建窗口并加载
Gamesubject.TANK_P1 = Tank(350,400)
#创建我方坦克
pygame.display.set_caption('坦克大战v1.0')
# 设置游戏窗口标题
while True:
#于循环中完成事件的获取
self.getEvent()
#绘制的文字粘贴到窗口中
Gamesubject.Window.blit(self.getTextSurface('剩余敌方坦克%d辆' % 5), (5, 5))
#将我方坦克加载到窗口中
Gamesubject.TANK_P1.DisplayTank()
pygame.display.update()
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('坦克向左移动一步')
Gamesubject.TANK_P1.direction = 'L'
Gamesubject.TANK_P1.move()
elif event.key == pygame.K_RIGHT:
print('坦克向右移动一步')
Gamesubject.TANK_P1.direction = 'R'
Gamesubject.TANK_P1.move()
elif event.key == pygame.K_UP:
print('坦克向上移动一步')
Gamesubject.TANK_P1.direction = 'U'
Gamesubject.TANK_P1.move()
elif event.key == pygame.K_DOWN:
print('坦克向下移动一步')
Gamesubject.TANK_P1.direction = 'D'
Gamesubject.TANK_P1.move()
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)
textSureface = font.render(text, True, 击杀字的颜色red)
return textSureface
#开始游戏方法
def Endgame(self): # Endgame=结束游戏
print('谢谢游玩')
exit()#结束python解释器
#结束游戏方法
class Tank():#Tank=坦克
def __init__(self,left, top):
self.images = {
'U': pygame.image.load("image\enemy3U.gif"),
'D': pygame.image.load("image\enemy3D.gif"),
'L': pygame.image.load("image\enemy3L.gif"),
'R': pygame.image.load("image\enemy3R.gif")
}
self.direction = 'U'
self.image = self.images[self.direction]
#坦克所在的区域
self.rect = self.image.get_rect()
#指导坦克初始化位置 分别距x,y轴的位置
self.rect.left = left
self.rect.top = top
self.speed = 5
#新增速度属性
def move(self): # move=移动
if self.direction == 'L':
self.rect.left -= self.speed
elif self.direction == 'R':
self.rect.left += self.speed
elif self.direction == 'U':
self.rect.top -= self.speed
elif self.direction == 'D':
self.rect.top += self.speed
#坦克的移动
def shot(self):#shot=射击
pass
#坦克的射击
def DisplayTank(self):# Display=展示
self.image = self.images[self.direction]
#1.重新设置坦克图片
Gamesubject.Window.blit(self.image,self.rect)
#2.将坦克加入到窗口中
#展示坦克(将坦克这个图片显示到窗口中)
class MyTank(Tank):# MyTank=我方坦克
def __init__(self):
pass
class Enemy(Tank):#Enemy=敌方坦克
def __init__(self):
pass
class bullet():#bullet=子弹
def __init__(self,):
pass
def move(self):# move=移动
pass
#子弹的移动
def Displaybullet(): # Display=展示
pass
#展示子弹
class Blasteffect():#Blasteffect=爆炸效果
def __init__(self):
pass
def DisplayBlasteffect(): # Display=展示
pass
#展示爆炸效果
class wall():#wall=墙壁
def __init__(self):
pass
def Displaywall(): # Display=展示
pass
#展示墙壁
class music():#music=音效
def __init__(self):
pass
def play():
pass
#开始播放音乐
Gamesubject().Startgame()