pythonの対話モードで冒険に出かけるゲーム
※クソゲーですw
pythonの対話モードでクエスト風の冒険に出るまでのゲーム。
pythonの基本構文を押さえているので、pythonの基礎理解に役立ちました。
▼ゲーム内容(RPG風BGMあり)
https://youtu.be/SPq_8Vc43bI
gif動画が貼れなかったので、動画に音楽つけてyoutubeにアップしてます
使用した構文やメソッド
・inputメソッド
コンソールでユーザーが入力できる。
入力した値を変数に格納。
・if文
条件分岐
・while文
「はい」が入力されるまでループさせる
・辞書型配列
変数 = {'キー1':値1, 'キー2':値2、、、}
値に名前(キー)をつけて保存。
順不同のため、抜き出すときはキーを指定。
・for文
配列の中身をひとつづつ取り出すために使用。
配列が辞書型の場合、キーを一つづつ抜き出すことになる。
・try except構文
エラーが発生したときの処理を記述。
except KeyError:辞書型配列に存在しないキーを入力した場合に発生するエラー。
・print関数
コンソールに文字列を出力する。
+で変数や文字列をつなぐ。
数値は文字列(str)になおす。
・str関数
数値を文字列に変換する。
・format関数
変数展開のひとつ。
print関数内で変数を出力する。
配列番号順に値を指定する方法と、名称をつけて値を指定する方法が使える。
・f文字列
変数展開のひとつ。
print関数内で変数を出力する。
記述も楽で使いやすい。
コード
start = input('ぼうけんのしょをつくる(はい or いいえ):')
if start=='はい':
start=1
else:
start=0
while start==0:
start = input('ぼうけんのしょをつくる(はい or いいえ):')
if start=='はい':
start=1
else:
start=0
print('--------------------------------------------------\n')
name = input('なまえをいれてください:')
print('--------------------------------------------------\n')
print('おはよう '+name+'。もう あさですよ。\n')
print('きょうは とても たいせつなひ。\n'+name+'が はじめて おしろに いくひ だったでしょ。\n')
print('まずは そうびを そろえなさい。')
print('--------------------------------------------------\n')
start = input('げんざいの しょじきん をみる(はい or いいえ):')
if start=='はい':
start=1
else:
start=0
while start==0:
start = input('げんざいの しょじきん をみる(はい or いいえ):')
if start=='はい':
start=1
else:
start=0
money=5000
print('--------------------------------------------------\n')
print('げんざいの しょじきんは '+str(money)+'ゴールド です。\n')
sords={'ひのきのぼう':300, 'せいどうのつるぎ':1200, 'はがねのつるぎ':2000, 'ゆうしゃのつるぎ':4600}
shields={'おなべのふた':400, 'まほうのたて':1480, 'ほのおのたて':1800, 'ゆうしゃのたて':4600}
armors={'かわのよろい':500, 'あぶないみずぎ':1370, 'ドラゴンメイル':1910, 'ゆうしゃのよろい':4600}
helmets={'かわのぼうし':520, 'うさみみばんど':1420, 'しあわせのぼうし':1840, 'ゆうしゃのかぶと':4600}
buysord="なし"
buyshield="なし"
buyarmor="なし"
buyhelmet="なし"
# 武器の購入
print('--------------------------------------------------\n')
start = input('ぶきをみる(はい or いいえ):')
if start=='はい':
for sord in sords:
print('・'+sord+':'+str(sords[sord])+'ゴールド')
print('--------------------------------------------------\n')
err=0
while err==0:
buysord = input('どのぶきを かいますか:')
try:
price=sords[buysord]
err=1
except KeyError:
err=0
if money >= price:
print('\n'+str(price)+'ゴールドの '+buysord+'をかいました。')
money -= price
print('しょじきんは '+str(money)+'ゴールドです。')
else:
print('\nしょじきんが たりません。')
print('ぶきは かいませんでした。\n')
print('しょじきんは '+str(money)+'ゴールドです。')
# 盾の購入
print('--------------------------------------------------\n')
start = input('たてをみる(はい or いいえ):')
if start=='はい':
for shield in shields:
print (f'・{shield}:{shields[shield]}ゴールド')
print('--------------------------------------------------\n')
err=0
while err==0:
buyshield = input('どのたてを かいますか:')
try:
price=shields[buyshield]
err=1
except KeyError:
err=0
if money >= price:
print(f'\n{price}ゴールドの {buyshield}をかいました。' )
money -= price
print(f'しょじきんは {money}ゴールドです。')
else:
print('\nしょじきんが たりません。')
print('たては かいませんでした。\n')
print(f'しょじきんは {money}ゴールドです。')
# 鎧の購入
print('--------------------------------------------------\n')
start = input('よろいをみる(はい or いいえ):')
if start=='はい':
for armor in armors:
print('・'+armor+':'+str(armors[armor])+'ゴールド')
print('--------------------------------------------------\n')
err=0
while err==0:
buyarmor = input('どのよろいを かいますか:')
try:
price=armors[buyarmor]
err=1
except KeyError:
err=0
if money >= price:
print('\n{price}ゴールドの {buyarmor}をかいました。'.format(price=price, buyarmor=buyarmor) )
money -= price
print('しょじきんは {money}ゴールドです。'.format(money=money))
else:
print('\nしょじきんが たりません。')
print('よろいは かいませんでした。\n')
print('しょじきんは {money}ゴールドです。'.format(money=money))
# 兜の購入
print('--------------------------------------------------\n')
start = input('かぶとをみる(はい or いいえ):')
if start=='はい':
for helmet in helmets:
print(f'・{helmet}:{helmets[helmet]}ゴールド')
print('--------------------------------------------------\n')
err=0
while err==0:
buyhelmet = input('どのかぶとを かいますか:')
try:
price=helmets[buyhelmet]
err=1
except KeyError:
err=0
if money >= price:
print('\n{}ゴールドの {}をかいました。'.format(price, buyhelmet) )
money -= price
print('しょじきんは {kane}ゴールドです。'.format(kane=money))
else:
print('\nしょじきんが たりません。')
print('よろいは かいませんでした。\n')
print('--------------------------------------------------\n')
print('そうびの こうにゅうが おわりました。\n\n')
print('★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★')
print(f'\n<{name}の そうび>')
print(f'・ぶき:{buysord}')
print(f'・たて:{buyshield}')
print(f'・よろい:{buyarmor}')
print(f'・かぶと:{buyhelmet}\n')
print('★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★')
print('\n\nぼうけん がんばってください。\n')
print('おわり\n\n')
長いですが、武器の購入以下は繰り返し。
print関数の出力方法に、format関数をつかったり、f文字列をつかったり。