import random as r
import os
import time as t
SCORE=0
score=0
def choose_piece(n,board):
if n==1:
choose1=input('请玩家一选择移动哪颗棋子(注意大小写!!!)')
if choose1 in board and len(choose1)==1:
if ord(choose1)>=65 and ord(choose1)<=73:
return choose1
else:
print('输入错误,请重新选择')
return choose_piece(n,board)
else:
print('输入错误,请重新选择')
return choose_piece(n,board)
else:
choose2=input('请玩家二选择移动哪颗棋子(注意大小写!!!)')
if choose2 in board and len(choose2)==1:
if ord(choose2)>=97 and ord(choose2)<=105:
return choose2
else:
print('输入错误,请重新选择')
return choose_piece(n,board)
else:
print('输入错误,请重新选择')
return choose_piece(n,board)
def direction(n,choose,board):
if n==1:
direction1=input('请玩家一选择移动方向(1=向左,2=向右,3=向下,输入r重新选择棋子)')
if direction1=='1':
if board[board.index(choose)-1]=='#' or (ord(board[board.index(choose)-1])>=65 and ord(board[board.index(choose)-1])<=73) or board.index(choose)%10==0:
print('无法向该方向移动,请重新选择')
return direction(n,choose,board)
return choose,'left'
elif direction1=='2':
if board[board.index(choose)+1]=='#' or (ord(board[board.index(choose)+1])>=65 and ord(board[board.index(choose)+1])<=73) or board.index(choose)%10==9:
print('无法向该方向移动,请重新选择')
return direction(n,choose,board)
return choose,'right'
elif direction1=='3':
if board[board.index(choose)+10]=='#' or (ord(board[board.index(choose)+10])>=65 and ord(board[board.index(choose)+10])<=73) or board.index(choose)+10>99:
print('无法向该方向移动,请重新选择')
return direction(n,choose,board)
return choose,'down'
elif direction1=='r':
choose=choose_piece(n,board)
return direction(n,choose,board)
else:
print('输入错误,请重新选择')
return direction(n,choose,board)
else:
direction1=input('请玩家二选择移动方向(1=向上,2=向下,3=向右,输入r重新选择棋子)')
if direction1=='1':
if board[board.index(choose)-10]=='#' or (ord(board[board.index(choose)-10])>=97 and ord(board[board.index(choose)-10])<=105) or board.index(choose)-10<0:
print('无法向该方向移动,请重新选择')
return direction(n,choose,board)
return choose,'up'
elif direction1=='2':
if board[board.index(choose)+10]=='#' or (ord(board[board.index(choose)+10])>=97 and ord(board[board.index(choose)+10])<=105) or board.index(choose)+10>99:
print('无法向该方向移动,请重新选择')
return direction(n,choose,board)
return choose,'down'
elif direction1=='3':
if board[board.index(choose)+1]=='#' or (ord(board[board.index(choose)+1])>=97 and ord(board[board.index(choose)+1])<=105) or board.index(choose)%10==9:
print('无法向该方向移动,请重新选择')
return direction(n,choose,board)
return choose,'right'
elif direction1=='r':
choose=choose_piece(n,board)
return direction(n,choose,board)
else:
print('输入错误,请重新选择')
return direction(n,choose,board)
def move(choose,direction,board):
global SCORE,score
l=['up','down','left','right']
n=l.index(direction)
del l
l=[-10,10,-1,1]
n=l[n]
place=board.index(choose)
if ord(choose)>=65 and ord(choose)<=73 and place+n>=90:
SCORE+=1
board[place]='*'
print('玩家一的棋子'+choose+'已成功逃脱!')
t.sleep(3)
elif ord(choose)>=97 and ord(choose)<=105 and (place+n)%10==9:
score+=1
board[place]='*'
print('玩家二的棋子'+choose+'已成功逃脱!')
t.sleep(3)
elif board[place+n]=='&':
print('地雷被引爆了!')
board[place+n]='*'
if place+n==99:
x=(-11,-10,-1)
elif place+n>=90:
x=(-11,-10,-9,-1,1)
elif (place+n)%10==9:
x=(-11,-10,-1,9,10)
else:
x=(-11,-10,-9,-1,1,9,10,11)
for i in x:
if board[place+n+i]!='#' and board[place+n+i]!='@' and board[place+n+i]!='&':
board[place+n+i]='*'
elif board[place+n]=='@':
board=wormhole(choose,place,n,board)
else:
board[place+n]=choose
board[place]='*'
return board
def print_(board_):
for i in range(10):
print(board_[i*10:i*10+10])
def change(board):
board_=''
for i in range(100):
board_=board_+board[i]
return board_
def wormhole(choose,place,n,board):
print('虫洞被使用了!')
x=('1','2','3','4','5','6','7','8')
way=input('请选择被传送到另一个虫洞哪个方位(1=左上,2=上,3=右上,4=左,5=右,6=左下,7=下,8=右下)')
if way not in x:
print('输入错误,请重新输入')
return wormhole(place,n,board)
x=(-11,-10,-9,-1,1,9,10,11)
way=int(way)
way-=1
if place+n==33:
if board[77+x[way]]=='#':
print('无法向该方向移动,请重新选择')
return wormhole(choose,place,n,board)
elif board[77+x[way]]=='&':
board[77+x[way]]='*'
for i in x:
if board[77+x[way]+i]!='#' and board[77+x[way]+i]!='@' and board[77+x[way]+i]!='&':
board[77+x[way]+i]='*'
else:
board[77+x[way]]=choose
board[place]='*'
else:
if board[33+x[way]]=='#':
print('无法向该方向移动,请重新选择')
return wormhole(choose,place,n,board)
elif board[33+x[way]]=='&':
board[33+x[way]]='*'
for i in x:
if board[33+x[way]+i]!='#' and board[33+x[way]+i]!='@' and board[33+x[way]+i]!='&':
board[33+x[way]+i]='*'
else:
board[33+x[way]]=choose
board[place]='*'
return board
def check_end(board):
p1=True
p2=True
for i in board:
if ord(i)>=65 and ord(i)<=73:
p1=False
elif ord(i)>=97 and ord(i)<=105:
p2=False
return p1,p2
print('欢迎来玩逃脱游戏,该游戏为双人游戏,规则如下:')
print('1、在棋盘中字母表示双方的棋子,大写字母(A~I)是玩家一的,小写字母(a~i)是玩家二的,两人轮流走棋')
print('2、每人九颗棋,每一回合挑一颗棋走,大写的每颗棋每步可以向下、向左或向右,小写的每颗棋每步可以向右、向上或向下')
print('3、若大写的一颗棋走到了最下面一行的其中一格,或小写的一颗棋走到了最右面一列的其中一格,则它算是逃脱了,应从棋盘上拿走')
print('4、若在玩家二走完以后(即一个回合结束后),双方或其中一方的棋子全部被从棋盘上拿走(不一定是逃脱了,也可能是被吃了)后,游戏结束,逃脱棋子数量多的一方赢')
print('5、若游戏结束时一方在棋盘上还剩有棋子,且对方有超过一半的棋子已逃脱,则均判定为未逃脱,否则均判定为已逃脱')
print('每个格子要么是棋子,要么是空白或是其他道具,介绍如下:')
print('空白(用*表示),棋子可以正常到达的格子')
print('路障(用#表示),任何棋子都不可以走到这一格')
print('地雷(用&表示),当任意一颗棋走到这一格后地雷将立刻被触发,周围3×3范围内的所有棋子死亡')
print('虫洞(用@表示),当棋子走到这一格旁边后,下一步可以走进虫洞,并立刻被传送到另一个虫洞旁边的8个位置中任意位置(自选)')
print('\n\n\n')
t.sleep(5)
input('若已阅读完规则,请按下回车键')
os.system('cls')
board_=[]
for i in range(5):
board_.append('#')
board_.append('&')
board_.append('&')
for i in range(64):
board_.append('*')
r.shuffle(board_)
board_.insert(20,'@')
board_.insert(60,'@')
for i in range(9):
board_.insert(0,chr(73-i))
board_.insert(0,'*')
for i in range(9):
board_.insert(i*10+10,chr(97+i))
board=board_[:]
board_=change(board)
while True:
print_(board_)
p1,p2=check_end(board)
if p1 or p2:
print('游戏已结束!')
break
print('\n')
choose1=choose_piece(1,board)
print('\n')
choose1,direction1=direction(1,choose1,board)
print('\n')
board=move(choose1,direction1,board)
print('\n')
board_=change(board)
os.system('cls')
print_(board_)
p1,p2=check_end(board)
if p2:
print('游戏已结束!')
break
print('\n')
choose2=choose_piece(2,board)
print('\n')
choose2,direction2=direction(2,choose2,board)
print('\n')
board=move(choose2,direction2,board)
print('\n')
board_=change(board)
os.system('cls')
if p1:
if SCORE<5:
for i in board:
if ord(i)>=97 and ord(i)<=105:
score+=1
else:
if score<5:
for i in board:
if ord(i)>=65 and ord(i)<=73:
SCORE+=1
print('玩家一的棋子有'+str(SCORE)+'颗成功逃脱')
print('玩家二的棋子有'+str(score)+'颗成功逃脱')
if SCORE>score:
print('恭喜玩家一胜利!')
elif SCORE<score:
print('恭喜玩家二胜利!')
else:
print('恭喜两位玩家,这次是平局!')
t.sleep(5)