Results 1 to 3 of 3
  1. #1
    Doefat is offline Member
    Join Date
    Jan 2011
    Posts
    3
    Rep Power
    0

    Default Our Checkers Game

    Well Hello, I finally found the new thread button yoehoee, but back too buisness. We got a big problem with our checkers game we keep getting all kinds of error it doesnt matter what we do theyre keep coming back and it's very devistating, because wether we pass this assignment depends on this grade, but any way this is our source code (and excuse us, cause it's kinda in Dutch for the half because we're from the Netherlands, the other half is just English): /*

    */
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.util.ArrayList;

    public class Checkers2 extends JApplet {
    int rij; // Rij nummer, van 0 tot 7
    int vakje; // vakje nummer, van 0 tot 7
    int x,y; // Top-linker hoek van het vierkant


    JButton NieuwSpel;
    JButton Opgeven;

    JLabel message;

    public void init() {

    Container content = getContentPanel();

    content.setLayout(null);

    content.setBackground(java.awt.Color.pink)



    Board; board = new Board();
    content.add(board);
    content.add(NieuwSpel);
    content.add(Opgeven);
    content.add(message);


    board.setBounds(20,20,164,164);
    NieuwSpel.setBounds(210, 60, 120, 30);
    Opgeven.setBounds(210, 120, 120, 30);
    message.setBounds(0, 200, 350, 30);
    }

    // --------------------------------------------------

    static class Zet {

    int vanRij, vanVakje;
    int naarRij, naarVakje;
    Zet(int r1, int c1, int r2, int c2) {

    vanRij = r1;
    vanVakje = c1;
    naarRij = r2;
    naarVakje = c2;
    }
    boolean IsSprongetje() {

    return (vanRij - naarRij == 2 || vanRij - naarRij == -2);
    }
    }

    class Board extends JPanel implements ActionListener, MouseListener {

    DamspelInfo board;
    boolean gameIsBezig;
    int huidigeSpeler;
    int geselecteerdeRij, geselecteerdVakje;
    DamZet[] legaleZet;

    public Board() {

    setBackground(Color.red);
    addMouseListener(this);
    Opgeven = new JButton("Opgeven?");
    Opgeven.addActionListener(this);
    NieuwSpel = new JButton("Nieuw Spel");
    NieuwSpel.addActionListener(this);
    message = new JLabel("",JLabel.CENTER);
    message.setFont(new Font("Serif", Font.BOLD, 14));
    message.setForeground(Color.pink);
    board = new CheckersData();
    doNieuwSpel();
    }

    public void actionPerformed(ActionEvent evt) {

    Object src = evt.getSource();
    if (src == NieuwSpel)
    doNieuwSpel();
    else if (src == Opgeven)
    doOpgeven();
    }

    void doNieuwSpel() {

    if (gameIsBezig == true) {

    message.setText("Maak het spel af!");
    return;
    }
    board.setUpGame();
    huidigeSpeler = CheckersData.Player1;
    legaleZet = board.getlegaleZet(CheckersData.RED); /
    geselecteerdeRij = -1;
    message.setText("Player1: Jij bent aan zet!");
    gameIsBezig = true;
    NieuwSpel.setEnabled(false);
    Opgeven.setEnabled(true);
    repaint();
    }

    void doOpgeven() {

    if (gameIsBezig == false) {
    message.setText("Er is geen spel bezig!");
    return;
    }
    if (huidigeSpeler == CheckersData.Player1)
    gameOver("Player1 geeft op! Player2 wint!! Woeehhh");
    else
    gameOver("Player2 geeft op. Player1 wint!! Woeehhh");
    }

    void gameOver(String str) {

    message.setText(str);
    NieuwSpel.setEnabled(true);
    Opgeven.setEnabled(false);
    gameIsBezig = false;
    }

    void doClickSquare(int rij, int vakje) {

    for (int i = 0; i < legaleZet.length; i++)
    if (legaleZet[i].vanRij == rij && legaleZet[i].vanVakje == vakje {
    geselecteerdeRij = rij;
    geselecteerdVakje = vakje;
    if (huidigeSpeler == CheckersData.Player1)
    message.setText("Player1: Doe je zet.");
    else
    message.setText("Player2: Doe je zet.");
    repaint();
    return;
    }

    if (geselecteerdeRij < 0) {
    message.setText("Klik op het damschijfje dat je wil verzetten.");
    return;
    }

    for (int i = 0; i < legaleZet.length; i++)
    if (legaleZet[i].vanRij == geselecteerdeRij && legaleZet[i].vanVakje == geselecteerdVakje
    && legaleZet[i].naarRij == rij && legaleZet[i].naarVakje == vakje) {
    doMakeMove(legaleZet[i]);
    return;
    }

    message.setText("Klik het hokje dat je wil verzetten.");
    }

    void doMakeMove(DamZet move) {

    board.makeMove(move);

    if (move.IsSprongetje()) {
    legaleZet = board.getLegalJumpsFrom(huidigeSpeler,move.naarRij ,move.naarVakje);
    if (legaleZet != null) {
    if (huidigeSpeler == CheckersData.RED)
    message.setText("Player1: Je mag nog een zet.");
    else
    message.setText("Player2: Je mag nog een zet.");
    geselecteerdeRij = move.naarRij;
    geselecteerdVakje = move.naarVakje;
    repaint();
    return;
    }
    }

    if (huidigeSpeler == CheckersData.Player1) {
    huidigeSpeler = CheckersData.Player2;
    legaleZet = board.getlegaleZet(huidigeSpeler);
    if (legaleZet == null)
    gameOver("Player1 doet niks. Player1 wint!");
    else if (legaleZet[0].isJump())
    message.setText("Player2: Doe je zet. Je moet slaan!");
    else
    message.setText("Player2: Doe je zet.");
    }
    else {
    huidigeSpeler = CheckersData.Player1;
    legaleZet = board.getlegaleZet(huidigeSpeler);
    if (legaleZets == null)
    gameOver("Player1 doet niks. Player2 wint!");
    else if (legaleZets[0].IsSprongetje())
    message.setText("Player1: Doe je zet. Je moet slaan!");
    else
    message.setText("Player1: Doe je zet.");
    }
    geselecteerdeRij = -1;

    if (legaleZets != null) {
    boolean sameStartSquare = true;
    for (int i = 1; i < legaleZets.length; i++)
    if (legaleZets[i].vanRij != legaleZets[0].vanRij
    || legaleZets[i].vanVakje != legaleZets[0].vanVakje) {
    sameStartSquare = false;
    break;
    }
    if (sameStartSquare) {
    geselecteerdeRij = legaleZets[0].vanRij;
    geselecteerdVakje = legaleZets[0].vanVakje;
    }
    }
    repaint();
    }

    public void paintComponent(Graphics g) {

    g.setColor(Color.black);
    g.drawRect(0,0,getSize().width-1,getSize().height-1);
    g.drawRect(1,1,getSize().width-3,getSize().height-3);

    for (int rij = 0; rij < 8; rij++) {
    for (int vakje = 0; vakje < 8; vakje++) {
    if ( rij % 2 == vakje % 2 )
    g.setColor(Color.lightGray);
    else
    g.setColor(Color.gray);
    g.fillRect(2 + vakje*20, 2 + rij*20, 20, 20);
    switch (board.pieceAt(rij,vakje)) {
    case CheckersData.Player1:
    g.setColor(Color.red);
    g.fillOval(4 + vakje*20, 4 + rij*20, 16, 16);
    break;
    case CheckersData.Player2:
    g.setColor(Color.black);
    g.fillOval(4 + vakje*20, 4 + rij*20, 16, 16);
    break;
    case CheckersData.Player1_KING:
    g.setvakjeor(Color.red);
    g.fillOval(4 + vakje*20, 4 + rij*20, 16, 16);
    g.setColor(Color.white);
    g.drawString("K", 7 + vakje*20, 16 + rij*20);
    break;
    case CheckersData.Player2_KING:
    g.setColor(Color.black);
    g.fillOval(4 + vakje*20, 4 + rij*20, 16, 16);
    g.setColor(Color.white);
    g.drawString("K", 7 + vakje*20, 16 + rij*20);
    break;
    }
    }
    }

    if (gameIsBezig) {

    g.setColor(Color.cyan);
    for (int i = 0; i < legaleZets.length; i++) {
    g.drawRect(2 + legaleZets[i].vanVakje*20, 2 + legaleZets[i].vanRij*20, 19, 19);
    }

    if (geselecteerdeRij >= 0) {
    g.setColor(Color.white);
    g.drawRect(2 + geselecteerdVakje*20, 2 + geselecteerdeRij*20, 19, 19);
    g.drawRect(3 + geselecteerdVakje*20, 3 + geselecteerdeRij*20, 17, 17);
    g.setColor(Color.pink);
    for (int i = 0; i < legaleZets.length; i++) {
    if (legaleZets[i].vanVakje == geselecteerdVakje && legaleZets[i].vanRij == geselecteerdeRij)
    g.drawRect(2 + legaleZets[i].naarVakje*20, 2 + legaleZets[i].naarRij*20, 19, 19);
    }
    }
    }
    }

    public Dimension getPreferredSize() {

    return new Dimension(164, 164);
    }

    public Dimension getMinimumSize() {
    return new Dimension(164, 164);
    }

    public Dimension getMaximumSize() {
    return new Dimension(164, 164);
    }

    public void mousePressed(MouseEvent evt) {

    if (gameIsBezig == false)
    message.setText("Druk op NieuwSpel om opnieuw te starten.");
    else {
    int col = (evt.getX() - 2) / 20;
    int rij = (evt.getY() - 2) / 20;
    if (col >= 0 && vakje < 8 && rij >= 0 && rij < 8)
    doClickSquare(rij,vakje);
    }
    }

    public void mouseReleased(MouseEvent evt) { }
    public void mouseClicked(MouseEvent evt) { }
    public void mouseEntered(MouseEvent evt) { }
    public void mouseExited(MouseEvent evt) { }

    }


    static class CheckersData {
    public static final int
    Leeg = 0,
    Player1 = 1,
    Player1_KING = 2,
    Player2 = 3,
    Player2_KING = 4;
    private int[][] board;

    public CheckersData() {

    board = new int[8][8];
    setUpGame();
    }
    public void setUpGame() {

    for (int rij = 0; rij < 8; rij++) {
    for (int vakje = 0; vakje < 8; col++) {
    if ( rij % 2 == vakje % 2 ) {
    if (rij < 3)
    board[rij][vakje] = Player2;
    else if (rij > 4)
    board[rij][vakje] = Player1;
    else
    board[rij][vakje] = Leeg;
    }
    else {
    board[rij][vakje] = Leeg;
    }
    }
    }
    }

    public int pieceAt(int rij, int vakje) {

    return board[rij][vakje];
    }

    public void setPieceAt(int rij, int vakje, int piece) {

    board[rij][vakje] = piece;
    }

    public void makeMove(DamZet move) {

    makeMove(move.vanRij, move.vanVakje, move.naarRij, move.naarVakje);
    }

    public void makeMove(int vanRij, int vanVakje, int naarRij, int naarVakje) {

    board[naarRij][naarVakje] = board[vanRij][vanVakje];
    board[vanRij][vanVakje] = Leeg;
    if (vanRij - naarRij == 2 || vanRij - naarRij == -2) {

    int jumprij = (vanRij + naarRij) / 2;
    int jumpvakje = (vanVakje + naarVakje) / 2;
    board[jumprij][jumpvakje] = Leeg;
    }
    if (naarRij == 0 && board[naarRij][naarVakje] == Player1)
    board[naarRij][naarVakje] = Player1_KING;
    if (naarRij == 7 && board[naarRij][naarVakje] == Player2)
    board[naarRij][naarVakje] = PLayer2_KING;
    }

    public DamZet[] getlegaleZets(int player) {

    if (player != PLayer1 && player != PLayer2)
    return null;
    int playerKing;
    if (player == Player1)
    playerKing = Player1_KING;
    else
    playerKing = Player2_KING;
    ArrayList moves = new ArrayList();

    for (int rij = 0; rij < 8; rij++) {
    for (int col = 0; vakje < 8; vakje++) {
    if (board[rij][vakje] == player || board[rij][vakje] == playerKing) {
    if (canJump(player, rij, vakje, rij+1, vakje+1, rij+2, vakje+2))
    moves.add(new DamZet(rij, vakje, rij+2, vakje+2));
    if (canJump(player, rij, vakje, rij-1, vakje+1, rij-2, vakje+2))
    moves.add(new DamZet(rij, vakje, rij-2, vakje+2));
    if (canJump(player, rij, vakje, rij+1, vakje-1, vakje+2, vakje-2))
    moves.add(new DamZet(rij, vakje, rij+2, vakje-2));
    if (canJump(player, rij, vakje, rij-1, vakje-1, rij-2, vakje-2))
    moves.add(new DamZet(rij, vakje, rij-2, vakje-2));
    }
    }
    }

    if (moves.size() == 0) {
    for (int rij = 0; rij < 8; rij++) {
    for (int vakje = 0; vakje < 8; vakje++) {
    if (board[rij][vakje] == player || board[rij][vakje] == playerKing) {
    if (canMove(player,rij,vakje,rij+1,vakje+1))
    moves.add(new DamZet(rij,vakje,rij+1,vakje+1));
    if (canMove(player,rij,vakje,rij-1,vakje+1))
    moves.add(new DamZet(rij,vakje,rij-1,vakje+1));
    if (canMove(player,rij,vakje,rij+1,vakje-1))
    moves.add(new DamZet(rij,vakje,rij+1,vakje-1));
    if (canMove(player,rij,vakje,rij-1,vakje-1))
    moves.add(new DamZet(rij,vakje,rij-1,vakje-1));
    }
    }
    }
    }

    if (moves.size() == 0)
    return null;
    else {
    DamZet[] moveArray = new DamZet[moves.size()];
    for (int i = 0; i < moves.size(); i++)
    moveArray[i] = (DamZet)moves.get(i);
    return moveArray;
    }
    }

    public DamZet[] getLegalJumpsFrom(int player, int rij, int vakje) {

    if (player != Player1 && player != Player2)
    return null;
    int playerKing;
    if (player == Player1)
    playerKing = Player1_KING;
    else
    playerKing = Player2_KING;
    ArrayList moves = new ArrayList();
    if (board[rij][vakje] == player || board[rij][vakje] == playerKing) {
    if (canJump(player, rij, vakje, rij+1, vakje+1, rij+2, vakje+2))
    moves.add(new DamZet(rij, vakje, rij+2, vakje+2));
    if (canJump(player, rij, vakje, rij-1, vakje+1, rij-2, vakje+2))
    moves.add(new DamZet(rij, vakje, rij-2, vakje+2));
    if (canJump(player, rij, vakje, rij+1, vakje-1, rij+2, vakje-2))
    moves.add(new DamZet(rij, vakje, rij+2, vakje-2));
    if (canJump(player, rij, vakje, rij-1, vakje-1, rij-2, vakje-2))
    moves.add(new DamZet(rij, vakje, rij-2, vakje-2));
    }
    if (moves.size() == 0)
    return null;
    else {
    DamZet[] moveArray = new DamZet[moves.size()];
    for (int i = 0; i < moves.size(); i++)
    moveArray[i] = (DamZet)moves.get(i);
    return moveArray;
    }
    }

    private boolean canJump(int player, int r1, int c1, int r2, int c2, int r3, int c3) {

    if (r3 < 0 || r3 >= 8 || c3 < 0 || c3 >= 8)
    return false; //
    if (board[r3][c3] != Leeg)
    return false;
    if (player == Player1) {
    if (board[r1][c1] == Player1 && r3 > r1)
    return false;
    if (board[r2][c2] != Player2 && board[r2][c2] != Player2_KING)
    return false;
    return true;
    }
    else {
    if (board[r1][c1] == Player2 && r3 < r1)
    return false;
    if (board[r2][c2] != Player1 && board[r2][c2] != Player1_KING)
    return false;
    return true;
    }
    }

    private boolean canMove(int player, int r1, int c1, int r2, int c2) {

    if (r2 < 0 || r2 >= 8 || c2 < 0 || c2 >= 8)
    return false;
    if (board[r2][c2] != Leeg)
    return false;
    if (player == Player1) {
    if (board[r1][c1] == Player1 && r2 > r1)
    return false;
    return true;
    }
    else {
    if (board[r1][c1] == Player2 && r2 < r1)
    return false;
    return true; //
    }
    }

    }

    }





    CAN ANybooodyyy pleasseee help uss??


    (And I was suppose to highlight my passages but i dont know how)

  2. #2
    Doefat is offline Member
    Join Date
    Jan 2011
    Posts
    3
    Rep Power
    0

    Default

    anybodyyy this is what we get


    c:\VisualCafeSE\java2\bin\javac.exe -g -d "C:\Documents and Settings\Leerling1\Bureaublad\\" -classpath "C:\Documents and
    Settings\Leerling1\Bureaublad\;C:\VisualCafeSE\jav a2\lib\rt.jar;C:\VisualCafeSE\java2\lib\dt.jar;C:\ VisualCafeSE\java2\lib\i18n.jar;C:\VisualCafeSE\ja va2\lib\jaws.jar;C:\VisualCafeSE\java2\lib\plugpro v
    .jar;C:\VisualCafeSE\JAVA\LIB\;C:\VisualCafeSE\JAV A\LIB\SYMCLASS.ZIP;C:\VisualCafeSE\JAVA\LIB\CLASSE S.ZIP;C:\VisualCafeSE\swing-1.1\SWINGALL.JAR;C:\VisualCafeSE\bin\components\sf c.jar;C:\VisualCafeSE\b
    in\components\symbeans.jar;C:\VisualCafeSE\java\li b\collections.zip;C:\VisualCafeSE\java\lib\icebrow serbean.jar;C:\VisualCafeSE\java\lib\jspengine.jar ;C:\VisualCafeSE\java\lib\xml.jar;C:\VisualCafeSE\ j
    ava\lib\symtools.jar;C:\VisualCafeSE\bin\component s\templates.jar;C:\VisualCafeSE\bin\components\fle xlm.zip" "C:\VisualCafeSE\Projects\Damspel.java"
    WebGain Java! JustInTime Compiler Version 4.00.007(x) for JDK 1.2
    Copyright (C) 2000 WebGain, Inc.
    Error: C:\VisualCafeSE\Projects\Damspel.java(108): Method getlegaleZet(int) not found in nested class Damspel. CheckersData.
    legaleZet = board.getlegaleZet(CheckersData.Player1);
    ^
    Error: C:\VisualCafeSE\Projects\Damspel.java(201): Method getlegaleZet(int) not found in nested class Damspel. CheckersData.
    legaleZet = board.getlegaleZet(huidigeSpeler);
    ^
    Error: C:\VisualCafeSE\Projects\Damspel.java(211): Method getlegaleZet(int) not found in nested class Damspel. CheckersData.
    legaleZet = board.getlegaleZet(huidigeSpeler);
    ^
    3 errors
    Build Failed

  3. #3
    Doefat is offline Member
    Join Date
    Jan 2011
    Posts
    3
    Rep Power
    0

    Default

    and this is our new code...
    /*

    */

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.util.ArrayList;


    public class Damspel extends JApplet {

    JButton NieuwSpel;
    JButton Opgeven;

    JLabel message;

    public void init() {

    Container content = getContentPane();

    content.setLayout(null);

    content.setBackground(java.awt.Color.pink);



    Board board = new Board();
    content.add(board);
    content.add(NieuwSpel);
    content.add(Opgeven);
    content.add(message);



    board.setBounds(20,20,164,164);
    NieuwSpel.setBounds(210, 60, 120, 30);
    Opgeven.setBounds(210, 120, 120, 30);
    message.setBounds(0, 200, 350, 30);
    }


    static class DamZet {

    int vanRij, vanVakje;
    int naarRij, naarVakje;
    DamZet(int r1, int c1, int r2, int c2) {

    vanRij = r1;
    vanVakje = c1;
    naarRij = r2;
    naarVakje = c2;
    }
    boolean IsSprongetje() {

    return (vanRij - naarRij == 2 || vanRij - naarRij == -2);
    }
    }



    class Board extends JPanel implements ActionListener, MouseListener {


    CheckersData board;
    boolean gameIsBezig;

    int huidigeSpeler;
    int geselecteerdeRij, geselecteerdVakje;
    DamZet[] legaleZet;


    public Board() {

    setBackground(Color.red);
    addMouseListener(this);
    Opgeven = new JButton("Opgeven?");
    Opgeven.addActionListener(this);
    NieuwSpel = new JButton("Nieuw Spel");
    NieuwSpel.addActionListener(this);
    message = new JLabel("",JLabel.CENTER);
    message.setFont(new Font("Serif", Font.BOLD, 14));
    message.setForeground(Color.pink);
    board = new CheckersData();
    doNieuwSpel();
    }


    public void actionPerformed(ActionEvent evt) {

    Object src = evt.getSource();
    if (src == NieuwSpel)
    doNieuwSpel();
    else if (src == Opgeven)
    doOpgeven();
    }


    void doNieuwSpel() {

    if (gameIsBezig == true) {

    message.setText("Maak het spel af!");
    return;
    }
    board.setUpGame();
    huidigeSpeler = CheckersData.Player1;
    legaleZet = board.getlegaleZet(CheckersData.Player1);
    geselecteerdeRij = -1;
    message.setText("Player1: Jij bent aan zet!");
    gameIsBezig = true;
    NieuwSpel.setEnabled(false);
    Opgeven.setEnabled(true);
    repaint();
    }


    void doOpgeven() {

    if (gameIsBezig == false) {
    message.setText("Er is geen spel bezig!");
    return;
    }
    if (huidigeSpeler == CheckersData.Player1)
    gameOver("Player1 geeft op! Player2 wint!! Woeehhh");
    else
    gameOver("Player2 geeft op. Player1 wint!! Woeehhh");
    }


    void gameOver(String str) {

    message.setText(str);
    NieuwSpel.setEnabled(true);
    Opgeven.setEnabled(false);
    gameIsBezig = false;
    }


    void doClickSquare(int rij, int vakje) {


    for (int i = 0; i < legaleZet.length; i++)
    if (legaleZet[i].vanRij == rij && legaleZet[i].vanVakje == vakje)
    {
    geselecteerdeRij = rij;
    geselecteerdVakje = vakje;
    if (huidigeSpeler == CheckersData.Player1)
    message.setText("Player1: Doe je zet.");
    else
    message.setText("Player2: Doe je zet.");
    repaint();
    return;
    }



    if (geselecteerdeRij < 0) {
    message.setText("Klik op het damschijfje dat je wil verzetten.");
    return;
    }


    for (int i = 0; i < legaleZet.length; i++)
    if (legaleZet[i].vanRij == geselecteerdeRij && legaleZet[i].vanVakje == geselecteerdVakje
    && legaleZet[i].naarRij == rij && legaleZet[i].naarVakje == vakje) {
    doMakeMove(legaleZet[i]);
    return;
    }



    message.setText("Klik het hokje dat je wil verzetten.");

    }


    void doMakeMove(DamZet move) {


    board.makeMove(move);


    if (move.IsSprongetje()) {
    legaleZet = board.getLegalJumpsFrom(huidigeSpeler,move.naarRij ,move.naarVakje);
    if (legaleZet != null) {
    if (huidigeSpeler == CheckersData.Player1)
    message.setText("Player1: Je mag nog een zet.");
    else
    message.setText("Player2: Je mag nog een zet.");
    geselecteerdeRij = move.naarRij;
    geselecteerdVakje = move.naarVakje;
    repaint();
    return;
    }
    }


    if (huidigeSpeler == CheckersData.Player1) {
    huidigeSpeler = CheckersData.Player2;
    legaleZet = board.getlegaleZet(huidigeSpeler);
    if (legaleZet == null)
    gameOver("Player1 doet niks. Player1 wint!");
    else if (legaleZet[0].IsSprongetje())
    message.setText("Player2: Doe je zet. Je moet slaan!");
    else
    message.setText("Player2: Doe je zet.");
    }
    else {
    huidigeSpeler = CheckersData.Player1;
    legaleZet = board.getlegaleZet(huidigeSpeler);
    if (legaleZet == null)
    gameOver("Player1 doet niks. Player2 wint!");
    else if (legaleZet[0].IsSprongetje())
    message.setText("Player1: Doe je zet. Je moet slaan!");
    else
    message.setText("Player1: Doe je zet.");
    }

    geselecteerdeRij = -1;


    if (legaleZet != null) {
    boolean sameStartSquare = true;
    for (int i = 1; i < legaleZet.length; i++)
    if (legaleZet[i].vanRij != legaleZet[0].vanRij
    || legaleZet[i].vanVakje != legaleZet[0].vanVakje) {
    sameStartSquare = false;
    break;
    }
    if (sameStartSquare) {
    geselecteerdeRij = legaleZet[0].vanRij;
    geselecteerdVakje = legaleZet[0].vanVakje;
    }
    }

    repaint();

    }


    public void paintComponent(Graphics g) {

    g.setColor(Color.black);
    g.drawRect(0,0,getSize().width-1,getSize().height-1);
    g.drawRect(1,1,getSize().width-3,getSize().height-3);



    for (int rij = 0; rij < 8; rij++) {
    for (int vakje = 0; vakje < 8; vakje++) {
    if ( rij % 2 == vakje % 2 )
    g.setColor(Color.lightGray);
    else
    g.setColor(Color.gray);
    g.fillRect(2 + vakje*20, 2 + rij*20, 20, 20);
    switch (board.pieceAt(rij,vakje)) {
    case CheckersData.Player1:
    g.setColor(Color.red);
    g.fillOval(4 + vakje*20, 4 + rij*20, 16, 16);
    break;
    case CheckersData.Player2:
    g.setColor(Color.black);
    g.fillOval(4 + vakje*20, 4 + rij*20, 16, 16);
    break;
    case CheckersData.Player1_KING:
    g.setColor(Color.red);
    g.fillOval(4 + vakje*20, 4 + rij*20, 16, 16);
    g.setColor(Color.white);
    g.drawString("K", 7 + vakje*20, 16 + rij*20);
    break;
    case CheckersData.Player2_KING:
    g.setColor(Color.black);
    g.fillOval(4 + vakje*20, 4 + rij*20, 16, 16);
    g.setColor(Color.white);
    g.drawString("K", 7 + vakje*20, 16 + rij*20);
    break;
    }
    }
    }



    if (gameIsBezig) {

    g.setColor(Color.cyan);
    for (int i = 0; i < legaleZet.length; i++) {
    g.drawRect(2 + legaleZet[i].vanVakje*20, 2 + legaleZet[i].vanRij*20, 19, 19);
    }

    if (geselecteerdeRij >= 0) {
    g.setColor(Color.white);
    g.drawRect(2 + geselecteerdVakje*20, 2 + geselecteerdeRij*20, 19, 19);
    g.drawRect(3 + geselecteerdVakje*20, 3 + geselecteerdeRij*20, 17, 17);
    g.setColor(Color.pink);
    for (int i = 0; i < legaleZet.length; i++) {
    if (legaleZet[i].vanVakje == geselecteerdVakje && legaleZet[i].vanRij == geselecteerdeRij)
    g.drawRect(2 + legaleZet[i].naarVakje*20, 2 + legaleZet[i].naarRij*20, 19, 19);
    }
    }
    }
    }


    public Dimension getPreferredSize() {

    return new Dimension(164, 164);
    }


    public Dimension getMinimumSize() {
    return new Dimension(164, 164);
    }


    public Dimension getMaximumSize() {
    return new Dimension(164, 164);
    }


    public void mousePressed(MouseEvent evt) {

    if (gameIsBezig == false)
    message.setText("Druk op NieuwSpel om opnieuw te starten.");
    else {
    int vakje = (evt.getX() - 2) / 20;
    int rij = (evt.getY() - 2) / 20;
    if (vakje >= 0 && vakje < 8 && rij >= 0 && rij < 8)
    doClickSquare(rij,vakje);
    }
    }


    public void mouseReleased(MouseEvent evt) { }
    public void mouseClicked(MouseEvent evt) { }
    public void mouseEntered(MouseEvent evt) { }
    public void mouseExited(MouseEvent evt) { }


    }




    static class CheckersData {

    public static final int
    Leeg = 0,
    Player1 = 1,
    Player1_KING = 2,
    Player2 = 3,
    Player2_KING = 4;

    private int[][] board;


    public CheckersData() {

    board = new int[8][8];
    setUpGame();
    }

    public void setUpGame() {

    for (int rij = 0; rij < 8; rij++) {
    for (int vakje = 0; vakje < 8; vakje++) {
    if ( rij % 2 == vakje % 2 ) {
    if (rij < 3)
    board[rij][vakje] = Player2;
    else if (rij > 4)
    board[rij][vakje] = Player1;
    else
    board[rij][vakje] = Leeg;
    }
    else {
    board[rij][vakje] = Leeg;
    }
    }
    }
    }


    public int pieceAt(int rij, int vakje) {

    return board[rij][vakje];
    }


    public void setPieceAt(int rij, int vakje, int piece) {

    board[rij][vakje] = piece;
    }


    public void makeMove(DamZet move) {

    makeMove(move.vanRij, move.vanVakje, move.naarRij, move.naarVakje);
    }


    public void makeMove(int vanRij, int vanVakje, int naarRij, int naarVakje) {

    board[naarRij][naarVakje] = board[vanRij][vanVakje];
    board[vanRij][vanVakje] = Leeg;
    if (vanRij - naarRij == 2 || vanRij - naarRij == -2) {

    int jumprij = (vanRij + naarRij) / 2;
    int jumpvakje = (vanVakje + naarVakje) / 2;
    board[jumprij][jumpvakje] = Leeg;
    }
    if (naarRij == 0 && board[naarRij][naarVakje] == Player1)
    board[naarRij][naarVakje] = Player1_KING;
    if (naarRij == 7 && board[naarRij][naarVakje] == Player2)
    board[naarRij][naarVakje] = Player2_KING;
    }


    public DamZet[] getlegaleZets(int player) {

    if (player != Player1 && player != Player2)
    return null;

    int playerKing;
    if (player == Player1)
    playerKing = Player1_KING;
    else
    playerKing = Player2_KING;

    ArrayList moves = new ArrayList();


    for (int rij = 0; rij < 8; rij++) {
    for (int vakje = 0; vakje < 8; vakje++) {
    if (board[rij][vakje] == player || board[rij][vakje] == playerKing) {
    if (canJump(player, rij, vakje, rij+1, vakje+1, rij+2, vakje+2))
    moves.add(new DamZet(rij, vakje, rij+2, vakje+2));
    if (canJump(player, rij, vakje, rij-1, vakje+1, rij-2, vakje+2))
    moves.add(new DamZet(rij, vakje, rij-2, vakje+2));
    if (canJump(player, rij, vakje, rij+1, vakje-1, vakje+2, vakje-2))
    moves.add(new DamZet(rij, vakje, rij+2, vakje-2));
    if (canJump(player, rij, vakje, rij-1, vakje-1, rij-2, vakje-2))
    moves.add(new DamZet(rij, vakje, rij-2, vakje-2));
    }
    }
    }


    if (moves.size() == 0) {
    for (int rij = 0; rij < 8; rij++) {
    for (int vakje = 0; vakje < 8; vakje++) {
    if (board[rij][vakje] == player || board[rij][vakje] == playerKing) {
    if (canMove(player,rij,vakje,rij+1,vakje+1))
    moves.add(new DamZet(rij,vakje,rij+1,vakje+1));
    if (canMove(player,rij,vakje,rij-1,vakje+1))
    moves.add(new DamZet(rij,vakje,rij-1,vakje+1));
    if (canMove(player,rij,vakje,rij+1,vakje-1))
    moves.add(new DamZet(rij,vakje,rij+1,vakje-1));
    if (canMove(player,rij,vakje,rij-1,vakje-1))
    moves.add(new DamZet(rij,vakje,rij-1,vakje-1));
    }
    }
    }
    }



    if (moves.size() == 0)
    return null;
    else {
    DamZet[] moveArray = new DamZet[moves.size()];
    for (int i = 0; i < moves.size(); i++)
    moveArray[i] = (DamZet)moves.get(i);
    return moveArray;
    }

    }


    public DamZet[] getLegalJumpsFrom(int player, int rij, int vakje) {

    if (player != Player1 && player != Player2)
    return null;
    int playerKing;
    if (player == Player1)
    playerKing = Player1_KING;
    else
    playerKing = Player2_KING;
    ArrayList moves = new ArrayList();
    if (board[rij][vakje] == player || board[rij][vakje] == playerKing) {
    if (canJump(player, rij, vakje, rij+1, vakje+1, rij+2, vakje+2))
    moves.add(new DamZet(rij, vakje, rij+2, vakje+2));
    if (canJump(player, rij, vakje, rij-1, vakje+1, rij-2, vakje+2))
    moves.add(new DamZet(rij, vakje, rij-2, vakje+2));
    if (canJump(player, rij, vakje, rij+1, vakje-1, rij+2, vakje-2))
    moves.add(new DamZet(rij, vakje, rij+2, vakje-2));
    if (canJump(player, rij, vakje, rij-1, vakje-1, rij-2, vakje-2))
    moves.add(new DamZet(rij, vakje, rij-2, vakje-2));
    }
    if (moves.size() == 0)
    return null;
    else {
    DamZet[] moveArray = new DamZet[moves.size()];
    for (int i = 0; i < moves.size(); i++)
    moveArray[i] = (DamZet)moves.get(i);
    return moveArray;
    }
    }


    private boolean canJump(int player, int r1, int c1, int r2, int c2, int r3, int c3) {


    if (r3 < 0 || r3 >= 8 || c3 < 0 || c3 >= 8)
    return false; //

    if (board[r3][c3] != Leeg)
    return false;

    if (player == Player1) {
    if (board[r1][c1] == Player1 && r3 > r1)
    return false;
    if (board[r2][c2] != Player2 && board[r2][c2] != Player2_KING)
    return false;
    return true;
    }
    else {
    if (board[r1][c1] == Player2 && r3 < r1)
    return false;
    if (board[r2][c2] != Player1 && board[r2][c2] != Player1_KING)
    return false;
    return true;
    }

    }


    private boolean canMove(int player, int r1, int c1, int r2, int c2) {


    if (r2 < 0 || r2 >= 8 || c2 < 0 || c2 >= 8)
    return false;

    if (board[r2][c2] != Leeg)
    return false;

    if (player == Player1) {
    if (board[r1][c1] == Player1 && r2 > r1)
    return false;
    return true;
    }
    else {
    if (board[r1][c1] == Player2 && r2 < r1)
    return false;
    return true; //
    }

    }


    }


    }

Similar Threads

  1. Checkers Game problems
    By dyelax in forum New To Java
    Replies: 7
    Last Post: 12-29-2010, 02:57 AM
  2. Replies: 2
    Last Post: 08-05-2010, 04:49 AM
  3. Othello/Reversi flip checkers
    By chielt in forum Java Applets
    Replies: 10
    Last Post: 01-02-2010, 11:25 PM
  4. need advice for checkers game
    By javanoob73 in forum New To Java
    Replies: 13
    Last Post: 12-02-2009, 01:10 AM
  5. Checkers
    By evan42781 in forum New To Java
    Replies: 8
    Last Post: 05-08-2009, 04:07 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •