Avatar billede learnjava Nybegynder
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?
Avatar billede learnjava Nybegynder
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) {}

   
}
Avatar billede spaceus Nybegynder
24. april 2006 - 13:22 #2
start med et kryds og bolle spil så kan du opgradere ;)
Avatar billede learnjava Nybegynder
24. april 2006 - 13:47 #3
Lyder som en god idé - har du evt. et link til en beskrivelse eller et eksempel?
Avatar billede spaceus Nybegynder
24. april 2006 - 14:25 #4
http://www.eksperten.dk/artikler/322

mener jeg burde kunne hjælpe ;)
Avatar billede learnjava Nybegynder
24. april 2006 - 14:43 #5
OK
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester