python实现飞行棋游戏
本文实例为大家分享了python实现飞行棋的具体代码,供大家参考,具体内容如下
importrandom
#地图初始坐标
Maps=[0]*100
#玩家A和玩家B的初始坐标
PlayerPos=[0]*2
#存储玩家姓名
playerNames=[""]*2
#俩个玩家行动的标记
Flags=[True]*2
#封装一个不换行的print
defprint_end(num):
print(num,end="")
defgameshow():
"""
飞行棋游戏头
"""
print('\033[1;31;m')
print("*"*50)
print('\033[1;32;m')
print("*"*50)
print('\033[5;33;m')
print("*"*15+"飞行棋爵士版v1.0"+"*"*20)
print('\033[1;34;m')
print("*"*50)
print('\033[1;35;m')
print("*"*50)
defchushihuamap():
luckyturn_list=[3,15,33,36,45,71,89,95]#幸运轮盘◎
fornumber1inluckyturn_list:
Maps[number1]=1
landmine_list=[7,19,39,67,77,97]#地雷●
fornumber2inlandmine_list:
Maps[number2]=2
pause_list=[2,5,9,31,37,56,87]#暂停▲
fornumber3inpause_list:
Maps[number3]=3
timeTunnel_list=[1,10,28,60,88,]#时空隧道卐
fornumber4intimeTunnel_list:
Maps[number4]=4
defdrawstringmap(a):
"""
构造地图
:parama:0~99的地图坐标
:return:返回地图坐标所在的图
"""
#玩家A和玩家B在同一坐标用<>表示
str=""
ifPlayerPos[0]==PlayerPos[1]andPlayerPos[0]==a:
str="<>"
elifPlayerPos[0]==a:
str="A"
elifPlayerPos[1]==a:
str="B"
else:
ifMaps[a]==0:
print_end('\033[1;32;m')
str="□"
elifMaps[a]==1:
print_end('\033[1;34;m')
str="◎"
elifMaps[a]==2:
print_end('\033[1;31;m')
str="●"
elifMaps[a]==3:
print_end('\033[1;35;m')
str="▲"
else:
print_end('\033[1;33;m')
str="卐"
returnstr
defdrawmap():
print("玩家A和玩家B在同一位置时用<>表示")
print("图例:幸运轮盘:◎地雷:●暂停:▲时空隧道:卐")
#第一横行
forainrange(0,30):
print_end(drawstringmap(a))
print()#第一横行结束后应该换行
#第一竖行
forainrange(30,35):
forbinrange(0,29):
print_end("")
print_end(drawstringmap(a))
print()
#第二横行
a=64
whilea>=35:
print_end(drawstringmap(a))
a-=1
print()#换行
#第二竖行
forainrange(65,70):
print(drawstringmap(a))
#第三竖行
forainrange(70,100):
print_end(drawstringmap(a))
#画完最后一行应换行
print()
defplayGame(playnumber):
"""
玩游戏
:paramplaynumber:玩家坐标
"""
rNumber=random.randint(1,6)
input()
print("玩家{0}按下任意键开始掷骰子".format(playerNames[playnumber]))
input()
print("玩家{0}掷出了{1}".format(playerNames[playnumber],rNumber))
PlayerPos[playnumber]+=rNumber
changePos()
input()
print("玩家{0}按任意键开始行动".format(playerNames[playnumber]))
input()
print("玩家{0}行动完了".format(playerNames[playnumber]))
input()
ifMaps[PlayerPos[playnumber]]==0:
print("玩家{0}踩到了方块,什么也没发生".format(playerNames[playnumber]))
elifMaps[PlayerPos[playnumber]]==1:
input_num=input("玩家{0}踩到了幸运轮盘,请选择1.轰炸对方(后退6格)2.交换位置".format(playerNames[playnumber]))
whileTrue:
ifinput_num=="1":
print("玩家{0}被轰炸,后退6格".format(playerNames[1-playnumber]))
PlayerPos[1-playnumber]-=6
changePos()
input()
break
elifinput_num=="2":
print("玩家{0}选择交换位置".format(playerNames[playnumber]))
PlayerPos[playnumber],PlayerPos[1-playnumber]=PlayerPos[1-playnumber],PlayerPos[playnumber]
input("交换完成,按任意键继续游戏")
break
else:
input_num=input("只能输入1.轰炸对方(后退6格)2.交换位置请重新输入")
elifMaps[PlayerPos[playnumber]]==2:
print("玩家{0}踩中了地雷,后退6格".format(playerNames[playnumber]))
PlayerPos[playnumber]-=6
changePos()
input()
elifMaps[PlayerPos[playnumber]]==3:
print("玩家{0}暂停一回合".format(playerNames[playnumber]))
Flags[playnumber]=False
input()
elifMaps[PlayerPos[playnumber]]==4:
print("恭喜玩家{0}进入时空隧道,前进10步".format(playerNames[playnumber]))
PlayerPos[playnumber]+=10
changePos()
input()
changePos()
#TODO清屏。。。。。
drawmap()
defchangePos():
ifPlayerPos[0]<0:
PlayerPos[0]=0
ifPlayerPos[0]>99:
PlayerPos[0]=99
ifPlayerPos[1]<0:
PlayerPos[1]=0
ifPlayerPos[1]>99:
PlayerPos[1]=99
defwin():
print('\033[5;33;m')
print("*"*80)
print("■■■")
print("■■■■■■■■■■■■")
print("■■■■■■■■")
print("■■■■■■■■■■■■■■■■")
print("■■■■■■■■■■■■■■■■■■■■")
print("■■■■●■●■■")
print("■■■●■●■■")
print("■■■■■■■■■■■■■●■●■■")
print("■■■■■■■■■●■●■■")
print("■■■■■■")
print("■■■■■■")
print("■■■■■■■")
print("■■■■■■■■■■■■■■■■■■")
print("*"*80)
definput_names():
print('\033[1;34;m')
playerNames[0]=input("请输入玩家A的姓名")
whileplayerNames[0]=="":
playerNames[0]=input("玩家A的名字不能为空,请重新输入")
playerNames[1]=input("请输入玩家B的姓名")
whileplayerNames[1]==""orplayerNames[0]==playerNames[1]:
ifplayerNames[1]=="":
playerNames[1]=input("玩家B的名字不能为空,请重新输入")
else:
playerNames[1]=input("玩家A的名字不能和玩家B的名字一样,请重新输入")
defa_and_b_plaing():
whilePlayerPos[0]<99andPlayerPos[1]<99:
ifFlags[0]==True:
playGame(0)
else:
Flags[0]=True
ifPlayerPos[0]>=99:
print("玩家{0}漂亮的赢了玩家{1}".format(playerNames[0],playerNames[1]))
break
ifFlags[1]==True:
playGame(1)
else:
Flags[1]=True
ifPlayerPos[1]>=99:
print("玩家{0}无耻的赢了玩家{1}".format(playerNames[1],playerNames[0]))
break
#TODO怎么清空控制台?
#开始游戏
gameshow()
input_names()
print("玩家{0}的姓名用A表示".format(playerNames[0]))
print("玩家{0}的姓名用B表示".format(playerNames[1]))
chushihuamap()
drawmap()
#玩家A和玩家B都没有到达终点
a_and_b_plaing()
drawmap()
win()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。