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

pythonでNumer0nを作る方法Part4

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

今回は、相手が選んだ英単語を当てるNumer0n英単語バージョンを作成します。Numer0n番号バージョンはPart1からPart3で作成したため、 その番号の部分を英単語に変えていくだけです。Part1からPart3を理解できていれば、Numer0n英単語バージョンも簡単に理解できます。

 

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

 

 

スポンサードサーチ


Numer0n英単語バージョン

Numer0n英単語バージョンとは

 

 

Numer0n英単語バージョンのルール

1.互いに任意の文字数の存在する英単語を選択する。

2.英単語をコールする。

3.コールされたプレイヤーや自身が選択した英単語とコールされた英単語を比べ、EAT数とBITE数を答える。

4.相手の英単語を当てるまで続ける。

 

ゲームの流れを以下の図に示す。

ルールの図解

 

 

Numer0n英単語バージョンを作るにあたって

Numer0n英単語バージョンを作る準備

今回作成するNumer0nは本家のNumer0nと異なる点があります。

1つ目は、番号ではなく英単語を使用するという点です。

2つ目は、作成する英単語の文字数が3文字だけでなく4文字、5文字でも遊べるようにするという点です。

3つ目は、作成する英単語は「重複なし」だけでなく「重複あり」でも遊べるようにするという点です。

4つ目は、対戦形式ではなくランダムに生成された英単語を当てるという形式のNumer0n英単語バージョンを作成するという点です。

 

 

Numer0n英単語バージョンに必要なもの

・英単語

・英単語をランダムに選択する関数

・コマンドプロンプトから英単語を入力する関数

・ランダムに選ばれた英単語とコールされた英単語を比較する関数

 

   

スポンサードサーチ


英単語と英単語をランダムに選択する関数

英単語と英単語をランダムに選択する関数

英単語については、3文字から10文字の英単語を以下のサイトから入手しました。また、重複あり、重複なしに分け、辞書形式でJSONファイルに保存しました。

 

英単語をランダムに選択する関数(createRandomWord)のソースコードを以下に示します。

import random
import json

def createRnadomWord(digits, dup):
    prefix = "./eng_word/"
    file_dict = {
        "3" : "letters03.json",
        "4" : "letters04.json",
        "5" : "letters05.json",
        "6" : "letters06.json",
        "7" : "letters07.json",
        "8" : "letters08.json",
        "9" : "letters09.json",
        "10" : "letters10.json"
    }
    with open(prefix+file_dict[str(digits)], encoding="utf-8", mode="r") as f:
        word_dict = json.load(f)

    if(dup):
        word_list = word_dict["dup"] + word_dict["no_dup"]
        set_word_list = list(random.choice(word_list))
    else:
        word_list = word_dict["no_dup"]
        set_word_list = list(random.choice(word_list))
    return set_word_list

def main():
    set_word_list = createRnadomWord(3, False)
    print("set_word_list : ", set_word_list)

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

  

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

  

ファイル構成を以下に示します。

ーーー eng_owrd
 │     ├ letters03.json
 │     ├ letters04.json
 │     ├ letters05.json
 │     ├ letters06.json
 │     ├ letters07.json
 │     ├ letters08.json
 │     ├ letters09.json
 │     ├ letters10.json
 │
 └ numer0n_part4.py

 

 

コードの解説

1行目の「import random」は、ランダムに数値を生成したり、ランダムに選択したりするライブラリです。単語をランダムに選択する際に使用します。

 

2行目の「import json」は、jsonファイルを扱うためのライブラリです。英単語が保存してあるjsonファイルを開くことに使用します。

 

4行目から25行目の「createRandomWord」は、単語をランダムに生成する関数です。

第1引数の「digits」には、文字数を代入します。3文字から10文字の単語しか用意していないため3未満または10より大きい数値を入れるとエラーになります。

第2引数の「dup」には、FalseまたはTrueを代入します。Falseは重複なし、Trueは重複ありを表現しています。

  

5行目の「prefix」は、英単語のファイルが保存されているディレクトリのパスです。英単語のファイルを指定するときは、この変数を前につけて指定します。(例「prefix + “letters03.json”」など)

 

6行目から15行目の「file_dict」は、英単語ファイルのファイル名を取得するためのディクショナリです。keyには数字が、valueにはファイル名が代入されています。

 

16行目と17行目は、jsonファイルから英単語を取得しています。

17行目の「word_dict」に取得された辞書を代入しています。

  

19行目から21行目の「if文」は、重複ありの条件分岐です。

20行目の「word_list」は、要素に英単語を持つリスト型の変数です。ここでは、重複あり重複なしの単語を結合し代入しています。

21行目の「set_word_list」は、ランダムに選ばれた単語を代入する変数です。「random.choice(リスト)」によって、リストからランダムに1つだけ英単語を抽出しています。さらに抽出された英単語にlist関数を使うことでアルファベットひとつ1つを要素としています。

 

22行目から24行目の「if文」は、重複なしの条件分岐です。

23行目の「word_list」は、要素に英単語を持つリスト型変数です。ここでは、重複なしのみの単語を代入しています。

24行目の「set_word_list」は、ランダムに選ばれた単語を代入する変数です。「random.choice(リスト)」によって、リストからランダムに1つだけ英単語を抽出しています。さらに抽出された英単語にlist関数を使うことでアルファベットひとつ1つを要素としています。

  

「list(random.choice(リスト))」の動作を以下の図に示します。

list(random.choice(リスト))の図解

  

25行目の「return文」は、選ばれた単語を返却するためのコードです。

  

 

「creatRandomWord」の動作確認

動作確認

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

python numer0n_part4.py

 

以下のように出力されれば動作確認は完了です。出力結果は実行毎にことなります。文字数や重複ありなしを変えて試してみてください。

set_word_list :  ['f', 'i', 'x']

  

 

スポンサードサーチ


まとめ

まとめの画像

今回は、Numer0n英単語バージョンを作成し始めました。本記事ではとくに英単語をランダムに選択する関数を作成しました。

選ばれる英単語は英単語ファイルに依存しているため、足りない場合は随時書き加えていってください。

 

次回は、英単語をコマンドプロンプトから入力する関数と選ばれた単語とコールされた単語の比較を行う関数を作成します。

 

 

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


スポンサードサーチ