戻る プログラム ソースリスト (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