Python實(shí)現(xiàn)人生重開模擬器小游戲講解
思維導(dǎo)圖
前言
前面我們已經(jīng)學(xué)了python中的順序,選擇,循環(huán)語句以及break和continue的使用,下面根據(jù)這幾個(gè)語句,來講解一個(gè)代碼案例
一、設(shè)置初始屬性
相信大家都玩過人生重開模擬器這樣類型的小游戲。
在游戲中,一般會(huì)有四個(gè)屬性
- 顏值(face)
- 體質(zhì)(strong)
- 智力(iq)
- 家境(home)
在這里可以約定一下屬性的范圍,以及4個(gè)屬性的總和不能超過多少。
我們約定屬性的范圍為1-10,總和不得超過20.
1.游戲標(biāo)題
在這里可以先把游戲的標(biāo)題打印在開頭
print("******************************************") print(" ") print(" 人生重開模擬器 ") print(" ") print(" 花有重開日 人無在少年 ") print(" ") print("******************************************")
2.屬性的初始化
這四個(gè)屬性可以由玩家自己輸入,這就用到了之前講到的input
函數(shù),通過這個(gè)函數(shù),來完成屬性的初始化。
print("請(qǐng)?jiān)O(shè)置初始屬性(可用屬性值:20)") face = int(input("設(shè)定顏值(1-10)")) iq = int(input("設(shè)定智力(1-10)")) strong = int(input("設(shè)定體質(zhì)(1-10)")) home = int(input("設(shè)定家境(1-10)"))
這樣就完成了屬性的輸入,這樣并不完善,前面我們已經(jīng)約定過了,屬性不得超過多少,總和不得超過多少,所以下面要用我們學(xué)到過的if-elif-else
語句,對(duì)這四個(gè)屬性和總和進(jìn)行判斷。
if face < 1 or face > 10: print("顏值設(shè)置錯(cuò)誤") continue elif iq < 1 or iq > 10: print("智力設(shè)置錯(cuò)誤") continue elif strong < 1 or strong > 10: print("體質(zhì)設(shè)置錯(cuò)誤") continue elif home < 1 or home > 10: print("家境設(shè)置錯(cuò)誤") continue elif face + iq + strong + home > 20: print("總屬性超過20") continue print("初始屬性設(shè)置完畢") print(f"顏值:{face},體質(zhì):{strong},智力:{iq},家境:{home}")
每當(dāng)某一個(gè)屬性不符合的時(shí)候,就把原因打印的屏幕上并重新輸入屬性值,如果符合約定,則把四個(gè)屬性值打印在屏幕上。
當(dāng)某個(gè)判斷出現(xiàn)錯(cuò)誤的時(shí)候,代碼會(huì)直接結(jié)束程序,而不會(huì)讓玩家循環(huán)輸出,這是因?yàn)槿鄙倭艘粋€(gè)循環(huán),那么我們就要設(shè)置一個(gè)能夠使得屬性初始化但不符合約定,就要讓玩家重新輸入屬性值的功能。這個(gè)時(shí)候就用到了while循環(huán)
while True: print("請(qǐng)?jiān)O(shè)置初始屬性(可用屬性值:20)") face = int(input("設(shè)定顏值(1-10)")) iq = int(input("設(shè)定智力(1-10)")) strong = int(input("設(shè)定體質(zhì)(1-10)")) home = int(input("設(shè)定家境(1-10)")) if face < 1 or face > 10: print("顏值設(shè)置錯(cuò)誤") continue elif iq < 1 or iq > 10: print("智力設(shè)置錯(cuò)誤") continue elif strong < 1 or strong > 10: print("體質(zhì)設(shè)置錯(cuò)誤") continue elif home < 1 or home > 10: print("家境設(shè)置錯(cuò)誤") continue elif face + iq + strong + home > 20: print("總屬性超過20") continue print("初始屬性設(shè)置完畢") print(f"顏值:{face},體質(zhì):{strong},智力:{iq},家境:{home}")
當(dāng)所有判斷都滿足約定的時(shí)候,就不能在繼續(xù)循環(huán)了,要結(jié)束程序,這個(gè)時(shí)候就break
就派上了用場,滿足判定,直接跳出while
循環(huán)。
在上面這個(gè)代碼尾部加上break
即可注意break的位置要縮進(jìn)。
二、設(shè)置性別
設(shè)置性別是一個(gè)有意思的話題,性別一定要做到隨機(jī),設(shè)置隨機(jī)數(shù)就用到了一個(gè)函數(shù)random.randint
,這個(gè)函數(shù)是python中自帶的模塊,使用前要先調(diào)用一下這個(gè)模塊import random
通過 random.randint(1,6)
可以生成一個(gè)1-6的隨機(jī)整數(shù)。
- 如果是單數(shù):男孩
- 如果是雙數(shù):女孩
男孩女孩會(huì)遇到不同的事件。
point = random.randint(1,6) # print(f'隨機(jī)數(shù)為:{point}') if point % 2 == 1: gender = "boy" print("你是個(gè)男孩.") else: gender = "girl" print("你是個(gè)女孩.")
三、設(shè)置出生點(diǎn)
首先按照家境可以把出生點(diǎn)分為4部分
- 10是第一部分,家境最好,加成也最高
- 7-9第二部分,也有一些加成
- 4-6第三部分,加成較少
- 1-4第四部分,會(huì)扣掉屬性
當(dāng)然,大家在自己寫的時(shí)候,可以多寫幾個(gè)部分,讓游戲充滿更多的可能。
然后,在生成1-3之間的隨機(jī)數(shù),每一個(gè)數(shù)字代表一種情況。
point = random.randint(1,3) if home == 10: #第一部分 print("你出生在帝都,父母是世界首富.") home += 1 face += 1 iq += 1 elif home >= 7 and home <=9: #第二部分 if point == 1: print("你出生在一線城市,父母是醫(yī)生.") face += 2 elif point == 2: print("你出生在一線城市,父母是資深程序員.") iq += 2 else: print("你出生在一線城市,父母是健身教練.") strong += 3 face += 1 iq -= 1 elif home >= 4 and home <= 6: #第三部分 if point == 1: print("你出生在三線城市,父母是企業(yè)管理.") iq += 1 elif point == 2: print("你出生在三線城市,父母是小學(xué)老師.") iq += 1 else: print("你出生在三線城市,父母是自己開店做生意.") home += 1 else: #第四部分 if point == 1: print("你出生在農(nóng)村,父母是農(nóng)民.") strong += 2 face -= 1 elif point == 2: print("你出生在山里,父母是獵人.") strong += 2 home -= 1 face -= 1 else: print("你出生在小鎮(zhèn)上,父母是鎮(zhèn)長.") face += 1 home += 1 print(f"顏值:{face},體量:{strong},智力:{iq},家境:{home}")
四、針對(duì)每一歲自動(dòng)生成人生經(jīng)歷
按照年齡可以把人生分為四個(gè)截?cái)?/p>
- 幼年
- 青年
- 壯年
- 老年
每個(gè)截?cái)鄷?huì)有不同的事情發(fā)生,也可能會(huì)有一些機(jī)遇。
例如:幼年截?cái)?,智力,顏值,體質(zhì)等會(huì)發(fā)生變化,在這里可以展開事件的發(fā)生。
此處只寫幼年經(jīng)歷:
因?yàn)槭敲恳荒辏梢杂胒or循環(huán)展開,把每一年的經(jīng)歷,用字符串進(jìn)行拼接,循環(huán)到最后,輸出字符串即可,針對(duì)事件的發(fā)生,可以用隨機(jī)數(shù),根據(jù)數(shù)字來發(fā)生事件,也可以根據(jù)性別,顏值,體質(zhì)等來觸發(fā)事件,不同的事件有不同的影響,如果得病去世,可以直接用sys.exit(0)
退出程序,使用time.sleep(1)
可以使程序暫停一秒,便于觀察。
for age in range(1,11): #把一整年的打印都整理到一個(gè)字符串中,在這一年的結(jié)尾統(tǒng)一打印 info = f'你今年{age}歲' #生成一個(gè)一到三的隨機(jī)整數(shù) point = random.randint(1,3) #接下來編寫各種事件的代碼 #性別觸發(fā)的事件 if gender == 'girl' and home <= 3 and point == 1: info += '你的家里人重男輕女思想非常嚴(yán)重,把你丟棄了.' print("游戲結(jié)束.") sys.exit(0) #體質(zhì)觸發(fā)事件 elif strong < 6 and point < 3: info += '你生了一場病.' if home >= 5: info += '在父母的照顧下,你康復(fù)了.' strong += 1 home -= 1 else: info += '父母沒時(shí)間管你,你的情況更糟糕了.' strong -= 1 # 顏值觸發(fā)事件 elif face <= 4 and age >= 7: info += '你長的太丑了,別的小朋友不和你一起玩.' if iq > 5: info += '你決定用學(xué)習(xí)填充自己.' iq += 1 else: if gender == 'boy': info += '你和別的小朋友打架.' strong += 1 iq -= 1 else: info += '你經(jīng)常被別的小朋友欺負(fù).' strong -= 1 #智商觸發(fā)的事件 elif iq < 5: info += '你看起來傻乎乎的.' if home >= 8 and age >= 6: info += '你的父母把你送到更好的學(xué)校學(xué)習(xí).' iq += 1 elif 4 <= home <= 7: if gender == 'boy': info += '你的父母鼓勵(lì)你多運(yùn)動(dòng),爭取成為運(yùn)動(dòng)健將.' strong += 1 else: info += '你的古父母鼓勵(lì)你多打扮自己.' face += 1 else: info += '你的父母經(jīng)常為此吵架.' if point == 1: strong -= 1 elif point == 2: iq -= 1 else: pass #健康成長 else: info += '你健康成長.' if point == 1: info += '你看起來更結(jié)實(shí)了.' strong += 1 elif point == 2: info += '你看起來更好看了.' face += 1 else: pass #打印這一年發(fā)生的事情 print(info) print(f"顏值:{face},體質(zhì):{strong},智力:{iq},家境:{home}") print("---------------------------------------------------------------") time.sleep(1)
總結(jié)(附代碼)
在這里,并不把四個(gè)截?cái)嗳繉懲?,只寫一個(gè)幼年階段。把這一篇文章看完,相信大家有能力自行實(shí)現(xiàn)后續(xù)內(nèi)容,讓游戲變得更完整。
注:在使用sys.exit和time.sleep的時(shí)候別忘了調(diào)用一下
import sys
import time
""" 人生重開模擬器 花有重開日,人無在少年 """ import random import sys import time print("******************************************") print(" ") print(" 人生重開模擬器 ") print(" ") print(" 花有重開日 人無在少年 ") print(" ") print("******************************************") while True: print("請(qǐng)?jiān)O(shè)置初始屬性(可用屬性值:20)") face = int(input("設(shè)定顏值(1-10)")) iq = int(input("設(shè)定智力(1-10)")) strong = int(input("設(shè)定體質(zhì)(1-10)")) home = int(input("設(shè)定家境(1-10)")) if face < 1 or face > 10: print("顏值設(shè)置錯(cuò)誤") continue elif iq < 1 or iq > 10: print("智力設(shè)置錯(cuò)誤") continue elif strong < 1 or strong > 10: print("體質(zhì)設(shè)置錯(cuò)誤") continue elif home < 1 or home > 10: print("家境設(shè)置錯(cuò)誤") continue elif face + iq + strong + home > 20: print("總屬性超過20") continue print("初始屬性設(shè)置完畢") print(f"顏值:{face},體質(zhì):{strong},智力:{iq},家境:{home}") break point = random.randint(1,6) if point % 2 == 1: gender = "boy" print("你是個(gè)男孩.") else: gender = "girl" print("你是個(gè)女孩.") point = random.randint(1,3) if home == 10: print("你出生在帝都,父母是世界首富.") home += 1 face += 1 iq += 1 elif home >= 7 and home <=9: if point == 1: print("你出生在一線城市,父母是醫(yī)生.") face += 2 elif point == 2: print("你出生在一線城市,父母是資深程序員.") iq += 2 else: print("你出生在一線城市,父母是健身教練.") strong += 3 face += 1 iq -= 1 elif home >= 4 and home <= 6: if point == 1: print("你出生在三線城市,父母是企業(yè)管理.") iq += 1 elif point == 2: print("你出生在三線城市,父母是小學(xué)老師.") iq += 1 else: print("你出生在三線城市,父母是自己開店做生意.") home += 1 else: if point == 1: print("你出生在農(nóng)村,父母是農(nóng)民.") strong += 2 face -= 1 elif point == 2: print("你出生在山里,父母是獵人.") strong += 2 home -= 1 face -= 1 else: print("你出生在小鎮(zhèn)上,父母是鎮(zhèn)長.") face += 1 home += 1 print(f"顏值:{face},體量:{strong},智力:{iq},家境:{home}") for age in range(1,11): info = f'你今年{age}歲' point = random.randint(1,3) if gender == 'girl' and home <= 3 and point == 1: info += '你的家里人重男輕女思想非常嚴(yán)重,把你丟棄了.' print("游戲結(jié)束.") sys.exit(0) elif strong < 6 and point < 3: info += '你生了一場病.' if home >= 5: info += '在父母的照顧下,你康復(fù)了.' strong += 1 home -= 1 else: info += '父母沒時(shí)間管你,你的情況更糟糕了.' strong -= 1 elif face <= 4 and age >= 7: info += '你長的太丑了,別的小朋友不和你一起玩.' if iq > 5: info += '你決定用學(xué)習(xí)填充自己.' iq += 1 else: if gender == 'boy': info += '你和別的小朋友打架.' strong += 1 iq -= 1 else: info += '你經(jīng)常被別的小朋友欺負(fù).' strong -= 1 elif iq < 5: info += '你看起來傻乎乎的.' if home >= 8 and age >= 6: info += '你的父母把你送到更好的學(xué)校學(xué)習(xí).' iq += 1 elif 4 <= home <= 7: if gender == 'boy': info += '你的父母鼓勵(lì)你多運(yùn)動(dòng),爭取成為運(yùn)動(dòng)健將.' strong += 1 else: info += '你的古父母鼓勵(lì)你多打扮自己.' face += 1 else: info += '你的父母經(jīng)常為此吵架.' if point == 1: strong -= 1 elif point == 2: iq -= 1 else: pass else: info += '你健康成長.' if point == 1: info += '你看起來更結(jié)實(shí)了.' strong += 1 elif point == 2: info += '你看起來更好看了.' face += 1 else: pass print(info) print(f"顏值:{face},體質(zhì):{strong},智力:{iq},家境:{home}") print("---------------------------------------------------------------") time.sleep(1)
到此這篇關(guān)于Python實(shí)現(xiàn)人生重開模擬器小游戲講解的文章就介紹到這了,更多相關(guān)Python人生重開模擬器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pytorch 圖像預(yù)處理之減去均值,除以方差的實(shí)例
今天小編就為大家分享一篇pytorch 圖像預(yù)處理之減去均值,除以方差的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01使用Python實(shí)現(xiàn)生成對(duì)角矩陣和對(duì)角塊矩陣
這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)生成對(duì)角矩陣和對(duì)角塊矩陣,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01python 列表,數(shù)組和矩陣sum的用法及區(qū)別介紹
今天小編就為大家分享一篇python 列表,數(shù)組和矩陣sum的用法及區(qū)別介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-06-06教你利用python實(shí)現(xiàn)企業(yè)微信發(fā)送消息
今天帶大家來練習(xí)python實(shí)戰(zhàn),文中對(duì)利用python實(shí)現(xiàn)企業(yè)微信發(fā)送消息作了詳細(xì)的圖文解說及代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴很有幫助,需要的朋友可以參考下2021-05-05python中的內(nèi)置函數(shù)getattr()介紹及示例
其實(shí)getattr()這個(gè)方法最主要的作用是實(shí)現(xiàn)反射機(jī)制。也就是說可以通過字符串獲取方法實(shí)例。這樣,你就可以把一個(gè)類可能要調(diào)用的方法放在配置文件里,在需要的時(shí)候動(dòng)態(tài)加載。2014-07-07