- BC20270022's blog
玉防闪
- 2025-4-25 21:55:28 @
HF
基础物资
玉 免疫重拳
防 免疫戳、斩、小电、小猪
闪 免疫戳、千年、万年、亿年、小电、中电
甩剑 本回合后台不可抵消
特殊牌
哈哈
反小猪,中猪,斩,元气斩,暴击,重击,白洞
上挂
下挂
举报
使所有状态为挂的玩家退出,且命数清零
防系(抵消)
4防=2盾(前台3.5G,后台0.5G)=2盾=1钟(前台8G,后台1G)=1钟
戳系
2玉=2戳(0.5G)=1千年(0.5G)->万年(1G)->亿年(2G)
猪系
8玉=4小猪(0.5G)=2中猪(1G)=1大猪(2G)=1吴猪(4G)->聪明吴猪(8G)
电系
12闪=4小电(0.5G)=2中电(1G)=1大电(2G)->雷神(4G)
斩系(群)
2玉2防=2斩(0.5G)=1元气斩(0.5G)
1元气斩(出过中猪)=1猪油斩(1G)
绝杀系(群)
40玉=2绝杀(1命)=1超级绝杀(2命)(无视挂的免疫)
(剩2人,状态为挂)=1绝杀
搏击系
12玉=4重拳(0.5G)=2天地之拳(1G)=1无相(2G)=1马丁(4G)->百变马丁(8G)
8玉8防=4暴击(0.5G)=2重击(1G)=1痛击(2G)=1马丁(4G)->百变马丁(8G)
洞系
4玉=1黑洞
1黑洞+2甩剑=1白洞(伤害1G)
1黑洞+1白洞=1虫洞(伤害2G)
狒狒系
10甩剑=2狒狒(伤害3.5G)=1暗黑狒狒(伤害7G)+1蕉蕉(蕉蕉1命)
16玉6防(剩2人)=2狒狒(伤害3.5G)=1暗黑狒狒(伤害7G)+1暗黑蕉蕉(蕉蕉2命)
解析
以python语言制作双人游戏
游戏是同步行动制,每人初始1命,物资皆为0个
护盾可以吸收伤害,若护盾剩余伤害吸收量不为正,则护盾破碎
若1个钟仅吸收了0.5G伤害,则此护盾转化为1个盾
盾伤害吸收量为0.5G,每回合最多只能用1个盾吸收伤害
钟伤害吸收量为1G
若本回合选了45或46,则不可使用非本回合获得的护盾
若本回合选了9或41,且你最终受到的伤害不超过3.5G,则不可使用其他护盾
若本回合选了10或42,且你最终受到的伤害不超过8G,则不可使用其他护盾
若本回合选了9或41,且你最终受到的伤害超过3.5G,则本回合不可使用本回合获得的护盾
若本回合选了10或42,且你最终受到的伤害超过8G,则本回合不可使用本回合获得的护盾
每回合结束时若护盾无法吸收剩余伤害,则命数减1,且重新获得本回合吸收伤害过程中失去的护盾,重新恢复本回合吸收伤害过程中转化的护盾
命数不为正则出局
物资为负需重新选择本回合的行动
0.5G为伤害单位
减命不算伤害,不可无视,吸收
若双方互相造成伤害,则伤害小的无效,若造成相同伤害,则都无效
若你本回合有挂,且你没选43和44和45和46和5,则本回合无视行动的消耗和前提条件
若你本回合有挂,且你没选44和45和46和5,且仅存在2个人未出局,则本回合无视行动的消耗和前提条件
若你本回合有挂,则本回合无视所有伤害
若你本回合受到多个伤害,则其中仅最大的伤害生效
若你本回合受到黑洞的影响,且你本回合选45或46,则黑洞的影响不对45和46生效
若你本回合受到多个黑洞的影响,则所有影响你的黑洞的使用者无法执行你的此行动
你的挂数仅能为0或1
每回合所有人需从下列选一个行动完成
1.获得2个玉,且本回合无视重拳的伤害
2.获得2个防,且本回合无视戳,斩,小电,小猪的伤害
3.获得2个闪,且本回合无视戳,千年,万年,亿年,小电,中电的伤害
4.获得2个甩剑,且本回合护盾不可吸收伤害
5.仅挂数为0才能选,获得1个挂
6.仅挂数为1才能选,失去1个挂
7.使本回合所有有挂的人出局且行动效果无效化
8.仅你上2回合没有都选8才能选本回合反弹别人对你造成的白洞,暴击,重击,小猪,中猪,斩,元气斩的伤害
9.消耗了2个防,获得1个盾,仅本回合此护盾伤害吸收量额外增加3G
10.消耗2个盾,获得1个钟,仅本回合此护盾伤害吸收量额外增加7G
11.消耗1个玉,获得1个戳,且本回合可造成0.5G的戳的伤害,若目标选32或27,则此伤害无效
12.消耗2个戳,本回合可造成0.5G的千年的伤害,若目标选32,则此伤害无效
13.仅上回合选了12才能选,本回合可造成1G的万年的伤害
14.仅上回合选了13才能选,本回合可造成2G的亿年的伤害
15.消耗1个玉和1个防,获得1个斩,且本回合可对其他所有人造成0.5G的斩的伤害,若有人对你造成元气斩或暴击的伤害,则其无视此伤害
16.消耗2个斩,获得1个元气斩,且本回合可对其他所有人造成0.5G的元气斩的伤害,若有人对你造成暴击的伤害,则其无视此伤害
17.仅选过23才能选,消耗1个元气斩,本回合可对其他所有人造成1G的伤害
18.消耗3个闪,获得1个小电,且本回合可造成0.5G的小电的伤害,若目标选32,则此伤害无效
19.消耗2个小电,获得1个中电,且本回合可造成1G的中电的伤害
20.消耗2个中电,本回合可造成2G的伤害
21.仅上回合选了20才能选,本回合可造成4G的伤害
22.消耗2个玉,获得1个小猪,且本回合可造成0.5G的小猪的伤害,若目标选32,则此伤害无效
23.消耗2个小猪,获得1个中猪,且本回合可造成1G的中猪的伤害
24.消耗2个中猪,获得1个大猪,且本回合可造成2G的伤害
25.消耗1个大猪,本回合可造成4G的伤害
26.仅上回合选了25才能选,本回合可造成8G的伤害
27.消耗3个玉,获得1个重拳,且本回合可造成0.5G的重拳的伤害,若目标选32,则此伤害无效
28.消耗2个重拳,获得1个天地之拳,且本回合可造成1G的伤害
29.消耗2个天地之拳,获得1个无相,且本回合可造成2G的伤害
30.消耗1个无相,本回合可造成4G的伤害
31.仅上回合选了30或35才能选,本回合可造成8G的伤害
32.消耗2个玉和2个防,获得1个暴击,且本回合可造成0.5G的暴击的伤害
33.消耗2个暴击,获得1个重击,且本回合可造成1G的重击的伤害
34.消耗2个重击,获得1个痛击,且本回合可造成2G的伤害
35.消耗1个痛击,本回合可造成4G的伤害
36.消耗5个甩剑,获得1个狒狒和1个蕉蕉,且本回合可造成3.5G的伤害
37.消耗2个狒狒,获得1个暗黑蕉蕉,且本回合可造成7G的伤害
38.消耗1个蕉蕉,你的命数加1,且本回合护盾不可吸收伤害
39.消耗1个暗黑蕉蕉,你的命数加2,且本回合护盾不可吸收伤害
40.仅本回合仅存在2个人未出局才能选,消耗8个玉和3个防,获得1个狒狒和1个蕉蕉,且本回合可造成3.5G的伤害
41.消耗1个盾,获得1个盾,仅本回合此护盾伤害吸收量额外增加3G
42.消耗1个钟,获得1个钟,仅本回合此护盾伤害吸收量额外增加7G
43.消耗20个玉,获得1个绝杀,且本回合无视所有伤害,本回合若目标有人不选43或44且目标没挂,其命数减1,且其本回合不会再因为回合结束时护盾无法吸收剩余伤害而减命
44.消耗2个绝杀,且本回合无视所有伤害,本回合若有人选43,其命数减1,若有人不选43或44,其命数减2,且其本回合不会再减命
45.仅目标选1或2或3或4或8或9或10才能选,消耗4个玉,获得1个黑洞,且目标的行动无效且消耗不变,你额外执行目标的行动且无视此行动的消耗和前提条件
46.仅目标不选1和2和3和4和8和9和10才能选,消耗4个玉,获得1个黑洞,且目标的行动无效且消耗不变,你记录目标的行动
47.消耗1个黑洞和2个甩剑,获得1个白洞,且本回合可造成1G的白洞的伤害
48.消耗1个黑洞和1个白洞,本回合可造成2G的伤害
49.从你记录的行动中选择1个执行并删除,且本回合无视行动的消耗和前提条件
平局条件
1.所有人都出局
2.所有人都有挂
豆包
WIDTH, HEIGHT = 1200, 800
SCREEN = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("双人同步行动游戏")
# 颜色定义
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GRAY = (200, 200, 200)
BLUE = (0, 0, 255)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
# 字体设置
FONT_SMALL = pygame.font.Font(None, 24)
FONT_MID = pygame.font.Font(None, 32)
FONT_LARGE = pygame.font.Font(None, 48)
# 行动列表(简化,对应编号和名称)
ACTIONS = {
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: "反黑洞"
}
# 物资类型(顺序对应显示顺序)
ITEMS = ["玉", "防", "闪", "甩剑", "戳", "斩", "元气斩",
"小电", "中电", "小猪", "中猪", "大猪", "重拳", "天地之拳", "无相",
"暴击", "重击", "痛击", "狒狒", "蕉蕉", "暗黑蕉蕉", "绝杀", "黑洞", "白洞"]
class Player:
def __init__(self, is_ai=False):
self.is_ai = is_ai # 是否为AI
self.name = "AI" if is_ai else "玩家"
self.life = 1 # 命数
self.gua = 0 # 挂数(0/1)
self.items = {item: 0 for item in ITEMS} # 物资数量
self.shield1 = 0 # 盾(常规)
self.shield1_temp = 0 # 本回合获得的盾
self.shield2 = 0 # 钟(常规)
self.shield2_temp = 0 # 本回合获得的钟
self.recorded_actions = [] # 记录的行动(46号行动用)
self.last_two_actions = [None, None] # 上2回合行动(8号行动用)
self.last_action = None # 上回合行动(13/14/21/26/31号行动用)
self.round_actions = deque(maxlen=20) # 近20回合行动记录(回溯用)
self.current_action = None # 本回合选择的行动
self.action_selected = False # 是否已选行动
self.damage_taken = 0 # 本回合受到的伤害
self.effect_text = "" # 本回合效果提示
def draw_button(text, x, y, w, h, color, hover_color, font):
"""绘制按钮"""
mouse = pygame.mouse.get_pos()
click = pygame.mouse.get_pressed()
if x < mouse[0] < x + w and y < mouse[1] < y + h:
pygame.draw.rect(SCREEN, hover_color, (x, y, w, h))
if click[0] == 1:
return True
else:
pygame.draw.rect(SCREEN, color, (x, y, w, h))
# 绘制文字
text_surf = font.render(text, True, BLACK)
text_rect = text_surf.get_rect(center=(x + w//2, y + h//2))
SCREEN.blit(text_surf, text_rect)
return False
def draw_player_status(player, x_start, y_start):
"""绘制玩家/AI状态"""
# 名字和命数
name_text = FONT_LARGE.render(f"{player.name} (命: {player.life}, 挂: {player.gua})", True, BLACK)
SCREEN.blit(name_text, (x_start, y_start))
# 本回合效果提示
effect_text = FONT_SMALL.render(player.effect_text, True, RED)
SCREEN.blit(effect_text, (x_start, y_start + 40))
# 护盾
shield_text = FONT_MID.render(f"盾: {player.shield1}({player.shield1_temp}临时) 钟: {player.shield2}({player.shield2_temp}临时)", True, BLACK)
SCREEN.blit(shield_text, (x_start, y_start + 80))
# 物资(分4列显示)
y_item = y_start + 120
for i, (item, num) in enumerate(player.items.items()):
col = i % 4
row = i // 4
item_text = FONT_SMALL.render(f"{item}: {num}", True, BLACK)
SCREEN.blit(item_text, (x_start + col * 150, y_item + row * 30))
# 行动选择提示
if not player.action_selected:
select_text = FONT_MID.render("请选择行动(点击下方编号)", True, BLUE)
SCREEN.blit(select_text, (x_start, y_start + 350))
else:
selected_text = FONT_MID.render(f"已选行动: {player.current_action} - {ACTIONS[player.current_action]}", True, GREEN)
SCREEN.blit(selected_text, (x_start, y_start + 350))
def draw_action_buttons(x_start, y_start, player):
"""绘制行动选择按钮(简化为1-10号行动,可扩展)"""
if player.action_selected:
return
y_btn = y_start
for idx in range(1, 11): # 先显示1-10号行动,可扩展全部
if draw_button(f"{idx}: {ACTIONS[idx]}", x_start, y_btn, 400, 30, GRAY, (150,150,150), FONT_SMALL):
# 暂不验证行动合法性(实际需加:物资、前提条件等)
player.current_action = idx
player.action_selected = True
y_btn += 35
def draw_backtrack_window(players):
"""绘制回溯窗口(近20回合行动)"""
# 窗口背景
pygame.draw.rect(SCREEN, WHITE, (100, 100, 1000, 600))
pygame.draw.rect(SCREEN, BLACK, (100, 100, 1000, 600), 2)
# 标题
title = FONT_MID.render("近20回合行动回溯", True, BLACK)
SCREEN.blit(title, (500, 120))
# 表头
round_text = FONT_SMALL.render("回合", True, BLACK)
player_text = FONT_SMALL.render("玩家行动", True, BLACK)
ai_text = FONT_SMALL.render("AI行动", True, BLACK)
SCREEN.blit(round_text, (150, 160))
SCREEN.blit(player_text, (400, 160))
SCREEN.blit(ai_text, (750, 160))
# 行动记录
y = 200
max_round = max(len(players[0].round_actions), len(players[1].round_actions))
for i in range(max_round):
round_num = FONT_SMALL.render(str(i+1), True, BLACK)
SCREEN.blit(round_num, (150, y))
# 玩家行动
p_action = players[0].round_actions[i] if i < len(players[0].round_actions) else "无"
p_text = FONT_SMALL.render(f"{p_action} - {ACTIONS.get(p_action, '')}", True, BLACK)
SCREEN.blit(p_text, (250, y))
# AI行动
ai_action = players[1].round_actions[i] if i < len(players[1].round_actions) else "无"
ai_text = FONT_SMALL.render(f"{ai_action} - {ACTIONS.get(ai_action, '')}", True, BLACK)
SCREEN.blit(ai_text, (600, y))
y += 30
if y > 650:
break
# 关闭按钮
if draw_button("关闭", 550, 650, 100, 40, GRAY, (150,150,150), FONT_MID):
return False
return True
def ai_select_action(ai):
"""AI简单决策逻辑(可扩展)"""
# 优先级:1. 缺物资→选1-3;2. 没挂→选5;3. 有物资→选护盾/伤害技能
if ai.items["玉"] < 2:
return 1 # 先拿玉
elif ai.items["防"] < 2:
return 2 # 拿防
elif ai.gua == 0:
return 5 # 拿挂
elif ai.items["防"] >= 2 and ai.shield1 < 2:
return 9 # 做盾
else:
return 11 # 拿戳打伤害
def reset_round(players):
"""重置回合状态"""
for p in players:
p.current_action = None
p.action_selected = False
p.damage_taken = 0
p.effect_text = ""
def settle_round(players):
"""回合结算(简化版:仅处理物资获取、基础伤害)"""
player, ai = players
# 1. 记录本回合行动
player.round_actions.append(player.current_action)
ai.round_actions.append(ai.current_action)
# 2. 更新上回合/上2回合行动
for p in players:
p.last_two_actions = [p.last_action, p.current_action]
p.last_action = p.current_action
# 3. 执行行动效果(简化:仅处理1-5号行动,可扩展全部)
# 玩家行动执行
if player.current_action == 1:
player.items["玉"] += 2
player.effect_text = "本回合无视重拳伤害"
elif player.current_action == 2:
player.items["防"] += 2
player.effect_text = "本回合无视戳/斩/小电/小猪伤害"
elif player.current_action == 3:
player.items["闪"] += 2
player.effect_text = "本回合无视戳/千年等伤害"
elif player.current_action == 4:
player.items["甩剑"] += 2
player.effect_text = "本回合护盾不可吸收伤害"
elif player.current_action == 5 and player.gua == 0:
player.gua = 1
player.effect_text = "获得1个挂"
# AI行动执行
if ai.current_action == 1:
ai.items["玉"] += 2
ai.effect_text = "本回合无视重拳伤害"
elif ai.current_action == 2:
ai.items["防"] += 2
ai.effect_text = "本回合无视戳/斩/小电/小猪伤害"
elif ai.current_action == 3:
ai.items["闪"] += 2
ai.effect_text = "本回合无视戳/千年等伤害"
elif ai.current_action == 4:
ai.items["甩剑"] += 2
ai.effect_text = "本回合护盾不可吸收伤害"
elif ai.current_action == 5 and ai.gua == 0:
ai.gua = 1
ai.effect_text = "获得1个挂"
# 4. 简化伤害结算(仅示例:AI选11号行动时对玩家造成0.5G伤害)
if ai.current_action == 11 and ai.items["玉"] >= 1:
ai.items["玉"] -= 1
player.damage_taken = 0.5
player.effect_text += " | 受到AI 0.5G戳伤害"
# 5. 护盾吸收伤害(简化规则)
for p in players:
if p.damage_taken <= 0:
continue
# 先算临时护盾
if p.shield1_temp > 0:
absorb = min(p.damage_taken, 0.5 + 3) # 9/41号行动额外3G
p.damage_taken -= absorb
p.shield1_temp -= 1
if absorb == 0.5: # 钟吸收0.5G变盾(此处简化为盾逻辑)
p.shield1 += 1
elif p.shield2_temp > 0:
absorb = min(p.damage_taken, 1 + 7) # 10/42号行动额外7G
p.damage_taken -= absorb
p.shield2_temp -= 1
if absorb == 0.5:
p.shield1 += 1
# 再算常规护盾
elif p.shield1 > 0:
absorb = min(p.damage_taken, 0.5)
p.damage_taken -= absorb
p.shield1 -= 1
if absorb == 0.5:
p.shield1 += 1
elif p.shield2 > 0:
absorb = min(p.damage_taken, 1)
p.damage_taken -= absorb
p.shield2 -= 1
if absorb == 0.5:
p.shield1 += 1
# 剩余伤害减命
if p.damage_taken > 0:
p.life -= 1
# 恢复护盾(简化:恢复所有使用的护盾)
p.shield1 += (1 if p.current_action == 9 or p.current_action == 41 else 0)
p.shield2 += (1 if p.current_action == 10 or p.current_action == 42 else 0)
# 6. 重置临时护盾
player.shield1_temp = 0
player.shield2_temp = 0
ai.shield1_temp = 0
ai.shield2_temp = 0
def check_game_over(players):
"""判断游戏结束"""
player, ai = players
# 平局条件
if player.life <= 0 and ai.life <= 0:
return "平局(所有人出局)"
if player.gua == 1 and ai.gua == 1:
return "平局(所有人有挂)"
# 胜负条件
if player.life <= 0:
return "AI胜利!"
if ai.life <= 0:
return "玩家胜利!"
return None
def main():
"""主游戏逻辑"""
player = Player(is_ai=False)
ai = Player(is_ai=True)
players = [player, ai]
game_state = "ready" # ready:未开始, playing:游戏中, backtrack:回溯中, game_over:结束
backtrack_showing = False
tip_showing = False
round_num = 0
while True:
SCREEN.fill(WHITE)
events = pygame.event.get()
for event in events:
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if game_state == "ready":
# 未开始界面:仅开始按钮
if draw_button("开始游戏", 500, 350, 200, 60, GREEN, (0,200,0), FONT_LARGE):
game_state = "playing"
reset_round(players)
elif game_state == "playing":
round_num += 1
# 绘制回合数
round_text = FONT_MID.render(f"第{round_num}回合", True, BLACK)
SCREEN.blit(round_text, (550, 20))
# 绘制玩家(左半屏)和AI(右半屏)状态
draw_player_status(player, 50, 60)
draw_player_status(ai, 650, 60)
# 绘制行动按钮(仅玩家选,AI自动选)
draw_action_buttons(50, 400, player)
# AI自动选行动(玩家选完后)
if player.action_selected and not ai.action_selected:
ai.current_action = ai_select_action(ai)
ai.action_selected = True
# 绘制功能按钮
if draw_button("回溯", 50, 720, 100, 40, GRAY, (150,150,150), FONT_MID):
backtrack_showing = True
game_state = "backtrack"
if draw_button("提示", 150, 720, 100, 40, GRAY, (150,150,150), FONT_MID):
tip_showing = not tip_showing
if draw_button("放弃回合", 1050, 720, 100, 40, RED, (200,0,0), FONT_MID):
reset_round(players)
# 双方都选完行动→结算
if player.action_selected and ai.action_selected:
settle_round(players)
# 检查游戏结束
game_over_msg = check_game_over(players)
if game_over_msg:
game_state = "game_over"
game_over_text = game_over_msg
else:
# 重置回合
pygame.time.wait(2000) # 显示结算结果2秒
reset_round(players)
# 显示提示
if tip_showing:
tip = FONT_SMALL.render("提示:当前物资不足,建议先选1-3获取玉/防/闪 | AI可能优先拿挂或护盾", True, BLUE)
pygame.draw.rect(SCREEN, WHITE, (300, 680, 600, 60))
SCREEN.blit(tip, (310, 700))
elif game_state == "backtrack":
# 回溯界面
if not draw_backtrack_window(players):
backtrack_showing = False
game_state = "playing"
elif game_state == "game_over":
# 结束界面:显示结果+返回按钮
over_text = FONT_LARGE.render(game_over_text, True, RED)
SCREEN.blit(over_text, (450, 300))
if draw_button("返回初始界面", 500, 400, 200, 60, GRAY, (150,150,150), FONT_MID):
# 重置游戏状态
player = Player(is_ai=False)
ai = Player(is_ai=True)
players = [player, ai]
game_state = "ready"
round_num = 0
pygame.display.update()
if __name__ == "__main__":
main()
'''3. 代码说明
1. 核心功能实现:
◦ 双人状态管理(命数、挂数、物资、护盾、行动记录)
◦ 同步行动机制(玩家手动选,AI自动选,选完后同步结算)
◦ 界面布局(左右分屏显示玩家/AI,边界显示物资,功能按钮)
◦ 关键按钮(开始、返回、回溯、提示)
◦ 简化回合结算(物资获取、基础伤害、护盾吸收)
◦ 游戏结束判定(胜负/平局条件)
2. 待扩展细节:
◦ 完善所有49个行动的执行逻辑(物资消耗、前提验证、特殊效果如黑洞/白洞/挂的无视规则)
◦ 优化AI决策(根据玩家状态动态调整策略,如针对玩家护盾用4号行动)
◦ 补充完整伤害结算规则(最大伤害生效、互相伤害抵消、挂无视伤害等)
◦ 细化护盾规则(转化、使用限制、破碎恢复)
◦ 完善回溯功能(显示更详细的回合效果)
3. 操作方法:
◦ 运行代码后点击【开始游戏】
◦ 玩家点击左侧行动按钮选择行动(先显示1-10号,可扩展全部)
◦ AI自动选择行动后,自动结算回合
◦ 点击【回溯】查看近20回合行动,点击【提示】获取AI推荐策略
◦ 游戏结束后点击【返回】重置游戏
'''