乱数で石の数を決める

乱数でテーブルに置く石の数と、一度に取り除くことが出来る数を決めます。

前田稔の超初心者のプログラム入門

プログラムの作成

  1. メモ帳などでタイプして rand.java の名前で保存して下さい。
    //★ 乱数で石の数を決める    前田 稔
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import java.util.*;
    
    public class rand extends JApplet implements MouseListener
    {   static  Image   img;
        static  Random  rand;
        static  int     Count;          // 山に積まれた石の数
        static  int     Max;            // 一度に取り除く最大数
    
        // Initialize
        public void init()
        {   img = getImage(getDocumentBase(),"jewel.gif");
            addMouseListener(this);
            rand = new Random();
            Count= rand.nextInt(20)+11;
            Max  = rand.nextInt(5)+2;
        }
    
        // Paint
        public void paint(Graphics g)
        {   int   i,x,y;
            Dimension  size = getSize();
            g.setColor(getBackground());
            g.fillRect(0, 0, size.width, size.height);
            g.setFont(new Font("Helvetica",Font.PLAIN,32));
            g.setColor(Color.black);
            g.drawString("最後の石を取らされた方が負けです", 20,50);
            g.drawString("最大" + Integer.toString(Max) + "個まで取ることができます", 20,80);
            if (img!=null)
            {   for(i=0; i<Count; i++)
                {   x= (i%10)*60+20;
                    y= (i/10)*60+100;
                    g.drawImage(img,x,y,this);
                }
            }
        }
    
        // Mouse Click
        public void mouseClicked(MouseEvent e)
        {
            Count= rand.nextInt(20)+11;
            Max  = rand.nextInt(5)+2;
            repaint();
        }
    
        public void mousePressed(MouseEvent e){}
        public void mouseReleased(MouseEvent e){}
        public void mouseEntered(MouseEvent e){}
        public void mouseExited(MouseEvent e){}
    
    }
    
  2. Java Applet を起動する HTMLファイル(rand.htm)です。
    <html>
    <body>
    <h3>乱数で石の数を決める</h3>
    <applet code="rand.class" width="640" height="400">
    </applet>
    </body>
    </html>
    
  3. インターネットブラウザを起動して rand.htm から実行して下さい。
    マウスをクリックすると、乱数で新しい値に設定されます。

Java プログラムの説明

  1. マウスのクリックを検出するので java.awt.event.* をインポートします。
    乱数を使うので java.util.* をインポートします。
    extends(クラスの継承) で JApplet を指定して下さい。
    マウスのクリックを検出するので MouseListener を implements(実装) します。
    img が石の画像の領域です。
    rand が乱数の領域です。
    Count が山に積まれた石の数で、Max が一度に取り除く最大数です。
        import java.awt.*;
        import javax.swing.*;
        import java.awt.event.*;
        import java.util.*;
    
        public class rand extends JApplet implements MouseListener
        {   static  Image   img;
            static  Random  rand;
            static  int     Count;          // 山に積まれた石の数
            static  int     Max;            // 一度に取り除く最大数
        
  2. アプリケーション(ゲーム)の初期化を行う init() メソッドです。
    img に画像を入力します。
    MouseListener を設定します。
    乱数を初期化して、Count と Max を設定します。
    Count は11個〜30個を乱数で選びます。
    Max は2個〜6個を乱数で選びます。
        public void init()
        {   img = getImage(getDocumentBase(),"jewel.gif");
            addMouseListener(this);
            rand = new Random();
            Count= rand.nextInt(20)+11;
            Max  = rand.nextInt(5)+2;
        }
        
  3. paint() でウインドウを描画します。
    簡単なルールの説明を表示します。
    Count の数だけ、一行に10個ずつ並べて石を描画します。
        public void paint(Graphics g)
        {   int   i,x,y;
            Dimension  size = getSize();
            g.setColor(getBackground());
            g.fillRect(0, 0, size.width, size.height);
            g.setFont(new Font("Helvetica",Font.PLAIN,32));
            g.setColor(Color.black);
            g.drawString("最後の石を取らされた方が負けです", 20,50);
            g.drawString("最大" + Integer.toString(Max) + "個まで取ることができます", 20,80);
            if (img!=null)
            {   for(i=0; i<Count; i++)
                {   x= (i%10)*60+20;
                    y= (i/10)*60+100;
                    g.drawImage(img,x,y,this);
                }
            }
        }
        
  4. マウスがクリックされたときの処理です。
    Count と Max を再設定して repaint() で描画メソッド(paint) を呼び出します。
        public void mouseClicked(MouseEvent e)
        {
            Count= rand.nextInt(20)+11;
            Max  = rand.nextInt(5)+2;
            repaint();
        }
        

[Next Chapter ↓] 交互にプレイする
[Previous Chapter ↑] 石取りゲームのルール

Java Game Program