2
1

More than 3 years have passed since last update.

pythonの対話モードで冒険に出かけるゲーム

Last updated at Posted at 2020-05-17

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文字列をつかったり。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1