文章目录
游戏源码
代码
import pygame
import sys
import random
pygame.init()
pygame.mixer.init()
screen = pygame.display.set_mode([1000, 1000])
screen.fill((255, 255, 255))
pygame.display.set_caption('极限突围')
pygame.display.set_icon(pygame.image.load("/home/peddy/桌面/pygame组/极限突围组/图标.png"))
def paint(picture, left_right, up_down, rotate, width_height, x_y):
screen.blit(pygame.transform.scale(pygame.transform.rotate(pygame.transform.flip(pygame.image.load(picture),
left_right, up_down), rotate), width_height), x_y)
def word(mode, size, the_word, enable, colour, x_y):
screen.blit(pygame.font.SysFont(mode, size).render(the_word, enable, colour), x_y)
lead = {'健康': {'头部': 30, '胸部': 80, '腹部': 35, '左手': 60, '右手': 60, '左腿': 65, '右腿': 65},
'主武器': {'武器': 'MP5', '子弹': 200, '弹夹': 0},
'手枪': {'武器': '无', '子弹': 0},
'行动': {'举枪': False}}
zombie = []
system = {'坐标': {'走廊': {'x': 0, 'y': 0}},
'大小': {'走廊': {'width': 1000, 'height': 1000}},
'主角': {'举枪放大': False, '举枪缩小': False, '开枪': False},
'烟雾': {'x': 300, 'y': 260, 'width': 270, 'height': 220}}
weapon = {'MP5': {'杀伤力': 20, '弹夹容量': 30},
'G17': {'杀伤力': 10, '弹夹容量': 17}}
a, b = 0, 0
while True:
# print(503 > (zombie[0]['x'] - zombie[0]['width']) > -503 and 617 > (zombie[0]['y'] - zombie[0]['height']) > -617)
for event in pygame.event.get():
pygame.display.flip()
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_j:
if lead['行动']['举枪'] is False:
system['主角']['举枪缩小'] = False
lead['行动']['举枪'] = True
elif lead['行动']['举枪'] is True:
system['主角']['举枪放大'] = False
lead['行动']['举枪'] = False
if event.key == pygame.K_k and lead['行动']['举枪'] is True and lead['主武器']['弹夹'] != 0:
system['主角']['开枪'] = True
lead['主武器']['弹夹'] -= 1
for i in range(len(zombie)):
if 503 > (zombie[i]['x'] - zombie[i]['width']) > -503 and \
617 > (zombie[i]['y'] - zombie[i]['height']) > -617 and zombie[i]['状态'] is True:
zombie[i]['状态'] = False
break
if event.key == pygame.K_r and lead['主武器']['弹夹'] == 0:
if lead['主武器']['子弹'] >= weapon[lead['主武器']['武器']]['弹夹容量']:
lead['主武器']['子弹'] -= weapon[lead['主武器']['武器']]['弹夹容量']
lead['主武器']['弹夹'] = weapon[lead['主武器']['武器']]['弹夹容量']
if pygame.key.get_pressed()[pygame.K_RIGHT] and lead['行动']['举枪'] is True:
system['坐标']['走廊']['x'] -= 50
if pygame.key.get_pressed()[pygame.K_LEFT] and lead['行动']['举枪'] is True:
system['坐标']['走廊']['x'] += 50
if pygame.key.get_pressed()[pygame.K_DOWN] and lead['行动']['举枪'] is True:
system['坐标']['走廊']['y'] -= 50
if pygame.key.get_pressed()[pygame.K_UP] and lead['行动']['举枪'] is True:
system['坐标']['走廊']['y'] += 50
if lead['行动']['举枪'] is True and system['主角']['举枪放大'] is False:
system['大小']['走廊']['width'] = 3000
system['大小']['走廊']['height'] = 3000
system['坐标']['走廊']['x'] = -850
system['坐标']['走廊']['y'] = -470
for i in range(len(zombie)):
zombie[i]['width'] = 450 + zombie[i]['a']
zombie[i]['height'] = 450 + zombie[i]['b']
system['主角']['举枪放大'] = True
elif lead['行动']['举枪'] is False and system['主角']['举枪缩小'] is False:
system['大小']['走廊']['width'] = 1000
system['大小']['走廊']['height'] = 1000
system['坐标']['走廊']['x'] = 0
system['坐标']['走廊']['y'] = 0
for i in range(len(zombie)):
zombie[i]['width'] = 150 + zombie[i]['a']
zombie[i]['height'] = 150 + zombie[i]['b']
system['主角']['举枪缩小'] = True
if system['坐标']['走廊']['x'] > -10 and lead['行动']['举枪'] is True:
system['坐标']['走廊']['x'] = -10
if system['坐标']['走廊']['x'] < -1990 and lead['行动']['举枪'] is True:
system['坐标']['走廊']['x'] = -1990
if system['坐标']['走廊']['y'] > -10 and lead['行动']['举枪'] is True:
system['坐标']['走廊']['y'] = -10
if system['坐标']['走廊']['y'] < -1990 and lead['行动']['举枪'] is True:
system['坐标']['走廊']['y'] = -1990
if lead['行动']['举枪'] is True:
for i in range(len(zombie)):
if zombie[i]['状态'] is True:
# x = random.randint(1, 2)
# if x == 1:
zombie[i]['x'] = system['坐标']['走廊']['x'] + 1200
zombie[i]['y'] = system['坐标']['走廊']['y'] + 1000
# elif x == 2:
# zombie[i]['x'] = system['坐标']['走廊']['x'] + 1000
# zombie[i]['y'] = system['坐标']['走廊']['y'] + 800
else:
zombie[i]['x'] = 300
zombie[i]['y'] = 400
screen.fill((255, 255, 255))
for i in range(len(zombie)):
if zombie[i]['状态'] is True:
zombie[i]['a'] += 3
zombie[i]['b'] += 3
zombie[i]['width'] += 3
zombie[i]['height'] += 3
x = random.randint(1, 50)
if 45 >= x >= 1:
pass
else:
for i in range(1):
if lead['行动']['举枪'] is False:
zombie.append({'x': random.randint(300, 400), 'y': random.randint(250, 350),
'width': 150, 'height': 150, '状态': True, 'a': 0, 'b': 0, '尸体': random.randint(1, 2)})
else:
zombie.append({'x': random.randint(300, 400), 'y': random.randint(200, 270),
'width': 450, 'height': 450, '状态': True, 'a': 0, 'b': 0, '尸体': random.randint(1, 2)})
paint(picture="走廊.png", left_right=False, up_down=False, rotate=0,
width_height=(system['大小']['走廊']['width'], system['大小']['走廊']['width']),
x_y=(system['坐标']['走廊']['x'], system['坐标']['走廊']['y']))
for i in range(len(zombie)):
if zombie[i]['状态'] is True:
paint(picture="丧尸.png", left_right=False, up_down=False, rotate=0,
width_height=(zombie[i]['width'], zombie[i]['height']), x_y=(zombie[i]['x'], zombie[i]['y']))
else:
if zombie[i]['尸体'] == 1:
paint(picture="丧尸 尸体1.png", left_right=False, up_down=False,
rotate=0, width_height=(zombie[i]['width'], zombie[i]['height']), x_y=(zombie[i]['x'],
zombie[i]['y']))
elif zombie[i]['尸体'] == 2:
paint(picture="丧尸 尸体2.png", left_right=False, up_down=False,
rotate=0, width_height=(zombie[i]['width'], zombie[i]['height']), x_y=(zombie[i]['x'],
zombie[i]['y']))
if lead['行动']['举枪'] is True:
if system['主角']['开枪'] is False:
paint(picture="举枪.png", left_right=False, up_down=False, rotate=0,
width_height=(1100, 1100), x_y=(0, 0))
if system['主角']['开枪'] is True:
paint(picture="举枪 射击.png", left_right=False, up_down=False, rotate=0,
width_height=(1000, 1000), x_y=(0, 0))
system['主角']['开枪'] = False
paint(picture="主武器.png", left_right=False, up_down=False, rotate=0,
width_height=(400, 300), x_y=(600, 0))
word(mode='gbk', size=30, enable=True, colour=(0, 0, 0), x_y=(670, 150),
the_word=str(lead['主武器']['弹夹']) + ' / ' + str(lead['主武器']['子弹']))
pygame.display.update()
图片
在下载图片后记得向代码中填入对应路径。
举枪 射击:
举枪:
丧尸 尸体1:
丧尸 尸体2:
丧尸:
图标:
主武器:
走廊:
快捷资源(可直接运行)
从百度网盘下载,是一个文件夹,叫“极限突围快捷资源”。
所有的图片都在里面,找到“极限突围 可执行文件”,然后后直接运行就可以了。
快捷资源内容:
·游戏可执行文件
·游戏源代码
·游戏所需图片
链接: link
提取码:1234