基于Python實現復刻人生重開模擬器
人生重開模擬器介紹
人生重開模擬器是由VickScarlet上傳至GitHub的一款簡單的文字網頁游戲。

玩家點擊“立即重開”并設置角色的初始屬性后,程序就會隨機為玩家生成對應的人生經歷。

代碼實現
下面我們實現一個簡化版的人生重開模擬器,主要目的在于熟悉Python的語法。
打印初始界面
初始界面可以自由發(fā)揮,這里博主就隨便打印一下。
代碼如下:
# 打印初始界面
print('+-------------------------------------------+')
print('| |')
print('| >>人生重開模擬器<< |')
print('| |')
print('| 這垃圾人生一秒也不想待了 |')
print('| |')
print('+-------------------------------------------+')
設置初始屬性
進入游戲后第一步就是設置初始屬性,此處設定以下四個屬性:
- 顏值(face)。
- 體制(strong)。
- 智力(iq)。
- 家境(home)。
我們規(guī)定每個屬性的范圍為1 - 10,并且這四個屬性的總和不能超過20,如果玩家輸入的初始屬性不合理,則提示玩家輸入有誤并要求重新輸入。體現在代碼中就是,玩家輸入屬性后通過if語句判斷輸入的屬性是否合法,如果不合法則通過while語句要求玩家重新進行輸入。
代碼如下:
# 設置初始屬性
# 顏值、體質、智力、家境(總和不能超過20,每一項取值在1-10之間)
while True:
print('請設置初始屬性(可用點數總數為20)')
face = int(input('請輸入顏值(1-10): '))
strong = int(input('請輸入體制(1-10): '))
iq = int(input('請輸入智力(1-10): '))
home = int(input('請輸入家境(1-10): '))
if face < 1 or face > 10:
print('顏值設置有誤!')
continue
if strong < 1 or strong > 10:
print('體制設置有誤!')
continue
if iq < 1 or iq > 10:
print('智力設置有誤!')
continue
if home < 1 or home > 10:
print('家境設置有誤!')
continue
if face + strong + iq + home > 20:
print('屬性總和超過了20,設置有誤!')
continue
print('初始屬性輸入完畢!')
print(f'顏值: {face}, 體制: {strong}, 智力: {iq}, 家境: {home}')
break
設置角色性別
關于角色的性別,我們可以隨機生成一個1 - 6的整數,類似于擲色子。
如果是單數,則性別設為男孩。
如果是雙數,則性別設為女孩。
性別設置后需要借助一個變量將角色的性別保存起來,因為后續(xù)男孩和女孩可能會觸發(fā)不同的事件。
代碼如下:
# 設置角色性別
point = random.randint(1, 6)
if point % 2 == 1:
gender = 'boy'
print('你是個男孩')
else:
gender = 'girl'
print('你是個女孩')
說明一下:
- 代碼中使用的randint是random模塊中的一個函數,random.randint(begin, end)可以生成一個begin - end之間的隨機整數。
- 在Python中,如果想引入其他模塊,需要以import 模塊名的方式將對應的模塊導入進來,導入模塊后以模塊名.xxx的方式就能使用該模塊中的函數或變量。
設置角色出生點
設置角色的出生點時,可以根據角色的家境分為四個檔位:
- 10是第一檔,加成最高。
- 7 - 9是第二檔,有一些加成。
- 4 - 6是第三檔,加成較少。
- 1 - 3是第四檔,會扣掉屬性。
除了將角色的出生點按照家境分為四個檔位之外,還可以再生成一個隨機數,對每一檔的內部再進行一次細分,最終得到角色的出生點,此處涉及的也就是一些if條件判斷而已。
代碼如下:
# 設置角色出生點
point = random.randint(1, 3)
if home == 10:
# 第一檔
print('你出生在帝都, 你的父母是高官政要')
home += 1
iq += 1
face += 1
elif 7 <= home <= 9:
# 第二檔
if point == 1:
print('你出生在大城市,父母是公務員')
face += 2
elif point == 2:
print('你出生在大城市,父母是企業(yè)高管')
home += 2
else:
print('你出生在大城市,父母是大學教授')
iq += 2
elif 4 <= home <= 6:
# 第三檔
if point == 1:
print('你出生在三線城市,你的父母是醫(yī)生')
strong += 1
elif point == 2:
print('你出生在鎮(zhèn)上,你的父母是老師')
iq += 1
else:
print('你出生在鎮(zhèn)上,你的父母是個體戶')
home += 1
else:
# 第四檔
if point == 1:
print('你出生在農村,父母是辛苦勞作的農民')
strong += 1
face -= 2
elif point == 2:
print('你出生在窮鄉(xiāng)僻壤,你的父母是無業(yè)游民')
home -= 1
else:
print('你出生在鎮(zhèn)上,你的父母感情不和')
strong -= 1
print(f'顏值: {face}, 體制: {strong}, 智力: {iq}, 家境: {home}')
說明一下:
- 角色的出生點不能僅由家境決定,此處在設置角色出生點時引入隨機數的目的就是為了增加隨機的因素,畢竟人生本來就充滿了很多的隨機性。
- 這里的代碼只是起一個示意的作用,因此生成隨機數的范圍只是1 - 3,如果你愿意也可以生成更大范圍的隨機數,將每一檔的內部進行更細粒度的劃分,這樣就能更大的保證每次運行程序后得到的出生點都是不一樣的。
針對每一歲,生成人生經歷
人生經歷的四個階段
設置完角色的性別和出生點后,就可以針對每一歲生成對應的人生經歷了,這里我們按照年齡將人生經歷分為以下四個階段:
- 1 - 10歲:幼年階段。
- 11 - 20歲:青年階段。
- 21 - 50歲:壯年階段。
- 50歲以后:老年階段。
在人生的每個階段都會有不同的經歷和事件發(fā)生:
- 幼年階段:可塑性強,體制、顏值、智力都會有較快的變化。
- 青年階段:主要是求學,同時父母一輩會有明顯變化,智力和家境會有明顯變化。
- 壯年階段:相對平穩(wěn),屬性變化不大,主要是一些隨機事件影響到屬性。
- 老年階段:體質、顏值、智力都會顯著退化,并且隨著年齡的上升,疾病和死亡的風險逐漸升高。
這時就可以發(fā)揮我們的想象力,編寫一些合理的人生經歷,并在合適的條件下觸發(fā)這些事件即可。
人生經歷生成
這里我們以幼年為例,簡單演示一下處理邏輯:
- 使用for循環(huán),按照年齡從1循環(huán)到10,每次循環(huán)生成對應年齡的人生經歷。
- 在生成每一年的人生經歷之前,先生成一個隨機數(充當人生中的隨機因素),根據得到的隨機數以及角色的性別、年齡和各種屬性來觸發(fā)不同的事件。
- 不同的事件被觸發(fā)后,可能會對角色的屬性有正面或負面的影響,因此角色的各個屬性會隨著事件的觸發(fā)而不斷發(fā)生變化。
- 在這一年的最后打印出所觸發(fā)的事件,為了方便觀察,也可以將這一年后角色的各個屬性進行打印。
代碼如下:
# 幼年階段
for age in range(1, 11):
info = f'你今年{age}歲, '
point = random.randint(1, 3)
# 性別觸發(fā)的事件
if gender == 'girl' and home <= 3 and point == 1:
info += '你的家里人重男輕女思想非常嚴重, 你被遺棄了!'
print(info)
print('游戲結束!')
sys.exit(0)
# 體制觸發(fā)的事件
elif strong < 6 and point < 3:
info += '你生了一場病, '
if home >= 5:
info += '在父母的細心照料下, 你康復了'
strong += 1
home -= 1
else:
info += '你的父母沒精力管你, 你的身體狀況更遭了'
strong -= 1
# 顏值觸發(fā)的事件
elif face <= 4 and age >= 7:
info += '你長得太丑了, 別的小朋友不喜歡你, '
if iq > 5:
info += '你決定用學習填充自己!'
iq += 1
else:
if gender == 'boy':
info += '你和別的小朋友經常打架!'
strong += 1
iq -= 1
else:
info += '你經常被別的小朋友欺負'
strong -= 1
# 智力觸發(fā)的事件
elif iq < 5:
info += '你看起來傻傻的, '
if home >= 7 and age >= 6:
info += '你的父母把你送到更好的學校學習'
iq += 1
elif 4 <= home <= 6:
if gender == 'boy':
info += '你的父母鼓勵你多運動, 爭取成為運動員'
strong += 1
else:
info += '你的父母鼓勵你多打扮自己'
face += 1
else:
info += '你的父母為此經常吵架'
if point == 1:
strong -= 1
elif point == 2:
iq -= 1
else:
pass
# 健康成長事件
else:
info += '你健康成長, '
if point == 1:
info += '你看起來更結實了'
strong += 1
elif point == 2:
info += '你看起來更好看了'
face += 1
else:
info += '這一年沒有特別的事情發(fā)生'
# 打印這一年發(fā)生的事情
print(info)
print(f'顏值: {face}, 體制: {strong}, 智力: {iq}, 家境: {home}')
print('---------------------------------------------')
# 為了方便觀察, 加一個sleep
time.sleep(2)
說明一下:
- 代碼中使用的exit是sys模塊中的一個函數,如果角色因為觸發(fā)某些事件而夭折,那么就可以以
sys.exit(退出碼)的方式讓程序直接退出。 - 代碼中使用的sleep是time模塊中的一個函數,為了方便觀察生成的人生經歷,可以以
time.sleep(秒數)的方式讓程序暫停若干秒。
效果展示

說明一下:
- 由于當前代碼中編寫的人生經歷還是比較少的,并且隨機數也只是1 - 3,因此生成的人生經歷的隨機性比較差,并且生成的事件也就那么幾個,如果想要讓生成的人生經歷更加隨機更加豐富,就需要將生成隨機數的范圍調大,并且編寫更多的人生經歷用于觸發(fā)。
- 此外,青年階段、壯年階段和老年階段的人生經歷生成方式與幼年階段相同,這里就不再進行實現了,想象力比較豐富的博友可以自行編寫,但博主認為這里的目的是為了熟悉Python的語法,繼續(xù)編寫其他階段的人生經歷的意義不大。
到此這篇關于基于Python實現復刻人生重開模擬器的文章就介紹到這了,更多相關Python人生重開模擬器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python linecache 處理固定格式文本數據的方法
今天小編就為大家分享一篇python linecache 處理固定格式文本數據的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
Python使用Selenium、PhantomJS爬取動態(tài)渲染頁面
本文主要介紹了Python使用Selenium、PhantomJS爬取動態(tài)渲染頁面,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-05-05

