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 # 存儲(chǔ)玩家姓名 playerNames = [""] *2 # 倆個(gè)玩家行動(dòng)的標(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}按任意鍵開始行動(dòng)".format(playerNames[playnumber])) input() print("玩家{0}行動(dòng)完了".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)輪盤,請(qǐng)選擇 1.轟炸對(duì)方(后退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.轟炸對(duì)方(后退6格) 2.交換位置 請(qǐng)重新輸入") 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("請(qǐng)輸入玩家A的姓名") while playerNames[0] == "": playerNames[0] = input("玩家A的名字不能為空,請(qǐng)重新輸入") playerNames[1] = input("請(qǐng)輸入玩家B的姓名") while playerNames[1] =="" or playerNames[0] == playerNames[1]: if playerNames[1] == "": playerNames[1] = input("玩家B的名字不能為空,請(qǐng)重新輸入") else: playerNames[1] = input("玩家A的名字不能和玩家B的名字一樣,請(qǐng)重新輸入") 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}無(wú)恥的贏了玩家{1}".format(playerNames[1], playerNames[0])) break # TODO 怎么清空控制臺(tái)? # 開始游戲 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()
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
利用Python實(shí)現(xiàn)自定義連點(diǎn)器
這篇文章主要介紹了如何利用Python實(shí)現(xiàn)自定義連點(diǎn)器,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08Python中參數(shù)打包和解包的實(shí)現(xiàn)
在Python中,打包和解包參數(shù)是一種操作方式,可以將多個(gè)參數(shù)打包成一個(gè)元組或字典,也可以將一個(gè)元組或字典解包成多個(gè)參數(shù),本文就來(lái)介紹一下如何使用2023-09-09Laravel+Dingo/Api 自定義響應(yīng)的實(shí)現(xiàn)
這篇文章主要介紹了Laravel+Dingo/Api 自定義響應(yīng)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02Python中l(wèi)ist查詢及所需時(shí)間計(jì)算操作示例
這篇文章主要介紹了Python中l(wèi)ist查詢及所需時(shí)間計(jì)算操作,涉及Python列表list遍歷、查詢及時(shí)間消耗計(jì)算相關(guān)操作技巧,需要的朋友可以參考下2018-06-06Python基礎(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ì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04python使用百度或高德地圖獲取地理位置并轉(zhuǎn)換
用python處理地理位置是非常常見的需求,下面這篇文章主要給大家介紹了關(guān)于python使用百度或高德地圖獲取地理位置并轉(zhuǎn)換的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07PyTorch使用GPU訓(xùn)練的兩種方法實(shí)例
pytorch是一個(gè)非常優(yōu)秀的深度學(xué)習(xí)的框架,具有速度快,代碼簡(jiǎn)潔,可讀性強(qiáng)的優(yōu)點(diǎn),下面這篇文章主要給大家介紹了關(guān)于PyTorch使用GPU訓(xùn)練的兩種方法,需要的朋友可以參考下2022-05-05