【Python】Numer0n(ヌメロン)を作る方法 Part3

pythonでNumer0nを作る方法Part3

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

今回は、コマンドプロンプトで遊ぶために見やすく表示する関数と実際にNumer0nを動かすmain関数を作成します。本記事でNumer0nの完成です。

 

 

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

 

 

スポンサードサーチ


見やすく表示する関数

コールした番号、EAT数、BITE数を見やすくする関数

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

数字を入力してください:139
call_num_list :  [1, 3, 9]
1 EAT - 1 BITE

 

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

import random
import re
import sys

def createRnadomNumber(digits=3, dup=False):
    # 省略

def inputCallNumber(digits=3, dup=False):
    # 省略

def checkNumber(set_num_list, call_num_list, digits=3):
    # 省略

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

def main():
    set_num_list = [3, 6, 9]
    call_num_list = [1, 3, 9]
    num_eat, num_bite = checkNumber(set_num_list, call_num_list, 3)
    printIO(call_num_list, num_eat, num_bite, 3)

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

 

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

 

 

コードの解説

14行目から23行目の「printIO」は、入力した番号や何EAT何BITEを見やすくする関数です。

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

 

 

「printIO」の動作確認

動作確認

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

python numer0n_part3_1.py

 

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

                    +-----+-----+
                    | EAT | BITE|
 +---+---+---+      +-----+-----+
 | 1 | 3 | 9 |  ->  |  1  |  1  |
 +---+---+---+      +-----+-----+

  

 

スポンサードサーチ


main関数

main関数

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

 

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

import random
import re
import sys

def createRnadomNumber(digits=3, dup=False):
    # 省略

def inputCallNumber(digits=3, dup=False):
    # 省略

def checkNumber(set_num_list, call_num_list, digits=3):
    # 省略

def printIO(call_num_list, num_eat, num_bite, digits=3):
    # 省略

def main():
    print("Numer0n Start!")
    digits = 3
    dup = False # 「dup = False」は「重複無し」を表現
    set_num_list = createRnadomNumber(digits, dup)

    while(True):
        call_num_list = inputCallNumber(digits)
        num_eat, num_bite = checkNumber(set_num_list, call_num_list, digits)
        printIO(call_num_list, num_eat, num_bite, digits)
        if(num_eat >= digits):
            break
    print("End.")

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

  

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

 

 

コードの解説

17行目から29行目の「main」は、実際にNumer0nを遊ぶための関数です。

 

18行目の「print」は、Numer0nをスタートしたことを示すために「Numer0n Start!」と表示しています。

 

19行目の「digits = 3」は、番号の桁数を表す変数に3を代入しています。これによって3桁の番号を当てるNumer0nを遊ぶことができます。

 

20行目の「dup = False」は、重複ありなしを表す変数にFalseを代入しています。これによって、重複なしのNumer0nを遊ぶことができます。重複ありのNumer0nを遊びたい場合はdupにTrueを代入します。

 

21行目の「set_num_list」は、当てる番号を表す変数です。createRandomNumber関数によって生成された番号を代入しています。

 

23行目から28行目の「while文」は、正解の番号を当てるまで繰りかえす繰り返し文です。条件分をTrueにすることで常に繰り返します。

 

24行目の「call_num_list」は、プレイヤーがコールした番号を表す変数です。inputCallNumber関数によってプレイヤーから入力された番号を代入しています。

 

25行目の「num_eat」と「num_bite」は、それぞれEAT数とBITE数を表す変数です。checkNumber関数によって数えられたEAT数とBITE数を代入しています。

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

 

26行目の「printIO」は、コールした番号、EAT数、BITE数を見やすく表示する関数です。

 

27行目と28行目の「if文」は、while文から抜け出すための条件を判定しています。EAT数が桁数よりも大きい場合、つまり全ての数字を当てた場合、28行目の処理が行われます。

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

  

29行目の「print」は、Numer0nが終了したことを示すために「End」と表示しています。

 

 

main関数の動作確認

動作確認

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

python numer0n_part3_2.py

 

以下のようにNumer0nを遊ぶことができれば動作確認は完了です。またNumer0nの完成です。

Numer0n Start!
数字を入力してください:123
                    +-----+-----+
                    | EAT | BITE|
 +---+---+---+      +-----+-----+
 | 1 | 2 | 3 |  ->  |  0  |  1  |
 +---+---+---+      +-----+-----+
数字を入力してください:456
                    +-----+-----+
                    | EAT | BITE|
 +---+---+---+      +-----+-----+
 | 4 | 5 | 6 |  ->  |  0  |  1  |
 +---+---+---+      +-----+-----+
数字を入力してください:789
                    +-----+-----+
                    | EAT | BITE|
 +---+---+---+      +-----+-----+
 | 7 | 8 | 9 |  ->  |  0  |  1  |
 +---+---+---+      +-----+-----+
数字を入力してください:147
                    +-----+-----+
                    | EAT | BITE|
 +---+---+---+      +-----+-----+
 | 1 | 4 | 7 |  ->  |  0  |  0  |
 +---+---+---+      +-----+-----+
数字を入力してください:142
                    +-----+-----+
                    | EAT | BITE|
 +---+---+---+      +-----+-----+
 | 1 | 4 | 2 |  ->  |  1  |  0  |
 +---+---+---+      +-----+-----+
数字を入力してください:692
                    +-----+-----+
                    | EAT | BITE|
 +---+---+---+      +-----+-----+
 | 6 | 9 | 2 |  ->  |  2  |  0  |
 +---+---+---+      +-----+-----+
数字を入力してください:592
                    +-----+-----+
                    | EAT | BITE|
 +---+---+---+      +-----+-----+
 | 5 | 9 | 2 |  ->  |  3  |  0  |
 +---+---+---+      +-----+-----+
End.

 

 

スポンサードサーチ


まとめ

まとめの画像

今回は、コールした番号やEAT数、BITE数を見やすくするための関数とNumer0nを実際に動かすmain関数を作成しました。

 

次回は英単語版Numer0nの作成方法を紹介します!

 

 

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


スポンサードサーチ