パート2で書いたプログラムを開設します。
プログラムをできればコピペしないで手打ちもしくは、webページを二つ開いて
見ていただけるといいかと思います。
1行目から65行目までは
必要な変数等を宣言しています。
宣言しているだけです。
注釈も書いてあるので、何となくはわかると思います。
最初AWTだけで書こうと思っていたのですが、画像をつけたりするにはSwingじゃないとだめっぽかったので、使いました。
AWTをSwingにすると頭にJがついたりすることが多いみたいですね。
avaにJがついたらJavaになったのでしょうか?
つまりAVAはAWTで書かれていて、JavaはSwingで書かれているのでしょうか?
あ、avaはオンラインゲームです。 ネタ的意味で書いてみましたが、意味わかりましたか?
ネタはさておき、
70行目から127行目まではメインウィンドウの見た目を作っています。
最初にメインウィンドウのサイズを設定、その次に、60枚のボタンを配置。
後々このボタンがカードになります。その次にスタートボタンを配置
その次はスタートボタンを押したときに表示するダイアログボックスを定義しています。
128行目から132行目までは閉じるボタンを押したときにメインウィンドウを閉じる処理を書いています。これがないと、閉じるボタンを押しても閉じません。
はい、ここからは条件分岐と繰り返し文だけで書いて行きました。
私はこの二つがあれば大体のことはできると思っています(ただし、プログラムは長くなる傾向にある)
GUIでボタンを押したり、したときの処理は117行目で書いてあるActionListenerを使います。
これを使うことによって、138行目のActionEventで受け取っていろんな作業をしていきます。
そのいろんな作業とは、
138行目から195行目まではスタートボタンを押したときの処理になります。
170行目まではゲームが終了した際もう一度開始するために変数などを初期化する作業をしています。
170行目以降は伏せたカードをシャッフルする機能です。
これはMathのRandom関数を使って、0~9.9までのランダムな数字を出力しています。
これを使って、二次元配列に数字を入れたいところですが、ボタンに二次元配列を割り当てるのは面倒なので、一次元配列に直して取り込んでいます。
そのあと、SetLabelでスタートというボタンをカードを伏せるボタンに変更します。
196行目から208行目までは、開いたカードを閉じる処理をしています。
具体的に言いますと、ボタンにはひっくり返すということはできません。
なので、ラベルだけを変更しています。ボタンの表面に真っ白い画像を貼り付けます。
ボタンをクリックすると真っ白い画像を数字の書いてある画像とすり替えるという
作業をしているだけです。この時一次元配列から数字を読み込んで、
その数字と同じ数字のかいてある画像を表示しています。
209行目から309行目ぐらいまではあたり判定やカードを表にする処理が書かれています。
GetSourceという関数を使って、どのボタンが押されたかを確認します。
ちょこちょこプレイヤーの予期しない動作によって、エラーが出ない様にif文を多様していますので、見づらいかもしれません。
この辺は注釈を見てもらえればわかると思います。
特に難しいことはしていません。
310行目から322行目はダイアログボックスにて人数を入力する画面です。
SetVisible(false)することによって、ダイアログボックスを閉じています。
325行目から最後までのpaintメソッドはゲーム画面に文字を出力しています。
DrawString("文字列"横座標,縦座標)
です。96行目にrepaint();というものがありましたが、
これは、このpaintメソッドを再読み込みしています。
そうしないと、文字が更新されません。
この場合の更新というのは、プレイヤーの得点やターン数残りカード枚数などです。
そして、333行目のhosiという変数を座標に設定することによって、
変数の値を変えると★マークが動くようなアクションもできます。
そしてこれができあがるのでした。
以上でざっと解説は終わりです。
見づらくてごめんなさい。
自分で読んでみてわからないところがあれば、ここを読むというぐらいでいいと思います。
プログラムをできればコピペしないで手打ちもしくは、webページを二つ開いて
見ていただけるといいかと思います。
1行目から65行目までは
必要な変数等を宣言しています。
宣言しているだけです。
注釈も書いてあるので、何となくはわかると思います。
最初AWTだけで書こうと思っていたのですが、画像をつけたりするにはSwingじゃないとだめっぽかったので、使いました。
AWTをSwingにすると頭にJがついたりすることが多いみたいですね。
avaにJがついたらJavaになったのでしょうか?
つまりAVAはAWTで書かれていて、JavaはSwingで書かれているのでしょうか?
あ、avaはオンラインゲームです。 ネタ的意味で書いてみましたが、意味わかりましたか?
ネタはさておき、
70行目から127行目まではメインウィンドウの見た目を作っています。
最初にメインウィンドウのサイズを設定、その次に、60枚のボタンを配置。
後々このボタンがカードになります。その次にスタートボタンを配置
その次はスタートボタンを押したときに表示するダイアログボックスを定義しています。
128行目から132行目までは閉じるボタンを押したときにメインウィンドウを閉じる処理を書いています。これがないと、閉じるボタンを押しても閉じません。
はい、ここからは条件分岐と繰り返し文だけで書いて行きました。
私はこの二つがあれば大体のことはできると思っています(ただし、プログラムは長くなる傾向にある)
GUIでボタンを押したり、したときの処理は117行目で書いてあるActionListenerを使います。
これを使うことによって、138行目のActionEventで受け取っていろんな作業をしていきます。
そのいろんな作業とは、
138行目から195行目まではスタートボタンを押したときの処理になります。
170行目まではゲームが終了した際もう一度開始するために変数などを初期化する作業をしています。
170行目以降は伏せたカードをシャッフルする機能です。
これはMathのRandom関数を使って、0~9.9までのランダムな数字を出力しています。
これを使って、二次元配列に数字を入れたいところですが、ボタンに二次元配列を割り当てるのは面倒なので、一次元配列に直して取り込んでいます。
そのあと、SetLabelでスタートというボタンをカードを伏せるボタンに変更します。
196行目から208行目までは、開いたカードを閉じる処理をしています。
具体的に言いますと、ボタンにはひっくり返すということはできません。
なので、ラベルだけを変更しています。ボタンの表面に真っ白い画像を貼り付けます。
ボタンをクリックすると真っ白い画像を数字の書いてある画像とすり替えるという
作業をしているだけです。この時一次元配列から数字を読み込んで、
その数字と同じ数字のかいてある画像を表示しています。
209行目から309行目ぐらいまではあたり判定やカードを表にする処理が書かれています。
GetSourceという関数を使って、どのボタンが押されたかを確認します。
ちょこちょこプレイヤーの予期しない動作によって、エラーが出ない様にif文を多様していますので、見づらいかもしれません。
この辺は注釈を見てもらえればわかると思います。
特に難しいことはしていません。
310行目から322行目はダイアログボックスにて人数を入力する画面です。
SetVisible(false)することによって、ダイアログボックスを閉じています。
325行目から最後までのpaintメソッドはゲーム画面に文字を出力しています。
DrawString("文字列"横座標,縦座標)
です。96行目にrepaint();というものがありましたが、
これは、このpaintメソッドを再読み込みしています。
そうしないと、文字が更新されません。
この場合の更新というのは、プレイヤーの得点やターン数残りカード枚数などです。
そして、333行目のhosiという変数を座標に設定することによって、
変数の値を変えると★マークが動くようなアクションもできます。
そしてこれができあがるのでした。
以上でざっと解説は終わりです。
見づらくてごめんなさい。
自分で読んでみてわからないところがあれば、ここを読むというぐらいでいいと思います。
※コメント投稿者のブログIDはブログ作成者のみに通知されます