オセロゲームの盤と駒を表示

oseroobj でオセロゲームの盤と駒を表示します。

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

プログラムの作成

  1. メモ帳などでタイプして osero.java の名前で保存して下さい。
    //★ オセロの盤と駒を表示する    前田 稔
    import java.applet.*;
    import java.awt.*;
    import javax.swing.*;
    
    public class osero extends JApplet
    {   oseroobj    obj;
    
        // Initialize
        public void init()
        {   obj = new oseroobj();
            setBackground(new Color(200,200,200));
        }
    
        // Paint
        public void paint(Graphics g)
        {
            Dimension  size = getSize();
            g.setColor(getBackground());
            g.fillRect(0, 0, size.width, size.height);
            obj.View(g);
        }
    }
    
    //★ オセロ Object Class
    class oseroobj extends JApplet
    {   int     T[][] = new int[8][8];
        int     WSIZE= 50;              //格子のサイズ
        int     KSIZE= (WSIZE*8/10);    //駒の直径
        int     x,y,i,j;
    
        // Constructor
        oseroobj()
        {
            T[4][3]=T[3][4]= 1;         //黒
            T[3][3]=T[4][4]= -1;        //白
        }
    
        // 盤を描画
        public void View(Graphics g)
        {
            g.setColor(new Color(0,140,0));
            g.fillRect(10,10,WSIZE*8+20,WSIZE*8+20);
            g.setColor(Color.black);
            for(i=0; i<9; i++)
            {   g.drawLine(20,WSIZE*i+20,WSIZE*8+20,WSIZE*i+20);    // 横線
                g.drawLine(WSIZE*i+20,20,WSIZE*i+20,WSIZE*8+20);    // 縦線
            }
            for(i=0,y=WSIZE-25; i<8; i++,y+=WSIZE)
            {   for(j=0,x=WSIZE-25; j<8; j++,x+=WSIZE)
                {   if (T[i][j]!=0) Koma(g,x,y,T[i][j]);
                }
            }
        }
    
        // 駒を表示する
        void  Koma(Graphics g, int x, int y, int s)
        {
            if (s==1)
            {   g.setColor(Color.black);
                g.fillArc(x,y,KSIZE,KSIZE,0,360);
            }
            if (s==-1)
            {   g.setColor(Color.white);
                g.fillArc(x,y,KSIZE,KSIZE,0,360);
            }
        }
    }
    
  2. Java Applet を起動する HTMLファイル(osero.htm)です。
    <html>
      <body>
        <h3>オセロゲーム</h3>
        <applet code="osero.class" width="640" height="480">
        </applet>
      </body>
    </html>
    

プログラムの説明

  1. osero.java ファイルの中に osero Class と oseroobj Class を組み込んでいます。
    osero Class では init() メソッドで oseroobj を生成して paint() メソッドで描画します。
    paint() では、背景色でクリアして obj.View(g) メソッドを呼び出します。
    public class osero extends JApplet
    {   oseroobj    obj;
    
        // Initialize
        public void init()
        {   obj = new oseroobj();
            setBackground(new Color(200,200,200));
        }
    
        // Paint
        public void paint(Graphics g)
        {
            Dimension  size = getSize();
            g.setColor(getBackground());
            g.fillRect(0, 0, size.width, size.height);
            obj.View(g);
        }
    }
    
  2. oseroobj Class です。
    WSIZE は駒を置く升目のサイズで、KSIZE は駒を描画するときのサイズです。
    T[8][8] がオセロ盤の定義で「空:0,黒:1,白:−1」で駒を表現します。
    class oseroobj extends JApplet
    {   int     T[][] = new int[8][8];
        int     WSIZE= 50;              //格子のサイズ
        int     KSIZE= (WSIZE*8/10);    //駒の直径
        int     x,y,i,j;
    
  3. Constructor で T[8][8] の中央に最初の駒を設定します。
        // Constructor
        oseroobj()
        {
            T[4][3]=T[3][4]= 1;         //黒
            T[3][3]=T[4][4]= -1;        //白
        }
    
  4. View() メソッドで T[8][8] に従って盤と駒を描画します。
    Koma(g,x,y,T[i][j]) が一個の駒を描画するメソッドです。
        // 盤を描画
        public void View(Graphics g)
        {
            g.setColor(new Color(0,140,0));
            g.fillRect(10,10,WSIZE*8+20,WSIZE*8+20);
            g.setColor(Color.black);
            for(i=0; i<9; i++)
            {   g.drawLine(20,WSIZE*i+20,WSIZE*8+20,WSIZE*i+20);    // 横線
                g.drawLine(WSIZE*i+20,20,WSIZE*i+20,WSIZE*8+20);    // 縦線
            }
            for(i=0,y=WSIZE-25; i<8; i++,y+=WSIZE)
            {   for(j=0,x=WSIZE-25; j<8; j++,x+=WSIZE)
                {   if (T[i][j]!=0) Koma(g,x,y,T[i][j]);
                }
            }
        }
    
  5. 黒または白の駒を描画する Koma() メソッドです。
    オセロの駒をページ先頭の画像を参考にして立体感を持たせて下さい。
        // 駒を表示する
        void  Koma(Graphics g, int x, int y, int s)
        {
            if (s==1)
            {   g.setColor(Color.black);
                g.fillArc(x,y,KSIZE,KSIZE,0,360);
            }
            if (s==-1)
            {   g.setColor(Color.white);
                g.fillArc(x,y,KSIZE,KSIZE,0,360);
            }
        }
    

[Next Chapter ↓] コンピュータが乱数でプレイ

Java Game Program