【Python】Numer0n(ヌメロン)を作る方法 Part6 英単語バージョン

pythonでNumer0nを作る方法Part6英単語バージョン

こんにちは、にわこまです。

今回は、表示を見やすくする関数とNumer0n英単語バージョンを実際に動かす関数を作成します。本記事でNumer0n英単語バージョンの完成です。

 

誤字脱字や分からない点がございましたらご連絡お願いいたします。

 

 

スポンサードサーチ


見やすく表示する関数

見やすく表示する関数

Part4とPart5のコードからNumer0n英単語バージョンを遊ぼうとすると以下のように表示されます。しかし、このような表示では見にくいです。そのため、見やすく表示するための関数が必要となります。

英単語を入力してください:fix
call_word_list :  ['f', 'i', 'x']
1 EAT - 0 BITE

 

見やすく表示する関数(printIO)のソースコードを以下に示します。

import random
import json
import re
import sys

def createRnadomWord(digits, dup):
    # 省略

def inputCallWord(digits, dup):
    # 省略

def checkWord(set_word_list, call_word_list, digits):
    # 省略

def printIO(call_word_list, word_eat, word_bite, digits):
    print("  " + "    " * digits + "      " + "+-----+-----+")
    print("  " + "    " * digits + "      " + "| EAT | BITE|")
    print(" +" + "---+" * digits + "      " + "+-----+-----+")
    print(" |", end="")
    for n in call_word_list:
        s = " {0} |".format(n)
        print(s, end="")
    print("  ->  |  {0}  |  {1}  |".format(word_eat, word_bite))
    print(" +" + "---+" * digits + "      " + "+-----+-----+")

def main():
    set_word_list = ["a", "i", "m"]
    call_word_list = inputCallWord(3, False)
    word_eat, word_bite = checkWord(set_word_list, call_word_list, 3)
    printIO(call_word_list, word_eat, word_bite, 3)

if __name__ == '__main__':
    main()
    pass

 

上記のコードは以下からダウンロードできます。

  

 

コードの解説

15行目から24行目の「printIO」は、コールした英単語やEAT数、BITE数を見やすくする関数です。

桁数に応じて空白やハイフンを増やしています。

 

 

「printIO」の動作確認

動作確認

コマンドプロンプトを開き、ファイルを保存したディレクトリまで移動します。移動したら以下のコマンドを入力し、実行します。

python numer0n_part6_1.py

 

以下のように表示されれば動作確認完了です。

英単語を入力してください:fix
                    +-----+-----+
                    | EAT | BITE|
 +---+---+---+      +-----+-----+
 | f | i | x |  ->  |  1  |  0  |
 +---+---+---+      +-----+-----+

 

 

スポンサードサーチ


main関数

main関数

コマンドプロンプトでNumer0n英単語バージョンを遊ぶためにmain関数を作成します。今までは、確認用のコードをmain関数に書いていましたが、その場所にNumer0n英単語バージョンを動かすコードを書いていきます。

 

main関数(main)のソースコードを以下に示します。

import random
import json
import re
import sys

def createRnadomWord(digits, dup):
    # 省略

def inputCallWord(digits, dup):
    # 省略

def checkWord(set_word_list, call_word_list, digits):
    # 省略

def printIO(call_word_list, word_eat, word_bite, digits):
    # 省略

def main():
    print("Numer0n Start!(String)")
    digits = 4
    dup = False
    set_word_list = createRnadomWord(digits, dup)

    while(True):
        call_word_list = inputCallWord(digits, dup)
        word_eat, word_bite = checkWord(set_word_list, call_word_list, digits)
        printIO(call_word_list, word_eat, word_bite, digits)
        if(word_eat >= digits):
            break
    print("End.")

if __name__ == '__main__':
    main()
    pass

 

以上のコードは以下からダウンロードできます。

  

 

コードの解説

18行目から30行目の「main」は、実際にNumer0n英単語バージョンを動かす関数です。

 

20行目の「digits」は、文字数を表す変数です。今回は4を代入しています。

 

21行目の「dup」は、重複ありなしを表す変数です。今回は、Falseを代入しています。つまり、重複なしの設定にしています。

 

22行目の「set_word_list」は、ランダムに選択された英単語が代入される変数です。createRandomWord関数によって英単語を選択しています。

 

24行目から29行目の「while文」は、正解の英単語を当てるまで繰りかえす繰り返し文です。条件文をTrueにすることで常に繰り返すようにしています。

 

25行目の「call_word_list」は、プレイヤーが入力した英単語が代入される変数です。inputCallWord関数によってコマンドプロンプトから入力された英単語を取得しています。

 

26行目の「word_eat」と「word_bite」は、それぞれEATの数とBITEの数を表す変数です。checkWord関数によって算出されたEATの数とBITEの数が代入されます。

 

EATとは、番号と桁が合っている。
BITEとは、桁は合っていないが番号は含まれている。

 

27行目の「printIO」は、コールした英単語とEATの数、BITEの数を表示する関数です。

 

28行目と29行目の「if文」は、while文から抜け出す条件分岐です。EATの数が任意の文字数以上のとき29行目の処理を行います。

29行目の「break」は、while文から抜け出すための処理です。

 

  

「main関数」の動作確認

動作確認

コマンドプロンプト開き、ファイルを保存したディレクトリまで移動します。移動したら以下のコマンドを入力し、実行します。

python numer0n_part6_2.py

 

以下のようにNumer0n英単語バージョンを遊ぶことができたら完成です。

Numer0n Start!(String)
英単語を入力してください:army
                        +-----+-----+
                        | EAT | BITE|
 +---+---+---+---+      +-----+-----+
 | a | r | m | y |  ->  |  0  |  0  |
 +---+---+---+---+      +-----+-----+
英単語を入力してください:bath
                        +-----+-----+
                        | EAT | BITE|
 +---+---+---+---+      +-----+-----+
 | b | a | t | h |  ->  |  1  |  0  |
 +---+---+---+---+      +-----+-----+
英単語を入力してください:bias
                        +-----+-----+
                        | EAT | BITE|
 +---+---+---+---+      +-----+-----+
 | b | i | a | s |  ->  |  0  |  0  |
 +---+---+---+---+      +-----+-----+
英単語を入力してください:bite
                        +-----+-----+
                        | EAT | BITE|
 +---+---+---+---+      +-----+-----+
 | b | i | t | e |  ->  |  2  |  0  |
 +---+---+---+---+      +-----+-----+
英単語を入力してください:note
                        +-----+-----+
                        | EAT | BITE|
 +---+---+---+---+      +-----+-----+
 | n | o | t | e |  ->  |  3  |  0  |
 +---+---+---+---+      +-----+-----+
英単語を入力してください:vote
                        +-----+-----+
                        | EAT | BITE|
 +---+---+---+---+      +-----+-----+
 | v | o | t | e |  ->  |  4  |  0  |
 +---+---+---+---+      +-----+-----+
End.

 

  

スポンサードサーチ


まとめ

まとめの画像

今回は、コールした英単語とEATの数、BITEの数を見やすく表示する関数とNumer0n英単語バージョンを実際に動かすmain関数を作成しました。

これによってNumer0n英単語バージョンを完成させました。

 

何か作って欲しいものや作り方を押して欲しいという方はメールまたはTwitterのDMまで!

 

 

最後までお読みいただきありがとうございます。


スポンサードサーチ