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] = 1landmine_list = [7,19,39,67,77,97] # 地雷 ●for number2 in landmine_list:Maps[number2] = 2pause_list = [2,5,9,31,37,56,87]  # 暂停 ▲for number3 in pause_list:Maps[number3] = 3timeTunnel_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 = 64while a >=35:print_end(drawstringmap(a))a -= 1print() # 换行# 第二竖行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] += rNumberchangePos()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] -= 6changePos()input()breakelif input_num == "2":print("玩家{0}选择交换位置".format(playerNames[playnumber]))PlayerPos[playnumber],PlayerPos[1 - playnumber] = PlayerPos[1 - playnumber],PlayerPos[playnumber]input("交换完成,按任意键继续游戏")breakelse:input_num = input("只能输入 1.轰炸对方(后退6格) 2.交换位置 请重新输入")elif Maps[PlayerPos[playnumber]] == 2:print("玩家{0}踩中了地雷,后退6格".format(playerNames[playnumber]))PlayerPos[playnumber] -= 6changePos()input()elif Maps[PlayerPos[playnumber]] == 3:print("玩家{0}暂停一回合".format(playerNames[playnumber]))Flags[playnumber] = Falseinput()elif Maps[PlayerPos[playnumber]] == 4:print("恭喜玩家{0}进入时空隧道,前进10步".format(playerNames[playnumber]))PlayerPos[playnumber] += 10changePos()input()changePos()# TODO 清屏 。。。。。drawmap()
def changePos():if PlayerPos[0] < 0:PlayerPos[0] = 0if PlayerPos[0] >99:PlayerPos[0] = 99if PlayerPos[1] < 0:PlayerPos[1] = 0if 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] = Trueif PlayerPos[0] >= 99:print("玩家{0}漂亮的赢了玩家{1}".format(playerNames[0], playerNames[1]))breakif Flags[1] == True:playGame(1)else:Flags[1] = Trueif 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飞行棋小游戏相关推荐

  1. C# 实现飞行棋小游戏

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. C# 飞行棋小游戏 (控制台应用)

    目录 C# 控制台飞行棋小游戏 简要介绍 游戏画面 规则说明 游戏代码 `Entry.cs` `Operate.cs` `Map.cs` `Player.cs` 其他问题 C# 控制台飞行棋小游戏 简 ...

  3. C#实现一个控制台飞行棋小游戏(附源码)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. 【全栈计划 —— 编程语言之C#】 C# 实现双人飞行棋小游戏

    文章目录 前言 项目结构流程图 项目实现 一.游戏开始界面 二.初始化游戏地图 三.绘制飞行棋地图 四.玩游戏具体逻辑 ① 创建两个玩家角色 ② 具体走到每个关卡触发的结果 ③ 判断胜利 ④ 回首调优 ...

  5. 【C#】制作简单的飞行棋小游戏

    飞行棋双人小游戏 目标:实现飞行棋游戏基础功能 玩家在地图触发道具: 获得道具,可以进行一次选择 1–交换位置 2–让对方退随机格子 踩到炸弹,让对方暂停一回合 乘上了飞机,前进10格 进入隧道,将随 ...

  6. C#控制台实现飞行棋小游戏

    游戏标题 static void ShowTitle(){Console.ForegroundColor = ConsoleColor.Cyan;Console.WriteLine("*** ...

  7. C#基础知识---飞行棋小游戏

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  8. 记录基础学习第二_小项目_飞行棋小游戏

    飞行棋项目: 1.游戏头(要求每一个句子显示不同的颜色 )  //这里用到了Console类中的ForegroundColor属性 取值是枚举类型ConsoleColor中的值             ...

  9. C#-飞行棋小游戏的前识 067

    1) Console.Title 这是Console类的一个属性用于设置控制台的标题 2)Console.Clear() 不用说是一个方法,用于清除控制台屏幕上的文字,只清除该代码中方法前面输出的内容 ...

最新文章

  1. 面试官:Java如何绑定线程到指定CPU上执行?
  2. ansys怎么合并体_骨质增生是由什么原因造成的?膝盖骨质增生是怎么造成的?...
  3. Python 基本数据类型 (一) - 整数
  4. [Qt教程] 第44篇 进阶(四)信号和槽
  5. 台式电脑计算机无法启动 启动修复,遇到计算机无法启动时,该怎么修复?
  6. Python - Seaborn可视化:图形个性化设置的几个小技巧
  7. XmlPullParser
  8. (JAVA)CollectionDemo3
  9. ASP.NET与MVC架构区别总结
  10. 比继承更有弹性的装饰者模式
  11. 如何用pe安装服务器系统安装系统教程视频,微pe安装系统教程视频
  12. 最近在论证一个问题,到底是先有鸡还是先有蛋:
  13. Python爬虫与信息提取(八)将新浪热搜排名导入数据库
  14. 光滑曲线_计算机图形学十:贝塞尔曲线与贝塞尔曲面
  15. 【DG】 DataGuard 中处理archive gap的方法
  16. LeetCode 448.找到所有数组中消失的数字
  17. 由Monkey测试引发的跨多个进程的Android系统死锁问题分析
  18. base64decode(), base64.b64encode()用法
  19. 【调剂】武汉理工大学-交通学院-接收调剂
  20. 微信朋友圈图片样式实现方法

热门文章

  1. ffserver服务器实现WebM格式视频直播
  2. Application在安卓中的应用
  3. 表格内容拆分怎么快速完成
  4. 【观察】助力汽车行业自我迭代背后 SAP的定力、能力与合力
  5. SQL低版本连续多条记录合并,多条记录分组合并
  6. LiveNVR监控流媒体Onvif/RTSP功能功能-支持GB35114接入国标流媒体平台接入说明
  7. 爬梯:Redis全解析(二)
  8. Win10家庭版、专业版、企业版、教育版各版本功能区别对照表
  9. visio2003无法找到加载项的解决办法
  10. 总结及寒假计划 2019.1