python实现飞行棋游戏
作者:憧憬001 发布时间:2021-11-28 14:43:23
标签:python,飞行棋
本文实例为大家分享了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()
来源:https://blog.csdn.net/qq_42874994/article/details/83374137


猜你喜欢
- cookie :是用户保存在用户浏览器端的一对键值对,是为了解决http的无状态连接。服务端是可以把 cookie写到用户浏览器上,用户每次
- 1. 背景在使用selenium浏览器渲染技术,爬取网站信息时,默认情况下就是一个普通的纯净的chrome浏览器,而我们平时在使用浏览器时,
- 安装Scrapy的安装很简单,官方文档也有详细的说明 http://scrapy-chs.readthedocs.io/zh_CN/0.24
- 概述Rollup, 和 Webpack, Parcel 都是模块打包工具(module bundler tool), 但是侧重点不同, 我们
- 今天生产上项目启动访问 一个数据库的时候,出现了ORA-12505, TNS:listener does not currently kno
- 我们公司网站的项目都是采用utf-8编码格式的,一天,发现部分电脑打开网站的一个页面是空白页,要在IE下重新选择编码才显示正常。我们网站的编
- 写在前面:本节主要讲述一些基本的,常用的SQL语句,而非数据库方面的基本知识。数据库方面的知识留待以后再讲,现在就我们平常常用的一些SQL语
- 上午在分析索引的使用情况,想看一下数据库什么时候启动的,确保统计的数据没有问题,可以使用下面三种方法查询:--2008及之后版本才有SELE
- 网络训练中,loss曲线非常奇怪交叉熵怎么会有负数。经过排查,交叉熵不是有个负对数吗,当网络输出的概率是0-1时,正数。可当网络输出大于1的
- 第一:pandas.read_csv读取本地csv文件为数据框形式data=pd.read_csv('G:\data_operati
- 本文详细列出了HTML中使用到的各种鼠标事件,如onclick,onmouseover等;页面相关事件如:onerror,onload等;h
- 在js中调用asp文件的方法很简单,我们可以用在静态页面的点击数统计,虽然静态页面不支持asp程序,但是我们可以使用js调用,来变相的达到这
- 2020年4月4日,是个特殊的日子,我们看到朋友圈很多灰化的图片.今天我们就聊聊图片灰度处理这事儿.PIL的基本概念:PIL中所涉及的基本概
- 1 区分几个路径GOROOT:Golang的安装路径,安装之后就默认自带了GOPATH:Golang的工作目录go_project // (
- 前言:饼状图是用来呈现一个数据系列中各项的大小与各项占项总和的百分比,Matplotlib 提供了plt.pie()方法绘制柱状图,语法格式
- 本篇文章用到 element官网 和 七牛云官网element-ui 官网:https://element.eleme.io/#/zh-CN
- url标记为变量通过把 URL 的一部分标记为 <variable_name> 就可以在 URL 中添加变量。标记的 部分会作为
- 前言PyTorch作为一款深度学习框架,已经帮助我们实现了很多很多的功能了,包括数据的读取和转换了,那么这一章节就介绍一下PyTorch内置
- 为什么要对URL进行encode在写网络爬虫时,发现提交表单中的中文字符都变成了TextBox1=%B8%C5%C2%CA%C2%DB这种样
- Keras运行迭代一定代数以后,速度越来越慢,经检查是因为在循环迭代过程中增加了新的计算节点,导致计算节点越来越多,内存被占用完,速度变慢。