python實(shí)現(xiàn)飛行棋游戲
本文實(shí)例為大家分享了python實(shí)現(xiàn)飛行棋的具體代碼,供大家參考,具體內(nèi)容如下
import random
# 地圖初始坐標(biāo)
Maps = [0] *100
# 玩家A和玩家B的初始坐標(biāo)
PlayerPos = [0]*2
# 存儲玩家姓名
playerNames = [""] *2
# 倆個(gè)玩家行動的標(biāo)記
Flags = [True]*2
# 封裝一個(gè)不換行的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] # 幸運(yùn)輪盤 ◎
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,] # 時(shí)空隧道 卐
for number4 in timeTunnel_list:
Maps[number4] = 4
def drawstringmap(a):
"""
構(gòu)造地圖
:param a: 0~99 的地圖坐標(biāo)
:return: 返回地圖坐標(biāo)所在的 圖
"""
# 玩家A和玩家B在同一坐標(biāo)用<>表示
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在同一位置時(shí)用<>表示")
print("圖例:幸運(yùn)輪盤:◎ 地雷:● 暫停:▲ 時(shí)空隧道:卐")
# 第一橫行
for a in range(0,30):
print_end(drawstringmap(a))
print() # 第一橫行結(jié)束后應(yīng)該換行
# 第一豎行
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))
# 畫完最后一行應(yīng)換行
print()
def playGame(playnumber):
"""
玩游戲
:param playnumber: 玩家坐標(biāo)
"""
rNumber = random.randint(1,6)
input()
print("玩家{0}按下任意鍵開始擲骰子".format(playerNames[playnumber]))
input()
print("玩家{0}擲出了{(lán)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}踩到了方塊,什么也沒發(fā)生".format(playerNames[playnumber]))
elif Maps[PlayerPos[playnumber]] == 1:
input_num = input("玩家{0}踩到了幸運(yùn)輪盤,請選擇 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("交換完成,按任意鍵繼續(xù)游戲")
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}進(jìn)入時(shí)空隧道,前進(jìn)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 都沒有到達(dá)終點(diǎn)
a_and_b_plaing()
drawmap()
win()

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
利用Python實(shí)現(xiàn)自定義連點(diǎn)器
這篇文章主要介紹了如何利用Python實(shí)現(xiàn)自定義連點(diǎn)器,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08
Python中參數(shù)打包和解包的實(shí)現(xiàn)
在Python中,打包和解包參數(shù)是一種操作方式,可以將多個(gè)參數(shù)打包成一個(gè)元組或字典,也可以將一個(gè)元組或字典解包成多個(gè)參數(shù),本文就來介紹一下如何使用2023-09-09
Laravel+Dingo/Api 自定義響應(yīng)的實(shí)現(xiàn)
這篇文章主要介紹了Laravel+Dingo/Api 自定義響應(yīng)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02
Python中l(wèi)ist查詢及所需時(shí)間計(jì)算操作示例
這篇文章主要介紹了Python中l(wèi)ist查詢及所需時(shí)間計(jì)算操作,涉及Python列表list遍歷、查詢及時(shí)間消耗計(jì)算相關(guān)操作技巧,需要的朋友可以參考下2018-06-06
Python基礎(chǔ)教程之while循環(huán)用法講解
Python中除了for循環(huán)之外還有一個(gè)while循環(huán),下面這篇文章主要給大家介紹了關(guān)于Python基礎(chǔ)教程之while循環(huán)用法講解的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12
詳解python函數(shù)傳參傳遞dict/list/set等類型的問題
這篇文章主要介紹了詳解python函數(shù)傳參傳遞dict/list/set等類型的問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
python使用百度或高德地圖獲取地理位置并轉(zhuǎn)換
用python處理地理位置是非常常見的需求,下面這篇文章主要給大家介紹了關(guān)于python使用百度或高德地圖獲取地理位置并轉(zhuǎn)換的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
PyTorch使用GPU訓(xùn)練的兩種方法實(shí)例
pytorch是一個(gè)非常優(yōu)秀的深度學(xué)習(xí)的框架,具有速度快,代碼簡潔,可讀性強(qiáng)的優(yōu)點(diǎn),下面這篇文章主要給大家介紹了關(guān)于PyTorch使用GPU訓(xùn)練的兩種方法,需要的朋友可以參考下2022-05-05

