import pygame
import random
import time
screen_width = 700
screen_height = 500
bg_cloro = pygame.Color(0,0,255)
COLOR_RED = pygame.Color(255,0,0)
# 主类
class MainGame:
window = None
my_tank = None
def __init__(self):
pass
# 开始游戏
def startGame(self):
# 初始化窗口
pygame.display.init()
# 创建一个窗口
MainGame.window = pygame.display.set_mode([screen_width,screen_height])
# 初始化我方坦克
MainGame.my_tank = MyTank(340,240)
# 建立一个标题
pygame.display.set_caption('坦克大战')
while True:
# 给窗口添加颜色
MainGame.window.fill(bg_cloro)
# 调用方法
self.getEvent()
# 绘制文字
MainGame.window.blit(self.getTextSuface('敌方坦克剩余数量%d'%5),(10,10))
# 调用坦克显示的方法
MainGame.my_tank.displayTank()
# 更新窗口
pygame.display.update()
# 每循环依次休息0.02秒
time.sleep(0.02)
# 结束游戏
def endGame(self):
print("谢谢使用,欢迎再次使用")
# 结束整个程序
exit()
def getTextSuface(self,text):
# 初始化字体
pygame.font.init()
# 获取字体font对象
font=pygame.font.SysFont("kaiti",18)
# 绘制文字信息
textSurface=font.render(text,True,COLOR_RED)
return textSurface
# 获取事件的方法
def getEvent(self):
# 将获取的所有事件放到eventList列表里面
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_UP:
MainGame.my_tank.direction='U'
MainGame.my_tank.move()
print("上")
elif event.key == pygame.K_DOWN:
MainGame.my_tank.direction = 'D'
MainGame.my_tank.move()
print("下")
elif event.key == pygame.K_LEFT:
MainGame.my_tank.direction = 'L'
MainGame.my_tank.move()
print("左")
elif event.key == pygame.K_RIGHT:
MainGame.my_tank.direction = 'R'
MainGame.my_tank.move()
print("右")
# 坦克类
class Tank:
def __init__(self):
pass
# 移动方法
def move(self):
# 判断坦克方向的移动
if self.direction=='U':
self.rect.top-=self.speed
elif self.direction=='D':
self.rect.top+=self.speed
elif self.direction=='L':
self.rect.left-=self.speed
elif self.direction=='R':
self.rect.left+=self.speed
# 发射子弹的方法
def shot(self):
pass
# 显示坦克的方法
def displayTank(self):
# 获取展示的对象
#self.image=self.images[self.direction]
# 调用blit方法展示
MainGame.window.blit(self.image,self.rect)
# 我方坦克类
class MyTank(Tank):
def __init__(self,left,top):
# 保存加载的图片
self.images={
'U':pygame.image.load('img/p1tankU.gif'),
'D':pygame.image.load('img/p1tankD.gif'),
'L':pygame.image.load('img/p1tankL.gif'),
'R':pygame.image.load('img/p1tankR.gif'),
}
# 方向
self.direction = 'L'
#根据当前图片的方向获取图片 surface
self.image=self.images[self.direction]
#根据图片获取区域
self.rect=self.image.get_rect()
#设置区域的left 和top
self.rect.left=left
self.rect.top=top
# 速度,决定移动的快慢
self.speed=10
# 敌方坦克类
class Enemy(Tank):
def __init__(self):
pass
# 子弹类
class Bullet:
def __init__(self):
pass
# 移动的方法
def bulletMove(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 playMusic(self):
pass
if __name__ == "__main__":
MainGame().startGame()
我的坦克上下左右移动都没问题,但是不能切换方向(就是不换图片,方向一直朝左),不知道为什么