LegendMVB Skrevet 20. april 2009 Del Skrevet 20. april 2009 Hei, jeg og 3 andre har et prosjekt, og vi har valgt sjakk. Vi har greid å lage brettet og vi har greid å lagt inn brikkene. Problemet våres er at vi ikke vet hvordan man legger inn reglene i brikkene. Håper vi kan få noen tips. TAKK Lenke til kommentar
___ Skrevet 20. april 2009 Del Skrevet 20. april 2009 Hei, jeg og 3 andre har et prosjekt, og vi har valgt sjakk. Vi har greid å lage brettet og vi har greid å lagt inn brikkene.Problemet våres er at vi ikke vet hvordan man legger inn reglene i brikkene. Håper vi kan få noen tips. TAKK Hvordan ser klassestrukturen deres ut? Werner Lenke til kommentar
LegendMVB Skrevet 20. april 2009 Forfatter Del Skrevet 20. april 2009 Vi har først klassen Game som er main programmet som setter opp JFrame vinduet. Så har vi en klasse Chessboard som legger inn JPanel og metodene som gjør at vi kan bevege brikkene. Så har vi en klasse Brikke som er ikoner av brikkene som blir hentet inn av Chessboard. ChessBoard klassen ser slik ut: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class chessboard1 extends JFrame implements MouseListener, MouseMotionListener { JLayeredPane layeredPane; JPanel chessBoard; JLabel chessPiece; int x; int y; JPanel[][] tabell = new JPanel[8][8]; public chessboard1(){ Dimension boardSize = new Dimension(650, 650); // Oppretter Layered Pane og legger til mouselistener og mousemotinlistener layeredPane = new JLayeredPane(); getContentPane().add(layeredPane); layeredPane.setPreferredSize(boardSize); layeredPane.addMouseListener(this); layeredPane.addMouseMotionListener(this); //Add a chess board to the Layered Pane chessBoard = new JPanel(); layeredPane.add(chessBoard, JLayeredPane.DEFAULT_LAYER); chessBoard.setLayout( new GridLayout(8, 8) ); chessBoard.setPreferredSize( boardSize ); chessBoard.setBounds(0, 0, boardSize.width, boardSize.height); for (int i = 0; i < 64; i++) { JPanel square = new JPanel( new BorderLayout() ); chessBoard.add( square ); int row = (i / 8) % 2; if (row == 0) square.setBackground( i % 2 == 0 ? Color.DARK_GRAY : Color.white ); else square.setBackground( i % 2 == 0 ? Color.white : Color.DARK_GRAY ); } //Legger til brikker //svarte brikker Brikker brikker = new Brikker(); //legger til svarte tarn JPanel panel = (JPanel)chessBoard.getComponent(0); panel.add(brikker.tarn()); panel = (JPanel)chessBoard.getComponent(7); panel.add(brikker.tarn()); //legger til svarte hester panel = (JPanel)chessBoard.getComponent(1); panel.add(brikker.hest()); panel = (JPanel)chessBoard.getComponent(6); panel.add(brikker.hest()); //legger til svarte lopere panel = (JPanel)chessBoard.getComponent(2); panel.add(brikker.loper()); panel = (JPanel)chessBoard.getComponent(5); panel.add(brikker.loper()); //legger til svart- dronning og konge panel = (JPanel)chessBoard.getComponent(3); panel.add(brikker.dronning()); panel = (JPanel)chessBoard.getComponent(4); panel.add(brikker.konge()); //legger til svarte bonder for(int i=0; i<8;i++){ panel = (JPanel)chessBoard.getComponent(8+i); panel.add(brikker.bonde()); } //legger komponentene pÃ¥ brettet inn i en tabell int teller = 0; for(int i=0; i<8;i++){ for(int j=0; j<8;j++){ tabell[j] = (JPanel)chessBoard.getComponent(teller); teller++; } } //hvite brikker //legger til hvite tarn panel = (JPanel)chessBoard.getComponent(56); panel.add(brikker.tarn1()); panel = (JPanel)chessBoard.getComponent(63); panel.add(brikker.tarn1()); //legger til svarte hester panel = (JPanel)chessBoard.getComponent(57); panel.add(brikker.hest1()); panel = (JPanel)chessBoard.getComponent(62); panel.add(brikker.hest1()); //legger til svarte lopere panel = (JPanel)chessBoard.getComponent(58); panel.add(brikker.loper1()); panel = (JPanel)chessBoard.getComponent(61); panel.add(brikker.loper1()); //legger til svart- dronning og konge panel = (JPanel)chessBoard.getComponent(59); panel.add(brikker.dronning1()); panel = (JPanel)chessBoard.getComponent(60); panel.add(brikker.konge1()); //legger til svarte bonder for(int i=0; i<8;i++){ panel = (JPanel)chessBoard.getComponent(48+i); panel.add(brikker.bonde1()); } } public void mousePressed(MouseEvent e){ chessPiece = null; Component c = chessBoard.findComponentAt(e.getX(), e.getY()); if (c instanceof JPanel) return; Point parentLocation = c.getParent().getLocation(); x = parentLocation.x - e.getX(); y = parentLocation.y - e.getY(); chessPiece = (JLabel)c; chessPiece.setLocation(e.getX() + x, e.getY() + y); chessPiece.setSize(chessPiece.getWidth(), chessPiece.getHeight()); layeredPane.add(chessPiece, JLayeredPane.DRAG_LAYER); } //Move the chess piece around public void mouseDragged(MouseEvent me) { if (chessPiece == null) return; chessPiece.setLocation(me.getX() + x, me.getY() + y); } //Drop the chess piece back onto the chess board public void mouseReleased(MouseEvent e) { if(chessPiece == null) return; chessPiece.setVisible(false); Component c = chessBoard.findComponentAt(e.getX(), e.getY()); if (c instanceof JLabel){ Container parent = c.getParent(); parent.remove(0); parent.add( chessPiece ); } else { Container parent = (Container)c; parent.add( chessPiece ); } chessPiece.setVisible(true); } public void mouseClicked(MouseEvent e) { } public void mouseMoved(MouseEvent e) { } public void mouseEntered(MouseEvent e){ } public void mouseExited(MouseEvent e) { } } Lenke til kommentar
___ Skrevet 20. april 2009 Del Skrevet 20. april 2009 (endret) Slettet Endret 20. april 2009 av wernie Lenke til kommentar
___ Skrevet 20. april 2009 Del Skrevet 20. april 2009 (endret) Jeg foreslår at dere lærer dere hvordan man poster kode i forumet. Ikke svar på denne meldingen med ny kode, bare rediger den eksisterende meldingen (hint: bruk - taggen) Werner Endret 20. april 2009 av wernie Lenke til kommentar
pgdx Skrevet 20. april 2009 Del Skrevet 20. april 2009 Jeg anbefaler dere at dere trekker ut brettlogikk fra GUI-klassen. Ha en Board-klasse og en BoardView-klasse. Board sin klasse bør ha ansvar for plasseringene til alle brikkene på brettet. I tillegg kan dere være tjent med å lage en GameController som har en Board-instans og en BoardView-instans og som tar imot input fra brukeren via BoardView og som kontrollerer brettet via regler. Lenke til kommentar
LegendMVB Skrevet 20. april 2009 Forfatter Del Skrevet 20. april 2009 takk for alle tipsene:) vi skal prøve å trekke litt ut fra klassen;) Lenke til kommentar
aleh Skrevet 29. mai 2009 Del Skrevet 29. mai 2009 Skal dere implementere AI (KI) i dette sjakk spillet? Jeg lagde et sjakkspill en gang i tiden, var faktisk en del av min hovedoppgave. Hvor jeg brukte sjakkspillet til å illustrere bruken av forskjellige patterns. Det har dog ikke noe AI implementert. Dokumenterte og designet alt i UML. Kan sende dere noen av de dokumentene så dere ser den generelle oppbygningen. Tror dere kan finne mye informasjon om hvordan sjakkspill bygges opp generelt. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå