Python實現(xiàn)人生重開模擬器小游戲講解
思維導圖

前言
前面我們已經(jīng)學了python中的順序,選擇,循環(huán)語句以及break和continue的使用,下面根據(jù)這幾個語句,來講解一個代碼案例
一、設(shè)置初始屬性
相信大家都玩過人生重開模擬器這樣類型的小游戲。
在游戲中,一般會有四個屬性
- 顏值(face)
- 體質(zhì)(strong)
- 智力(iq)
- 家境(home)
在這里可以約定一下屬性的范圍,以及4個屬性的總和不能超過多少。
我們約定屬性的范圍為1-10,總和不得超過20.
1.游戲標題
在這里可以先把游戲的標題打印在開頭
print("******************************************")
print(" ")
print(" 人生重開模擬器 ")
print(" ")
print(" 花有重開日 人無在少年 ")
print(" ")
print("******************************************")

2.屬性的初始化
這四個屬性可以由玩家自己輸入,這就用到了之前講到的input函數(shù),通過這個函數(shù),來完成屬性的初始化。
print("請設(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)約定過了,屬性不得超過多少,總和不得超過多少,所以下面要用我們學到過的if-elif-else語句,對這四個屬性和總和進行判斷。
if face < 1 or face > 10:
print("顏值設(shè)置錯誤")
continue
elif iq < 1 or iq > 10:
print("智力設(shè)置錯誤")
continue
elif strong < 1 or strong > 10:
print("體質(zhì)設(shè)置錯誤")
continue
elif home < 1 or home > 10:
print("家境設(shè)置錯誤")
continue
elif face + iq + strong + home > 20:
print("總屬性超過20")
continue
print("初始屬性設(shè)置完畢")
print(f"顏值:{face},體質(zhì):{strong},智力:{iq},家境:{home}")
每當某一個屬性不符合的時候,就把原因打印的屏幕上并重新輸入屬性值,如果符合約定,則把四個屬性值打印在屏幕上。
當某個判斷出現(xiàn)錯誤的時候,代碼會直接結(jié)束程序,而不會讓玩家循環(huán)輸出,這是因為缺少了一個循環(huán),那么我們就要設(shè)置一個能夠使得屬性初始化但不符合約定,就要讓玩家重新輸入屬性值的功能。這個時候就用到了while循環(huán)
while True:
print("請設(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è)置錯誤")
continue
elif iq < 1 or iq > 10:
print("智力設(shè)置錯誤")
continue
elif strong < 1 or strong > 10:
print("體質(zhì)設(shè)置錯誤")
continue
elif home < 1 or home > 10:
print("家境設(shè)置錯誤")
continue
elif face + iq + strong + home > 20:
print("總屬性超過20")
continue
print("初始屬性設(shè)置完畢")
print(f"顏值:{face},體質(zhì):{strong},智力:{iq},家境:{home}")
當所有判斷都滿足約定的時候,就不能在繼續(xù)循環(huán)了,要結(jié)束程序,這個時候就break就派上了用場,滿足判定,直接跳出while循環(huán)。
在上面這個代碼尾部加上break即可注意break的位置要縮進。

二、設(shè)置性別
設(shè)置性別是一個有意思的話題,性別一定要做到隨機,設(shè)置隨機數(shù)就用到了一個函數(shù)random.randint,這個函數(shù)是python中自帶的模塊,使用前要先調(diào)用一下這個模塊import random
通過 random.randint(1,6)可以生成一個1-6的隨機整數(shù)。
- 如果是單數(shù):男孩
- 如果是雙數(shù):女孩
男孩女孩會遇到不同的事件。
point = random.randint(1,6)
# print(f'隨機數(shù)為:{point}')
if point % 2 == 1:
gender = "boy"
print("你是個男孩.")
else:
gender = "girl"
print("你是個女孩.")

三、設(shè)置出生點
首先按照家境可以把出生點分為4部分
- 10是第一部分,家境最好,加成也最高
- 7-9第二部分,也有一些加成
- 4-6第三部分,加成較少
- 1-4第四部分,會扣掉屬性
當然,大家在自己寫的時候,可以多寫幾個部分,讓游戲充滿更多的可能。
然后,在生成1-3之間的隨機數(shù),每一個數(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("你出生在三線城市,父母是小學老師.")
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}")
四、針對每一歲自動生成人生經(jīng)歷
按照年齡可以把人生分為四個截斷
- 幼年
- 青年
- 壯年
- 老年
每個截斷會有不同的事情發(fā)生,也可能會有一些機遇。
例如:幼年截斷,智力,顏值,體質(zhì)等會發(fā)生變化,在這里可以展開事件的發(fā)生。
此處只寫幼年經(jīng)歷:
因為是每一年,可以用for循環(huán)展開,把每一年的經(jīng)歷,用字符串進行拼接,循環(huán)到最后,輸出字符串即可,針對事件的發(fā)生,可以用隨機數(shù),根據(jù)數(shù)字來發(fā)生事件,也可以根據(jù)性別,顏值,體質(zhì)等來觸發(fā)事件,不同的事件有不同的影響,如果得病去世,可以直接用sys.exit(0)退出程序,使用time.sleep(1)可以使程序暫停一秒,便于觀察。
for age in range(1,11):
#把一整年的打印都整理到一個字符串中,在這一年的結(jié)尾統(tǒng)一打印
info = f'你今年{age}歲'
#生成一個一到三的隨機整數(shù)
point = random.randint(1,3)
#接下來編寫各種事件的代碼
#性別觸發(fā)的事件
if gender == 'girl' and home <= 3 and point == 1:
info += '你的家里人重男輕女思想非常嚴重,把你丟棄了.'
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 += '父母沒時間管你,你的情況更糟糕了.'
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 += '你經(jīng)常被別的小朋友欺負.'
strong -= 1
#智商觸發(fā)的事件
elif iq < 5:
info += '你看起來傻乎乎的.'
if home >= 8 and age >= 6:
info += '你的父母把你送到更好的學校學習.'
iq += 1
elif 4 <= home <= 7:
if gender == 'boy':
info += '你的父母鼓勵你多運動,爭取成為運動健將.'
strong += 1
else:
info += '你的古父母鼓勵你多打扮自己.'
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é)實了.'
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é)(附代碼)
在這里,并不把四個截斷全部寫完,只寫一個幼年階段。把這一篇文章看完,相信大家有能力自行實現(xiàn)后續(xù)內(nèi)容,讓游戲變得更完整。
注:在使用sys.exit和time.sleep的時候別忘了調(diào)用一下
import sys
import time
"""
人生重開模擬器
花有重開日,人無在少年
"""
import random
import sys
import time
print("******************************************")
print(" ")
print(" 人生重開模擬器 ")
print(" ")
print(" 花有重開日 人無在少年 ")
print(" ")
print("******************************************")
while True:
print("請設(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è)置錯誤")
continue
elif iq < 1 or iq > 10:
print("智力設(shè)置錯誤")
continue
elif strong < 1 or strong > 10:
print("體質(zhì)設(shè)置錯誤")
continue
elif home < 1 or home > 10:
print("家境設(shè)置錯誤")
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("你是個男孩.")
else:
gender = "girl"
print("你是個女孩.")
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("你出生在三線城市,父母是小學老師.")
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 += '你的家里人重男輕女思想非常嚴重,把你丟棄了.'
print("游戲結(jié)束.")
sys.exit(0)
elif strong < 6 and point < 3:
info += '你生了一場病.'
if home >= 5:
info += '在父母的照顧下,你康復(fù)了.'
strong += 1
home -= 1
else:
info += '父母沒時間管你,你的情況更糟糕了.'
strong -= 1
elif face <= 4 and age >= 7:
info += '你長的太丑了,別的小朋友不和你一起玩.'
if iq > 5:
info += '你決定用學習填充自己.'
iq += 1
else:
if gender == 'boy':
info += '你和別的小朋友打架.'
strong += 1
iq -= 1
else:
info += '你經(jīng)常被別的小朋友欺負.'
strong -= 1
elif iq < 5:
info += '你看起來傻乎乎的.'
if home >= 8 and age >= 6:
info += '你的父母把你送到更好的學校學習.'
iq += 1
elif 4 <= home <= 7:
if gender == 'boy':
info += '你的父母鼓勵你多運動,爭取成為運動健將.'
strong += 1
else:
info += '你的古父母鼓勵你多打扮自己.'
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é)實了.'
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實現(xiàn)人生重開模擬器小游戲講解的文章就介紹到這了,更多相關(guān)Python人生重開模擬器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python使用progressbar模塊實現(xiàn)的顯示進度條功能
這篇文章主要介紹了Python使用progressbar模塊實現(xiàn)的顯示進度條功能,簡單介紹了progressbar模塊的安裝,并結(jié)合實例形式分析了Python使用progressbar模塊顯示進度條的相關(guān)操作技巧,需要的朋友可以參考下2018-05-05
對Python新手編程過程中如何規(guī)避一些常見問題的建議
這篇文章中作者對Python新手編程過程中如何規(guī)避一些常見問題給出了建議,主要著眼于初學者對于一些常用函數(shù)方法在平時的使用習慣中的問題給出建議,需要的朋友可以參考下2015-04-04
Python實現(xiàn)一個Git日志統(tǒng)計分析的小工具
這篇文章主要給大家介紹了關(guān)于利用Python如何實現(xiàn)一個Git日志統(tǒng)計分析小工具的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。2017-12-12
python實現(xiàn)的陽歷轉(zhuǎn)陰歷(農(nóng)歷)算法
這篇文章主要介紹了python實現(xiàn)的陽歷轉(zhuǎn)陰歷(農(nóng)歷)算法,需要的朋友可以參考下2014-04-04
Python?Flask實現(xiàn)快速構(gòu)建Web應(yīng)用的方法詳解
Flask是一個輕量級的Web服務(wù)器網(wǎng)關(guān)接口(WSGI)web應(yīng)用框架,本文將和大家一起詳細探討一下Python?Flask?Web服務(wù),需要的小伙伴可以學習一下2023-06-06
Python接口測試結(jié)果集實現(xiàn)封裝比較
這篇文章主要介紹了Python接口測試結(jié)果集比較封裝,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-05-05
Pycharm遠程連接服務(wù)器并實現(xiàn)代碼同步上傳更新功能
這篇文章主要介紹了Pycharm遠程連接服務(wù)器并實現(xiàn)代碼同步上傳更新功能,通過配置遠程連接pycharm,直接在windows下pycharm里修改再保存就可以實現(xiàn)同步更新到服務(wù)器里的代碼里了,需要的朋友可以參考下2020-02-02

