pythonでゲームを作ったから見て。

pythonはゲーム作成もできるということで、基本的なことしか学んでいない僕の全ての知識を集約して簡単なゲームを作ってみました!

 

目次

 

1.構想

入門書を見ただけの僕には、複雑なコードを使ったものや、グラフィックに拘っているものは流石に作れないので、変数の数も少なくていいものにしようと思いました。それで考えたのが、『数当てゲーム』です。(僕の地元ではヌメロンって言われてた笑)

どういうゲームか簡単に説明すると、ランダムに決められた四桁の数字を当てていくゲームです。詳しい説明は、2章以降でしていきます。

 

2.ソースコード

まずは使ったモジュールについて説明します。

I. tkinter(ティーケイ・インター)

II.random(ランダム)

Iのモジュールは、ウィンドウを表示するために。IIのモジュールは、ランダムな四桁の数字を表示するために使いました。ここからはゲーム作成の流れを、1.ウィンドウ作成と、2.ゲーム自体のコードに分けて、その後、3.二つのコードを融合の流れで説明します。

1.ウィンドウ作成のコード

まず先にウィンドウ作成のコードを貼っちゃいましょう。

 

f:id:kaitadayo:20200419180314p:plain

ウィンドウ作成のソースコード

画像内にコードの説明は簡単にしていますので、ポイントを軽く説明します。

まずウィンドウの中に必要なものを考えてみました。

それは

1.プレイする人が数字を入力する場所

2.数字を入力させる為の説明

3.チェックボタン

です。

1を表現するためにEntryメソッド、2を表現するためにLabelメソッド、3を表現するためにButtonメソッドを使いました。あとはそれぞれのウィンドウでの表示する場所を決めるためにplaceメソッドを使用しました。あとはそれぞれのメソッドの中で、表示する文章や、フォントを指定すれば大体は終了です。

あとはButtonClickという関数を定義して、チェックボタンがクリックされたときに行う処理が実行されるようにします。ちなみに実行すると

f:id:kaitadayo:20200419202357p:plain

実行結果

画像の左上のようなウィンドウが作成されます。今回のソースコードではボタンをクリックしても何も起きませんが、次に説明するゲーム自体のコードをボタンがクリックされた時に実行されるようにコード書き換えることで、ゲームが完成します。

 

2.ゲーム自体のコード 

今回も先にソースコードの画像を貼っちゃいます。

f:id:kaitadayo:20200419203328p:plain

ゲーム自体のソースコード

今回も簡単な説明が画像内にあるのでポイントだけを説明していきます。

まずこのコードの流れを説明します。

1.ランダムな四桁の数字を作る

2.プレイ者が入力した物が、数字かつ四桁かどうかを判定する。

3.ヒット&ブローを判定する。(これは後で詳しく説明します)

4.数字が当てられた時に『当たり!』と表示する

以上がこのコードの流れです。

 

まず1に関しては、 randomモジュールをインポートして、各桁で一桁ずつ1から9までの数字を選ばせ、リストを使ってコードを短くしました。(こうしておくとこの後のヒットとブローの判定が楽)

 

次に2に関してです。四桁の判定に関しては、len関数を使うことですぐに解決できます。if・else構文を使用して四桁の数字じゃなければ、「四桁の数字を入力してください」と表示するようにしました。

また、数字かどうかの判定に関しては、入力された四桁の数字をbと置いて、リストを使って各桁を取り出し、数字かどうか判定しています。

 

3に関してはヒットとブローの説明からしていきます。まず数当てゲームはランダムに決められた数字を、当てていくゲームです。一回数字を入力するごとに2種類の情報が与えられます。それがヒットとブローです。

 

まずはヒット。これは数字も数の位も合っているという意味です。(例:ランダムに決められた数字(1234)、入力された数字(1056)の時は1ヒットとなります。)

 

次にブロー。これは数字だけが合っているという意味です。(例:ランダムに決められた数字(1234)、入力された数字(0156)の時は1ブローとなります。)

 

ヒットの判定は、リストで入力された数字とランダムに決められた数字の各桁を取り出して数字が合っているかを判定するだけです。

 

ブローの判定は、各桁を比較する点ではヒットの判定と同じですが、ヒットが出た位と重複しないようにしないといけないのでif構文での条件が増えます。

 

本当はもう少し詳しく説明した方が分かりやすいとは思うのですが、めんどいのでやめます。笑

ある程度勉強してから見ればすらすら読めると思います。

 

最後に4に関して、ヒットとブローの説明を聞いていて勘のいい人はわかると思いますが、このゲームのゴールはヒット4を目指すことです。つまりヒット4になった時に「当たり!」が出力されるようにするだけです!笑

 

下に実行結果を貼っておきます。

f:id:kaitadayo:20200419213533p:plain

実行結果




3.二つのコードを融合

上の実行結果でもわかるようにゲームにしては殺風景です。これから二つのコードを融合することで少しマシになります。

f:id:kaitadayo:20200419214731p:plain

融合

 融合とかいう厨二病みたいなワードセンスには触れないで頂いて。要はボタンがクリックされた処理をゲーム自体のコードに書き換えてあげればいいだけです。書き換えると下の画像のようなコードになります。

f:id:kaitadayo:20200419215115p:plain

融合結果

f:id:kaitadayo:20200419215156p:plain

融合結果続き


 これが数当てゲームのソースコードになります。ウィンドウにヒットとブローの履歴が出るようなコードを書き足してはいますが、大元の説明は以上になります。

 

3.実際にプレイしてみた

f:id:kaitadayo:20200419215821p:plain

プレイ画面

めっちゃ失敗しちゃいましたがなんとかクリアできました。正解すると当たりというタイトルのウィンドウが出てきてお祝いしてくれます。

自分が作ったものがちゃんと機能するのは嬉しいなって思いました!python初心者が作ったゲームなので批判せずにやさしい気持ちで読んでくださいね。ではまた。