-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
184 lines (183 loc) · 6.33 KB
/
Copy pathindex.html
File metadata and controls
184 lines (183 loc) · 6.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
# 坦克大战源码
import pygame
import time
screen_width = 800
screen_height = 600
bg_color = pygame.Color(120, 200, 200)
text_color = 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 = Tank(400, 300)
# 设置窗口的标题
pygame.display.set_caption('坦克大战')
while True:
# 使坦克的速度慢一点
time.sleep(0.02)
# 给窗口设置填充色
MainGame.window.fill(bg_color)
# 获取事件
self.getevent()
# 绘制文字
MainGame.window.blit(self.getTextSurface('敌方坦克剩余数量%d'%6), (10, 10))
# 调用坦克显示的方法
MainGame.my_tank.displayTank()
# 调用坦克移动的方法
# 如果调用坦克的开关是开启,才可以移动
if not MainGame.my_tank.stop:
MainGame.my_tank.move()
pygame.display.update()
# 结束游戏
def endgame(self):
print('谢谢使用,欢迎再次使用')
exit()
# 左上角文字的绘制
def getTextSurface(self, text):
# 初始化字体模块
pygame.font.init()
# 获取字体Font对象
font = pygame.font.SysFont('kaiti', 16)
# 绘制文本信息
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:
# 切换方向
MainGame.my_tank.direction = 'L'
# 修改坦克的开关状态
MainGame.my_tank.stop = False
# MainGame.my_tank.move()
print('按下左键,坦克向左移动')
elif event.key == pygame.K_RIGHT:
# 切换方向
MainGame.my_tank.direction = 'R'
# 修改坦克的开关状态
MainGame.my_tank.stop = False
# MainGame.my_tank.move()
print('按下右键,坦克向右移动')
elif event.key == pygame.K_UP:
# 切换方向
MainGame.my_tank.direction = 'U'
# 修改坦克的开关状态
MainGame.my_tank.stop = False
# MainGame.my_tank.move()
print('按下上键,坦克向上移动')
elif event.key == pygame.K_DOWN:
# 切换方向
MainGame.my_tank.direction = 'D'
# 修改坦克的开关状态
MainGame.my_tank.stop = False
# MainGame.my_tank.move()
print('按下下键,坦克向下移动')
elif event.key == pygame.K_SPACE:
print('按下空格键,发射子弹')
# 松开方向键,坦克停止移动,修改坦克的开关状态
if event.type == pygame.KEYUP:
# 判断松开的键是上下左右时才停止坦克移动
if event.key == pygame.K_UP or event.key == pygame.K_DOWN or \
event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
MainGame.my_tank.stop = True
class Tank:
# 添加距离左边left,距离上边top
def __init__(self, left, top,):
# 保存加载的图片
self.images = {
'U': pygame.image.load('img/up.gif'),
'D': pygame.image.load('img/down.gif'),
'L': pygame.image.load('img/left.gif'),
'R': pygame.image.load('img/right.gif')
}
# 方向
self.direction = 'U'
# 根据当前图片的方向获取图片
self.image = self.images[self.direction]
# 根据图片获取区域
self.rect = self.image.get_rect()
# 设置区域的left和top
self.rect.left = left
self.rect.top = top
# 速度 决定移动的快慢
self.speed = 3
# 坦克移动的开关
self.stop = True
# 移动
def move(self):
# 判断坦克的方向进行移动
if self.direction == 'L':
if self.rect.left > 0:
self.rect.left -= self.speed
elif self.direction == 'U':
if self.rect.top > 0:
self.rect.top -= self.speed
elif self.direction == 'D':
if self.rect.top+self.rect.height <= 600:
self.rect.top += self.speed
elif self.direction == 'R':
if self.rect.left+self.rect.height <= 800:
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):
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()