python实现飞行棋游戏

作者:憧憬001 时间:2021-11-28 14:43:23 

本文实例为大家分享了python实现飞行棋的具体代码,供大家参考,具体内容如下


import random
# 地图初始坐标
Maps = [0] *100

# 玩家A和玩家B的初始坐标
PlayerPos = [0]*2
# 存储玩家姓名
playerNames = [""] *2

# 俩个玩家行动的标记
Flags = [True]*2

# 封装一个不换行的print
def print_end(num):
print(num,end="")

def gameshow():
"""
飞行棋游戏头
"""
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)
def chushihuamap():
luckyturn_list = [3,15,33,36,45,71,89,95] # 幸运轮盘 ◎
for number1 in luckyturn_list:
 Maps[number1] = 1

landmine_list = [7,19,39,67,77,97] # 地雷 ●
for number2 in landmine_list:
 Maps[number2] = 2

pause_list = [2,5,9,31,37,56,87] # 暂停 ▲
for number3 in pause_list:
 Maps[number3] = 3

timeTunnel_list = [1,10,28,60,88,] # 时空隧道 卐
for number4 in timeTunnel_list:
 Maps[number4] = 4
def drawstringmap(a):
"""
 构造地图
:param a: 0~99 的地图坐标
:return: 返回地图坐标所在的 图
"""
# 玩家A和玩家B在同一坐标用<>表示
str = ""
if PlayerPos[0] == PlayerPos[1] and PlayerPos[0] == a:
 str = "<>"
elif PlayerPos[0] == a:
 str = "A"
elif PlayerPos[1] == a:
 str = "B"
else:
 if Maps[a] == 0:
  print_end('\033[1;32;m')
  str = " □"

elif Maps[a] == 1:
  print_end('\033[1;34;m')
  str = " ◎"

elif Maps[a] == 2:
  print_end('\033[1;31;m')
  str = " ●"

elif Maps[a] == 3:
  print_end('\033[1;35;m')
  str = " ▲"

else:
  print_end('\033[1;33;m')
  str = "卐"
return str
def drawmap():
print("玩家A和玩家B在同一位置时用<>表示")
print("图例:幸运轮盘:◎ 地雷:● 暂停:▲ 时空隧道:卐")
# 第一横行
for a in range(0,30):
 print_end(drawstringmap(a))
print() # 第一横行结束后应该换行
# 第一竖行
for a in range(30,35):
 for b in range(0,29):
  print_end(" ")
 print_end(drawstringmap(a))
 print()
# 第二横行
a = 64
while a >=35:
 print_end(drawstringmap(a))
 a -= 1
print() # 换行
# 第二竖行
for a in range(65,70):
 print(drawstringmap(a))
# 第三竖行
for a in range(70,100):
 print_end(drawstringmap(a))
# 画完最后一行应换行
print()
def playGame(playnumber):
"""
 玩游戏
:param playnumber: 玩家坐标
"""
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()
if Maps[PlayerPos[playnumber]] == 0:
 print("玩家{0}踩到了方块,什么也没发生".format(playerNames[playnumber]))
elif Maps[PlayerPos[playnumber]] == 1:
 input_num = input("玩家{0}踩到了幸运轮盘,请选择 1.轰炸对方(后退6格) 2.交换位置".format(playerNames[playnumber]))

while True:
  if input_num == "1":
   print("玩家{0}被轰炸,后退6格".format(playerNames[1 - playnumber]))
   PlayerPos[1 - playnumber] -= 6
   changePos()
   input()
   break
  elif input_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.交换位置 请重新输入")

elif Maps[PlayerPos[playnumber]] == 2:
 print("玩家{0}踩中了地雷,后退6格".format(playerNames[playnumber]))
 PlayerPos[playnumber] -= 6
 changePos()
 input()
elif Maps[PlayerPos[playnumber]] == 3:
 print("玩家{0}暂停一回合".format(playerNames[playnumber]))

Flags[playnumber] = False
 input()
elif Maps[PlayerPos[playnumber]] == 4:
 print("恭喜玩家{0}进入时空隧道,前进10步".format(playerNames[playnumber]))
 PlayerPos[playnumber] += 10
 changePos()
 input()
changePos()
# TODO 清屏 。。。。。
drawmap()
def changePos():
if PlayerPos[0] < 0:
 PlayerPos[0] = 0
if PlayerPos[0] >99:
 PlayerPos[0] = 99
if PlayerPos[1] < 0:
 PlayerPos[1] = 0
if PlayerPos[1] > 99:
 PlayerPos[1] = 99
def win():
print('\033[5;33;m')
print("*" * 80)
print("       ■      ■    ■   ")
print("  ■■■■■■■■  ■ ■      ■     ■   ")
print("  ■  ■  ■ ■      ■ ■   ■  ■   ")
print("  ■  ■  ■■■■■■■■■■    ■ ■   ■  ■   ")
print("  ■■■■■■■■ ■  ■     ■■■■■■■■  ■  ■   ")
print("  ■  ■ ■  ■      ●■ ●  ■  ■   ")
print("  ■  ■   ■      ● ■ ●  ■  ■   ")
print("  ■  ■  ■■■■■■■■■■■    ● ■ ● ■  ■   ")
print("  ■■■■■■■■   ■     ●  ■  ● ■  ■   ")
print("  ■  ■   ■      ■   ■  ■   ")
print("  ■  ■   ■      ■   ■  ■   ")
print("  ■   ■   ■      ■   ■  ■ ■   ")
print(" ■   ■ ■■■■■■■■■■■■■■    ■     ■   ")
print("*" * 80)
def input_names():
print('\033[1;34;m')
playerNames[0] = input("请输入玩家A的姓名")
while playerNames[0] == "":
 playerNames[0] = input("玩家A的名字不能为空,请重新输入")
playerNames[1] = input("请输入玩家B的姓名")
while playerNames[1] =="" or playerNames[0] == playerNames[1]:
 if playerNames[1] == "":
  playerNames[1] = input("玩家B的名字不能为空,请重新输入")
 else:
  playerNames[1] = input("玩家A的名字不能和玩家B的名字一样,请重新输入")
def a_and_b_plaing():
while PlayerPos[0] < 99 and PlayerPos[1] < 99:
 if Flags[0] == True:
  playGame(0)
 else:
  Flags[0] = True

if PlayerPos[0] >= 99:
  print("玩家{0}漂亮的赢了玩家{1}".format(playerNames[0], playerNames[1]))
  break

if Flags[1] == True:
  playGame(1)
 else:
  Flags[1] = True

if PlayerPos[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()

python实现飞行棋游戏

来源:https://blog.csdn.net/qq_42874994/article/details/83374137

标签:python,飞行棋
0
投稿

猜你喜欢

  • Python学习之MRO方法搜索顺序

    2022-01-25 13:08:12
  • 天翼开放平台免费短信验证码接口使用实例

    2023-10-13 06:41:55
  • Python 解析库json及jsonpath pickle的实现

    2021-09-10 00:27:14
  • php通过获取头信息判断图片类型的方法

    2023-11-10 00:31:50
  • python中如何使用正则表达式提取数据

    2023-12-09 17:24:21
  • 如何做一个可以让人家申请使用的计数器?

    2010-07-11 21:17:00
  • NCCL深度学习Bootstrap网络连接建立源码解析

    2022-02-25 22:28:10
  • Python制作当年第一款手机游戏-贪吃蛇游戏(练习)

    2022-06-20 02:37:35
  • python 地图经纬度转换、纠偏的实例代码

    2021-11-06 11:12:18
  • 用Python代码自动生成文献的IEEE引用格式的实现

    2021-05-26 15:24:49
  • tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)

    2023-11-08 23:30:21
  • Python : turtle色彩控制实例详解

    2022-09-22 13:01:46
  • pyqt5 使用cv2 显示图片,摄像头的实例

    2023-09-28 10:33:24
  • Django中提示消息messages的设置方式

    2021-08-14 20:40:51
  • python包合集shutil示例代码详解

    2022-03-28 12:04:27
  • Python GUI布局尺寸适配方法

    2022-03-07 05:52:26
  • sql server 视图作用

    2009-01-05 13:53:00
  • mac 安装python网络请求包requests方法

    2023-08-05 09:01:41
  • PHP中soap的用法实例

    2023-11-14 09:40:24
  • 详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程

    2022-04-19 21:35:31
  • asp之家 网络编程 m.aspxhome.com