22. april 2006 - 15:49
Der er
5 kommentarer
Kodning af simpelt skakspil i java
Jeg er java-begynder:
Jeg har lavet et simpelt skakspil og fået linet alle brikker op (gif-filer). Jeg kan også flytte brikkerne (via listner) - men der er endnu ingen regler for hvordan de enkelte brikker må flytte (har lavet en Super-brik som de enkelte briktyper arver fra), hvordan de slår hinanden eller hvem der har næste tur.
Er der nogen der har et bud på hvordan man koder disse ting?
22. april 2006 - 16:21
#1
Min kode:
Benyt_Skak
import javax.swing.JFrame;
public class Benyt_Skak {
public static void main(String[] args)
{
JFrame frame = new Skak();
frame.setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE );
frame.pack();
frame.setResizable( false );
frame.setLocationRelativeTo( null );
frame.setVisible(true);
}
}
Skak
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class Skak extends JFrame implements MouseListener, MouseMotionListener
{
JLayeredPane layeredPane;
/*BNJE: LayeredPanes allow you to place JComponents on top of one another.
The LayeredPane is further subdivided into five layers: default, palette,
modal, popup and drag.*/
JPanel skakBræt = new JPanel();
JLabel skakBrik;
int xAdjustment;
int yAdjustment;
private final static int row = 8; // skal jeg bruge disse???
private final static int col = 8; // skal jeg bruge disse???
int board[][] = new int[8][8]; // skal jeg bruge disse???
public Skak()
{
Dimension brædtStørrelse = new Dimension(400, 400);
// Use a Layered Pane for this this application
layeredPane = new JLayeredPane();
getContentPane().add(layeredPane);
layeredPane.setPreferredSize( brædtStørrelse );
layeredPane.addMouseListener( this );
layeredPane.addMouseMotionListener( this );
setTitle("Brian's skakspil");
// Add a chess board to the Layered Pane
layeredPane.add(skakBræt, JLayeredPane.DEFAULT_LAYER);
skakBræt.setLayout( new GridLayout(8, 8) );
skakBræt.setPreferredSize( brædtStørrelse );
skakBræt.setBounds(0, 0, brædtStørrelse.width, brædtStørrelse.height);
/* for (int i = 0; i < 64; i++)
{
JPanel square = new JPanel( new BorderLayout() );
skakBræt.add( square );
int row = (i / 8) % 2;
if (row == 0)
square.setBackground( i % 2 == 0 ? Color.black : Color.LIGHT_GRAY );
else
square.setBackground( i % 2 == 0 ? Color.LIGHT_GRAY : Color.black );
} */
for (int i = 0; i < 64; i++)
{
JPanel square = new JPanel(new BorderLayout());
skakBræt.add(square);
for (int row = 0; row < 8; row++)
{
for (int col = 0; col < 8; col++)
{
if ((i / 8) % 2 == 0)
square.setBackground(i % 2 == 0 ? Color.LIGHT_GRAY : Color.black);
else
square.setBackground(i % 2 == 0 ? Color.black : Color.LIGHT_GRAY);
}
} // end for row
}
// Place brikker på brætet (Husk at gif-filerne skal ligger i projektmappen:
// Sorte Bønder:
JLabel piece = new JLabel( new ImageIcon("SortBonde.gif") );
JPanel panel = (JPanel)skakBræt.getComponent(8);
panel.add( piece );
piece = new JLabel( new ImageIcon("SortBonde.gif") );
panel = (JPanel)skakBræt.getComponent( 9 );
panel.add( piece );
piece = new JLabel( new ImageIcon("SortBonde.gif") );
panel = (JPanel)skakBræt.getComponent( 10 );
panel.add( piece );
piece = new JLabel( new ImageIcon("SortBonde.gif") );
panel = (JPanel)skakBræt.getComponent( 11 );
panel.add( piece );
piece = new JLabel( new ImageIcon("SortBonde.gif") );
panel = (JPanel)skakBræt.getComponent( 12 );
panel.add( piece );
piece = new JLabel( new ImageIcon("SortBonde.gif") );
panel = (JPanel)skakBræt.getComponent( 13 );
panel.add( piece );
piece = new JLabel( new ImageIcon("SortBonde.gif") );
panel = (JPanel)skakBræt.getComponent( 14 );
panel.add( piece );
piece = new JLabel( new ImageIcon("SortBonde.gif") );
panel = (JPanel)skakBræt.getComponent( 15 );
panel.add( piece );
// Sorte Tårne
piece = new JLabel( new ImageIcon("SortTaarn.gif") );
panel = (JPanel)skakBræt.getComponent( 0 );
panel.add( piece );
piece = new JLabel( new ImageIcon("SortTaarn.gif") );
panel = (JPanel)skakBræt.getComponent( 7 );
panel.add( piece );
// Sorte Springere
piece = new JLabel( new ImageIcon("SortSpringer.gif") );
panel = (JPanel)skakBræt.getComponent( 1 );
panel.add( piece );
piece = new JLabel( new ImageIcon("SortSpringer.gif") );
panel = (JPanel)skakBræt.getComponent( 6 );
panel.add( piece );
// Sorte Løbere
piece = new JLabel( new ImageIcon("SortLoeber.gif") );
panel = (JPanel)skakBræt.getComponent( 2 );
panel.add( piece );
piece = new JLabel( new ImageIcon("SortLoeber.gif") );
panel = (JPanel)skakBræt.getComponent( 5 );
panel.add( piece );
// Sort Dronning
piece = new JLabel( new ImageIcon("SortDronning.gif") );
panel = (JPanel)skakBræt.getComponent( 3 );
panel.add( piece );
// Sort Konge
piece = new JLabel( new ImageIcon("SortKonge.gif") );
panel = (JPanel)skakBræt.getComponent( 4 );
panel.add( piece );
// Hvide Bønder:
piece = new JLabel( new ImageIcon("HvidBonde.gif") );
panel = (JPanel)skakBræt.getComponent( 48 );
panel.add( piece );
piece = new JLabel( new ImageIcon("HvidBonde.gif") );
panel = (JPanel)skakBræt.getComponent( 49 );
panel.add( piece );
piece = new JLabel( new ImageIcon("HvidBonde.gif") );
panel = (JPanel)skakBræt.getComponent( 50 );
panel.add( piece );
piece = new JLabel( new ImageIcon("HvidBonde.gif") );
panel = (JPanel)skakBræt.getComponent( 51 );
panel.add( piece );
piece = new JLabel( new ImageIcon("HvidBonde.gif") );
panel = (JPanel)skakBræt.getComponent( 52 );
panel.add( piece );
piece = new JLabel( new ImageIcon("HvidBonde.gif") );
panel = (JPanel)skakBræt.getComponent( 53 );
panel.add( piece );
piece = new JLabel( new ImageIcon("HvidBonde.gif") );
panel = (JPanel)skakBræt.getComponent( 54 );
panel.add( piece );
piece = new JLabel( new ImageIcon("HvidBonde.gif") );
panel = (JPanel)skakBræt.getComponent( 55 );
panel.add( piece );
// Hvide Tårne
piece = new JLabel( new ImageIcon("HvidTaarn.gif") );
panel = (JPanel)skakBræt.getComponent( 56 );
panel.add( piece );
piece = new JLabel( new ImageIcon("HvidTaarn.gif") );
panel = (JPanel)skakBræt.getComponent( 63 );
panel.add( piece );
// Hvide Springere
piece = new JLabel( new ImageIcon("HvidSpringer.gif") );
panel = (JPanel)skakBræt.getComponent( 57 );
panel.add( piece );
piece = new JLabel( new ImageIcon("HvidSpringer.gif") );
panel = (JPanel)skakBræt.getComponent( 62 );
panel.add( piece );
// Hvide Løbere
piece = new JLabel( new ImageIcon("HvidLoeber.gif") );
panel = (JPanel)skakBræt.getComponent( 58 );
panel.add( piece );
piece = new JLabel( new ImageIcon("HvidLoeber.gif") );
panel = (JPanel)skakBræt.getComponent( 61 );
panel.add( piece );
// Hvid Dronning
piece = new JLabel( new ImageIcon("HvidDronning.gif") );
panel = (JPanel)skakBræt.getComponent( 59 );
panel.add( piece );
// Hvid Konge
piece = new JLabel( new ImageIcon("HvidKonge.gif") );
panel = (JPanel)skakBræt.getComponent( 60 );
panel.add( piece );
// piece = new JLabel( new ImageIcon("HvidBonde.gif") );
// panel = (JPanel)skakBrædt.getComponent( 9 );
// panel.add( piece );
// piece = new JLabel( new ImageIcon("HvidLoeber.gif") );
// panel = (JPanel)skakBrædt.getComponent( 5 );
// panel.add( piece );
}
/* public void initSpil() // placer bønderne på skakbrætet
{
JLabel piece = new JLabel( new ImageIcon() );
for (int i = 0; i < 7; i++ )
{
piece = new JLabel( new ImageIcon("HvidBonde.gif") );
panel = (JPanel)super.getComponent( [1][4] );
panel.add( piece );
}
}
*/
/*
** Add the selected chess piece to the dragging layer so it can be moved
*/
public void mousePressed(MouseEvent e)
{
skakBrik = null;
Component c = skakBræt.findComponentAt(e.getX(), e.getY());
if (c instanceof JPanel) return;
Point parentLocation = c.getParent().getLocation();
xAdjustment = parentLocation.x - e.getX();
yAdjustment = parentLocation.y - e.getY();
skakBrik = (JLabel)c;
skakBrik.setLocation(e.getX() + xAdjustment, e.getY() + yAdjustment);
skakBrik.setSize(skakBrik.getWidth(), skakBrik.getHeight());
layeredPane.add(skakBrik, JLayeredPane.DRAG_LAYER);
}
/*
** Move the chess piece around
*/
public void mouseDragged(MouseEvent me)
{
if (skakBrik == null) return;
skakBrik.setLocation(me.getX() + xAdjustment, me.getY() + yAdjustment);
}
/*
** Drop the chess piece back onto the chess board
*/
public void mouseReleased(MouseEvent e)
{
if (skakBrik == null) return;
skakBrik.setVisible(false);
Component c = skakBræt.findComponentAt(e.getX(), e.getY());
if (c instanceof JLabel)
{
Container parent = c.getParent();
parent.remove(0);
parent.add( skakBrik );
}
else
{
Container parent = (Container)c;
parent.add( skakBrik );
}
skakBrik.setVisible(true);
}
public void mouseClicked(MouseEvent e) {}
public void mouseMoved(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
}