【初心者向け】KivyによるWindowsアプリ作成22 ランダムな文字の表示

前回までの作業で、文字「a」をランダムな位置に重複なく表示するための実装を行うことができました。

今回は前回の予告通り、表示する文字もランダムになるよう、実装を行っていきたいと思います。

コード全量については、例によってGitHub上のファイルをご参照下さい。

<スポンサーリンク>

実装

今回はあまり山場になるようなところもありませんので、始めから実装に入ってしまいます。

まずは、表示対象となる文字のセットを、Pythonファイル上に定義しておきます。

#省略
from kivy.clock import Clock

CHARACTER_SET = { #このディクショナリを追加
    "easy" : "abcdefghijklmnopqrstuvwxyz",
    "normal" : "abcdefghijklmnopqrstuvwxyzABCDEFGHIFKLMNOPQRSTRVWXYZ",
    "hard" : "abcdefghijklmnopqrstuvwxyzABCDEFGHIFKLMNOPQRSTRVWXYZ0123456789"
}

difficulty = "easy" #この行も追加
sm = ScreenManager()
#省略

文字のセットは、第20回の記事で決めた通り、3段階用意します。

それでは今回からゲーム画面の実装に入り、ゲーム内容を作り込んでいきたいと思います。 今回はまずゲーム画面の設計を簡単に行った上で、後半...

ここでは、4~8行目でeasy, normal, hardという難易度毎に表示される文字列をまとめたディクショナリを定義しています。これにより、例えばCHARACTER_SET[“easy”]という表現で、easyというキーに対して設定された、a~zまでのアルファベット小文字が取得できることになります。

また、同様に、第20回の記事でデフォルトはeasyにすると決めたことから、10行目でdifficultyという変数を定義し、その値をeasyで初期化しています。

さらに、表示する文字をここで設定した文字列から1つを選択する形にしてみましょう。

これを実装するには、GameScreenクラス中のupdateメソッド内、targetインスタンスの属性に文字列を指定する箇所を修正してやります。

class GameScreen(Screen):
#省略
    def update(self, dt):
#省略
        #target.text = "a" #この行を削除またはコメントアウト
        target.text = choice(CHARACTER_SET[difficulty]) #代わりにこの行を追加
#省略

内容については、これまでの説明から大体想像がつくと思いますが、choice関数を使って、CHARACTER_SETのeasyというキーに対応する値、すなわち、アルファベット小文字の集合からランダムに1文字を選択し、それをtargetインスタンスのtext属性に指定しています。この、文字のランダム選択とtext属性への代入が、updateメソッドが呼ばれる1秒間隔で実施されるわけです。

実際に文字を表示する箇所は既に実装済みですので、今回の修正はこれで完了です。

実行

それでは、プログラムを実行してみて、正しく動作するか確認してみましょう。

以下のように、これまでは「a」という文字列だけが表示されていたところ、ランダムなアルファベット小文字が表示されるようになりました。

動作をさらに確認するために、difficultにeasyではなく、normalやhardを代入して実行してみるのも良いでしょう。

終わりに

これで、文字の表示ロジックについては大体実装することができました。

次回からは数回に渡り、ユーザからのキータイプを受け付けて、必要な処理を行うことができるよう、プログラムを更新していきたいと思います。

<スポンサーリンク>

シェアする

フォローする