view Ristipolku.java @ 1:44f1e7b47fcf

Preliminary work ... puuh.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 28 Jan 2011 16:34:53 +0200
parents f930f72ed0f5
children 1785f66a7beb
line wrap: on
line source

/*
 * Ristipolku
 * (C) Copyright 2011 Matti 'ccr' Hämäläinen <ccr@tnsp.org>
 *
 * Ohjelmointiprojekti Java-kurssille.
 */
import java.awt.*;
import java.awt.geom.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import game.*;

class PathInfo
{
   public int in, inX, inY, out, outX, outY; 
   
   public PathInfo(in, inX, inY, out, outX, outY)
   {
      this.in = in;
      this.inX = inX;
      this.inY = inY;
      
      this.out = out;
      this.outX = outX;
      this.outY = outY;
   }
}


class GameBoard
{
   public static final int boardSize = 9;
   public static final int boardMiddle = 4;
   Piece[][] board;
   Piece current;
   
   public GameBoard()
   {
      board = new Piece[boardSize][boardSize];
      board[boardMiddle][boardMiddle] = new Piece(PieceType.START);
      moveX = boardMiddle;
      moveY = boardMiddle - 1;
      
      
   }

   public void paint(Graphics2D g, int sx, int sy, double scale)
   {
      for (int y = 0; y < boardSize; y++)
      for (int x = 0; x < boardSize; x++)
      {
         if (board[x][y] != null)
            board[x][y].paint(g, sx + (x * scale), sy + (y * scale), scale - scale/10);
      }
   }
   
   private boolean isEmpty(int x, int y)
   {
       return (x >= 0 && x < boardSize && y >= 0 && y < boardSize && board[x][y] == null);
   }

   private Piece getPiece(int x, int y)
   {
       return board[x][y];
   }
   
   public Point resolvePath(int x, int y, int inpoint)
   {
   }
   
   public pieceRotate(boolean dir)
   {
      current.rotate(dir);
   }

   public void pieceFinishTurn()
   {
      if (current != null)
         current.setType(PieceType.NORMAL);
      
      if (isEmpty(cx, cy))
      {
         current = new Piece(PieceType.ACTIVE);
         lauta.setPiece(cx, cy, current);
      }
      
   }
}


public class gfxtest extends JApplet
                     implements KeyListener
{
   GameBoard lauta;

   public void init()
   {
      getContentPane().setBackground(Color.white);
      
      lauta = new GameBoard();

      addKeyListener(this);
   }


/*
    public Graphics2D createGraphics2D(Dimension d) {
        Graphics2D g2 = null;

        if (bimg == null || bimg.getWidth() != d.w || bimg.getHeight() != d.h) {
            bimg = (BufferedImage) createImage(d.w, d.h);
            reset(d);
        } 

        g2 = bimg.createGraphics();
        g2.setBackground(getBackground());
        g2.clearRect(0, 0, w, h);
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                            RenderingHints.VALUE_ANTIALIAS_ON);
        return g2;
    }
*/

   public void paint(Graphics g)
   {
      Graphics2D g2 = (Graphics2D) g;

      g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                          RenderingHints.VALUE_ANTIALIAS_ON);

      lauta.paint(g2, 15, 15, 60);
   }


   public void keyPressed(KeyEvent e)
   {
   }
   
   public void keyReleased(KeyEvent e)
   {
   }
   
   public void keyTyped(KeyEvent e)
   {
      switch (event.getKeyCode())
      {
         case VK_LEFT:
         case VK_UP:
            moveRotate(false);
            break;

         case VK_RIGHT:
         case VK_DOWN:
            moveRotate(true);
            break;
         
         case VK_ENTER:
            moveNew();
            break;
      }
   }
}