|
|
プログラム ソースリスト (1) |
「ゲームを作る」 のページのプログラムのソースリストです。
これをコンパイルしたものをホームページに載せて、動かせるようにしてあります。
このプログラムは Java で書かれています。
主要部分にはリンクをつけて、説明が見られるようにしてありますが、
これを理解しないといけない、というわけではありません。
こんなプログラムを書けば、あんなふうに動くのか、と思えばそれでいいでしょう。
"/*" と "*/" で囲まれた部分や "//" より右はコメントで、
プログラムの動きには関係がありません。
このページでは緑で表示しています。
/* ---------------------------------------------------------------------------------------------- game.java ゲーム(ウォーミングアップ) ver. 1.00 (JDK 1.02) ueyama@infonet.co.jp 2000.05.07 ---------------------------------------------------------------------------------------------- */ import java.applet.*; import java.awt.*; import java.util.*;
| public class game extends Applet | |
| { | |
| int X0, Y0; | // 図形の表示位置 |
| int No=0; | // 図形 No. |
| int Br=240, Bg=240, Bb=250; | // 背景色 |
| AudioClip Pi; | // 効果音 |
| Graphics gr; | |
| Random Rnd=new Random(); | |
| public void init() | // 初期設定 |
| { | |
| setBackground(new Color(Br,Bg,Bb)); | |
| gr=getGraphics(); | |
| Pi=getAudioClip(getCodeBase(), "pi.au"); | // 効果音データの読み込み |
| } | |
| public void dsp_fig(int x, int y, int n) | // 図形の表示 |
| { | |
| if(n%2==0) gr.setColor(Color.red); | // n=0:赤正方形 n=1:緑正方形 |
| else gr.setColor(Color.green); | // n=2:赤円 n=3:緑円 n=4:消去 |
| if(n/2==0) gr.fillRect(x+10,y+10,130,130); | // n=0 or 1 なら正方形を描く |
| if(n/2==1) gr.fillOval(x,y,150,150); | // n=2 or 3 なら円を描く |
| gr.setColor(new Color(Br,Bg,Bb)); | // 背景色にする |
| if(n/2==0) gr.fillRect(x+40,y+40,70,70); | // 中をくり抜く |
| if(n/2==1) gr.fillOval(x+30,y+30,90,90); | |
| if(n==4) gr.clearRect(x,y,150,150); | // n=4 なら消去する |
| } | |
| public void paint(Graphics g) | // 画面の表示 |
| { | |
| g.clearRect(0,0,size().width,size().height); | |
| } | |
| public boolean mouseDown(Event e, int x, int y) | // マウスがクリックされたときの処理 |
| { | |
| X0=x-75; Y0=y-75; | |
| No=Math.abs(Rnd.nextInt())%4; | // 図形No.: 0〜3 |
| dsp_fig(X0,Y0,No); | // 図形の表示 |
| Pi.play(); | // 効果音「ピッ」 |
| return true; | |
| } | |
| public boolean mouseUp(Event e, int x, int y) | // クリックが離されたときの処理 |
| { | |
| dsp_fig(X0,Y0,4); | // 前の図形の消去 |
| return true; | |
| } | |
| } |
情報処理概論 に戻る 講義資料 に戻る ゲームを作る に戻る 戻る
int X0, Y0;
変数(メモリ)の定義をしています。変数 X0, Y0 は図形の表示位置を表すために使用します。
int は integer の略で、整数の変数という意味です。
public void init()
init メソッドといいます。プログラムを読み込んだときに、一度だけ実行されます。
メソッドは "{" から始まり "}" で終わります。
gr.setColor(Color.red);
描画する色を設定します。次に別の色が設定されるまで、この場合は赤で表示されます。
gr.fillRect(x+10,y+10,130,130);
長方形を描画します。カッコの中は、X座標値、Y座標値、幅、高さです。
Java の座標は左上隅が原点で、右、下、方向に正の値を取ります。
長方形も座標は左上の隅の点を表しています。
gr.fillOval(x,y,150,150);
x,y を左上の座標値とした 1 辺 150(単位はピクセル (画素)。)の正方形に内接する円を描いて塗りつぶします。
fillRect では 1 辺 130ピクセルの正方形を描いていますが、同じ 150ピクセルにすると、
正方形の方が大きく見えるため、小さめにしています。
X0=x-75; Y0=y-75;
円や正方形を描くときの座標は左上ですから、マウスでクリックした点を中心にして図形を描かせるためには、
半径に相当する 75ピクセルだけ、座標値をずらせなくてはなりません。
No=Math.abs(Rnd.nextInt())%4;
図形の番号を乱数でランダムに決めています。
Rnd.nextInt() で、非常に広範囲の乱数(−2147483648〜2147483647)が得られるので、
abs() で絶対値を取って 4 で割って、その余りを No に代入しています。
これで 0〜3 の乱数が得られます。%4 は 4 で割った余り、の意味です。
2000.05.09 ueyama@infonet.co.jp