All pastes #949508 Raw Edit

Nemo

public text v1 · immutable
·published 2008-03-19 21:20 UTC
rendered paste body
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class ChessBoard extends JPanel implements MouseListener {
	private final Color WHITE_SPACE = new Color(47,76,76);
	private final Color BLACK_SPACE = new Color(247,232,215);
	private GridLayout grid;
	private Dimension squareSize = new Dimension(45,45);
	private Dimension boardSize = new Dimension(360,360);
	private ImageIcon imageTest = new ImageIcon("D:/Documents and Settings/Me/My Documents/My Pictures/saradomin_staff1.gif");
	
	private ChessPiece[][] board = new ChessPiece[8][8];
	private JPanel[][] square = new JPanel[8][8];
	
	/*
	 * FOR IMAGE BUG
	 * Boarder donesnt exist
	 * image size 45,45
	 * panel size 45,45
	 * setIconTextGap() ineffective
	 *
	 *
	 */
	
	public ChessBoard(GridLayout grid) {
		super(grid);
		this.grid = grid;
		
		setPreferredSize(boardSize);
    	setMaximumSize(boardSize);
    	setMinimumSize(boardSize);
    			
		//Initialize Pieces
		initialize(true);
    	
    	addMouseListener(this);
	}
	
	//Args tell who is on top / bot :: true = white on bot
	private void initialize(boolean position) {
		ChessPiece.COLOR color;
		for (int b = 0; b < 8; b++) {
			if (b == 0 || b == 1) {
				color = (position)? ChessPiece.COLOR.BLACK : ChessPiece.COLOR.WHITE;
			}
			else if (b == 6 || b == 7) {
				color = (position)? ChessPiece.COLOR.WHITE : ChessPiece.COLOR.BLACK;
			}
			else {
				color = ChessPiece.COLOR.EMPTY;
			}

			for (int a = 0; a < 8; a++) {
				if (b == 0 || b == 7) {
					switch (a) {
						case 0:
							board[a][b] = new Rook(color,a,b);
							break;
						case 1:
							board[a][b] = new Knight(color,a,b);
							break;
						case 2:
							board[a][b] = new Bishop(color,a,b);
							break;
						case 3:
							if (position) {
								board[a][b] = new Queen(color,a,b);
							}
							else {
								board[a][b] = new King(color,a,b);
							}
							break;
						case 4:
							if (!position) {
								board[a][b] = new Queen(color,a,b);
							}
							else {
								board[a][b] = new King(color,a,b);
							}
							break;
						case 5:
							board[a][b] = new Bishop(color,a,b);
							break;
						case 6:
							board[a][b] = new Knight(color,a,b);
							break;
						case 7:
							board[a][b] = new Rook(color,a,b);
							break;
					}
				}
				else if (b == 1 || b == 6) {
					board[a][b] = new Pawn(color,a,b);
				}
				else {
					board[a][b] = new Empty(a,b);
				}
			}
		}
		
		
		
		//Set up the backgrounds on the chessboard
		boolean tt = false;
		for (int b = 0; b < 8; b++) {
			for (int a = 0; a < 8; a++) {
    			JPanel boardColor = new JPanel();
    			boardColor.setPreferredSize(squareSize);
    			boardColor.setMaximumSize(squareSize);
    			boardColor.setMinimumSize(squareSize);
    			if (tt) {
    				boardColor.setBackground(WHITE_SPACE);
    				tt = false;
    			}
    			else {
    				boardColor.setBackground(BLACK_SPACE);
    				tt = true;
    			}
    			
    			boardColor.add(board[a][b]);
    			add(boardColor);
    			System.out.println(boardColor.getBorder() + " " + board[a][b].getBorder());
    			square[a][b] = boardColor;
			}
			tt = tt? false : true;
    	}
	}
	
	//Returns wether or not the given place is open
	public boolean inUse(int x, int y) {
		if (board[x][y].getPiece() == ChessPiece.PIECE.EMPTY)
			return false;
		return true;
	}
	
	//Returns the entire ChessPiece[][]
	public ChessPiece[][] getBoard() {
		return board;
	}
	
	//Returns the ChessPiece at the given board location
	public ChessPiece getPiece(int x, int y) {
		return board[x][y];
	}
	
	//Returns the ChessPiece at the given pixel location
	public ChessPiece getPieceByPixel(int x, int y) {
		return board[x /45][y /45];
	}
	
	public void paintComponent(Graphics g) {

	}
	
	public void mousePressed(MouseEvent e) {
		ChessPiece p = getPieceByPixel(e.getX(),e.getY());
		System.out.println(e.getX() + "," + e.getY() + "    " + p.getColor() + "   " + p.getPiece() + "   " + p.getX() + "," + p.getY());
    }

    public void mouseReleased(MouseEvent e) {
    }

    public void mouseEntered(MouseEvent e) {
    }

    public void mouseExited(MouseEvent e) {
    }

    public void mouseClicked(MouseEvent e) {
    }
}























import java.awt.*;
import javax.swing.*;

//GridBagLayout GridLayout 
public class Test extends JPanel {
	private final int CHESSBOARD_SQUARE_SIZE = 45; // DO NOT CHANGE
	private ChessBoard chessBoard;
	
	public Test() {
		JFrame window = new JFrame("Chess");
		GridLayout grid = new GridLayout(8,8,0,0);
		chessBoard = new ChessBoard(grid);
		
		//chessBoard.setSize(360,360);
    	window.setBounds(100, 100, 600, 600);
    	window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	
//    	chessBoard.setLocation(100,100,100,100);
    	
		Container c = window.getContentPane();
		c.add(chessBoard);
		
		window.pack();
		//grid.layoutContainer(panel);
		//System.out.println(grid.preferredLayoutSize(window));
		window.setVisible(true);
		repaint();
	}
	public void paintComponent(Graphics g) {
		System.out.println("I AM CALLED");
		super.paintComponent(g);
		chessBoard.paintComponent(g);
	}

	public static void main(String[] args) {
		Test test = new Test();
	}
}