Avatar billede snuseren.dk Nybegynder
03. april 2003 - 17:11 Der er 8 kommentarer og
1 løsning

Hvad er der galt her ??

Hej, jeg har skrevet dette kryds og bolle spil ind, fra en bog. Problemet er bare, at der ikke kommer nogen krydser og boller når man trykker i en af firkanterne.. :-(
Hvad kan der være galt ??
Dette er koden:

/*
* Applet_6.java
*
* Created on 3. april 2003, 14:18
*/

/**
*
* @author  Anders
*/

import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class Applet_6 extends Applet
{
    private int [][]tegn;
    private int slut = 0;
    private String spiller = new String("Juhuu !!! Du vandt :-)");
    private String maskine = new String("Computeren vandt over dig :-(");
    private Dimension []pos;
    private int count = 0;
    private boolean spillerStarter;
   
    public Applet_6()
    {
        tegn = new int[3][];
        tegn[0] = new int[3];
        tegn[1] = new int[3];
        tegn[2] = new int[3];
        for (int i = 0; i < 3; ++i)
            for (int j = 0; j < 3; ++j) tegn[i][j] = 0;
        pos = new Dimension[9];
        for (int i = 0; i < 9; ++i) pos[i] = new Dimension(0,0);
    }
   
    public void init()
    {
        spillerStarter = ((int) (Math.random() * 10)) % 2 == 0 ? true : false;
    }
   
    private boolean CheckRaekke(int i, int t, Dimension pos)
    {
        int n = -1;
        if (tegn[i][0] == 0 && tegn[i][1] == t && tegn[i][2] == t) n = 0;
        else if (tegn[i][0] == t && tegn[i][1] == 0 && tegn[i][2] == t) n = 1;
        else if (tegn[i][0] == t && tegn[i][1] == t && tegn[i][2] == 0) n = 2;
        if (n >= 0)
        {
            pos.height = i;
            pos.width = n;
            return true;
        }
        return false;
    }
   
    private boolean CheckDiagonal1 (int t, Dimension pos)
    {
        int n = 1;
        if (tegn[0][0] == 0 && tegn[1][1] == t && tegn[2][2] == t) n = 0;
        else if (tegn[0][0] == t && tegn[1][1] == 0 && tegn[2][2] == t) n = 1;
        else if (tegn[0][0] == t && tegn[1][1] == t && tegn[2][2] == 0) n = 2;
        if (n >= 0)
        {
            pos.height = n;
            pos.width = n;
            return true;
        }
        return false;
    }
   
    private boolean CheckDiagonal2(int t, Dimension pos)
    {
        int n = -1;
        if (tegn[0][2] == 0 && tegn[1][1] == t && tegn[2][0] == t) n = 2;
        else if (tegn[0][2] == t && tegn[1][1] == 0 && tegn[2][0] == t) n = 1;
        else if (tegn[0][2] == t && tegn[1][1] == t && tegn[2][0] == 0) n = 0;
        if (n >= 0)
        {
            pos.height = 2 - n;
            pos.width = n;
            return true;
        }
        return false;
    }
   
    private boolean CheckKolonne(int i, int t, Dimension pos)
    {
        int n = -1;
        if (tegn[0][i] == 0 && tegn[1][i] == t && tegn[2][i] == t) n = 0;
        else if (tegn[0][i] == t && tegn[1][i] == 0 && tegn[2][i] == t) n = 1;
        else if (tegn[0][i] == t && tegn[1][i] == t && tegn[2][i] == 0) n = 2;
        if (n >= 0)
        {
            pos.height = n;
            pos.width = i;
            return true;
        }
        return false;
    }
   
    private boolean CheckComputer(Dimension pos)
    {
        if (!CheckRaekke(0, 2, pos))
            if (!CheckRaekke(1, 2, pos))
                if (!CheckRaekke(2, 2, pos))
                    if (!CheckKolonne(0, 2, pos))
                        if (!CheckKolonne(1, 2, pos))
                            if (!CheckKolonne(2, 2, pos))
                                if (!CheckDiagonal1(2, pos)) return CheckDiagonal2(2, pos);
        return true;
    }
   
    private boolean CheckSpiller(Dimension pos)
    {
        if (!CheckRaekke(0, 1, pos))
            if (!CheckRaekke(1, 1, pos))
                if (!CheckRaekke(2, 1, pos))
                    if (!CheckKolonne(0, 1, pos))
                        if (!CheckKolonne(1, 1, pos))
                            if (!CheckKolonne(2, 1, pos))
                                if (!CheckDiagonal1(1, pos)) return CheckDiagonal2(1, pos);
        return true;
    }
   
    private boolean ComputerCheck(int a, int b)
    {
        int i;
        for (i = 0; i < 3; ++i) if (tegn[a][i] == 1) break;
        if (i == 3) return true;
        for (i = 0; i < 3; ++i) if (tegn[i][b] == 1) break;
        if (i == 3) return true;
        if (a == 1 && b == 1)
        {
            if (tegn[0][0] != 1 && tegn[2][2] != 1) return true;
            if (tegn[0][2] != 1 && tegn[2][0] != 1) return true;
        }
        return false;
    }
   
    private boolean SpillerVundet()
    {
        if (tegn[0][0] == 1 && tegn[0][1] == 1 && tegn[0][2] == 1) return true;
        if (tegn[1][0] == 1 && tegn[1][1] == 1 && tegn[1][2] == 1) return true;
        if (tegn[2][0] == 1 && tegn[2][1] == 1 && tegn[2][2] == 1) return true;
        if (tegn[0][0] == 1 && tegn[1][0] == 1 && tegn[2][0] == 1) return true;
        if (tegn[0][1] == 1 && tegn[1][1] == 1 && tegn[2][1] == 1) return true;
        if (tegn[0][2] == 1 && tegn[1][2] == 1 && tegn[2][2] == 1) return true;
        if (tegn[0][0] == 1 && tegn[1][1] == 1 && tegn[2][2] == 1) return true;
        if (tegn[2][0] == 1 && tegn[1][1] == 1 && tegn[0][2] == 1) return true;
        return false;
    }
   
    private boolean ComputerVundet()
    {
        if (tegn[0][0] == 1 && tegn[0][1] == 1 && tegn[0][2] == 1) return true;
        if (tegn[1][0] == 1 && tegn[1][1] == 1 && tegn[1][2] == 1) return true;
        if (tegn[2][0] == 1 && tegn[2][1] == 1 && tegn[2][2] == 1) return true;
        if (tegn[0][0] == 1 && tegn[1][0] == 1 && tegn[2][0] == 1) return true;
        if (tegn[0][1] == 1 && tegn[1][1] == 1 && tegn[2][1] == 1) return true;
        if (tegn[0][2] == 1 && tegn[1][2] == 1 && tegn[2][2] == 1) return true;
        if (tegn[0][0] == 1 && tegn[1][1] == 1 && tegn[2][2] == 1) return true;
        if (tegn[2][0] == 1 && tegn[1][1] == 1 && tegn[0][2] == 1) return true;
        return false;
    }
   
    private void SpilSlut()
    {
        if (SpillerVundet())
            slut = 1;
        else if (ComputerVundet())
            slut = 2;
    }
   
    private boolean KrydsOk(int i, int j)
    {
        if (tegn[i][j] != 0) return false;
        if (slut != 0) return false;
        return true;
    }
   
    private void TegnBolle()
    {
        count = 0;
        if (CheckComputer(pos[count]))
            ++count;
        else if (CheckSpiller(pos[count]))
            ++count;
        else
            for (int i = 0; i < 3; ++i)
                for (int j = 0; j < 3; ++j)
                    if (tegn[i][j] == 0 && ComputerCheck(i, j))
                    {
                        pos[count].height = i;
                        pos[count].width = j;
                        ++count;
                    }
        int n = 0;
        if (count > 0) n = ((int) (Math.random() * 100)) % count;
        tegn[pos[n].height][pos[n].width] = 2;
    }
   
    private void TegnKryds(int i, int j)
    {
        if (KrydsOk(i, j))
        {
            tegn[i][j] = 1;
            SpilSlut();
            if (slut == 0)
            {
                TegnBolle();
                SpilSlut();
            }
            repaint();
        }
    }
   
    public boolean mouseDown(Event evt, int x, int y)
    {
        if (evt.clickCount > 1)
        {
            for (int i = 0; i < 3; ++i)
                for (int j = 0; j < 3; ++j) tegn[i][j] = 0;
            slut = 0;
            spillerStarter = spillerStarter ? false : true;
            if (!spillerStarter) TegnBolle();
            repaint();
        }
        if (x > 20 && x < 170 && y > 20 && y > 170)
        {
            int i = 0, j = 0;
            for (x -= 20; x > 50; x -= 50) ++j;
            for (y -= 20; y > 50; y -= 50) ++i;
            TegnKryds(i, j);
        }
        return true;
    }
   
    public void paint(Graphics g)
    {
        for (int i = 0; i < 3; ++i)
            for (int j = 0; j < 3; ++j)
            {
                g.drawRect(20 + j * 50, 20 + i * 50, 50, 50);
                if (tegn[i][j] == 1)
                {
                    g.drawLine(20 + j * 50 + 5, 20 + i * 50 + 5, 20 + (j + 1) * 50 - 5, 20 + (i + 1) * 50 - 5);
                    g.drawLine(20 + j * 50 + 5, 20 + (i + 1) * 50 - 5, 20 + (j + 1) * 50 - 5, 20 + i * 50 + 5);
                } else if (tegn[i][j] == 2)
                    g.drawOval(20 + j * 50 + 5, 20 + i * 50 + 5, 40, 40);
            }
        if (slut == 1)
            g.drawString(spiller, 20, 192);
        else if (slut == 2)
            g.drawString(maskine, 20, 190);
    }
       
   

   
}


MVH
Anders
Avatar billede =maddog= Nybegynder
03. april 2003 - 17:25 #1
Du har ingen lytter så vidt jeg kan se. Du skal have en lytter for at kunne tage input...
denne metode
    public boolean mouseDown(Event evt, int x, int y)
er normalt forbundet med en mus-lytter i formen
    public void mouseDown(MouseEvent evt)
og denne metode bliver udført når brugeren trykker musknappen ned på komponenten.
Avatar billede snuseren.dk Nybegynder
03. april 2003 - 17:28 #2
ok, tak men vil du ikke skrive det ind i eksemplet ovenover ?? Jeg er total newbie i java.
Avatar billede disky Nybegynder
03. april 2003 - 17:28 #3
Nu sker der noget, det er dog ikke korrekt endnu:
/*
* Applet_6.java
*
* Created on 3. april 2003, 14:18
*/

/**
*
* @author  Anders
*/

import java.applet.Applet;
import java.awt.*;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;

public class Applet_6 extends Applet
{
    private int[][] tegn;
    private int slut = 0;
    private String spiller = new String("Juhuu !!! Du vandt :-)");
    private String maskine = new String("Computeren vandt over dig :-(");
    private Dimension[] pos;
    private int count = 0;
    private boolean spillerStarter;

    public Applet_6()
    {
        tegn = new int[3][];
        tegn[0] = new int[3];
        tegn[1] = new int[3];
        tegn[2] = new int[3];
        for (int i = 0; i < 3; ++i)
            for (int j = 0; j < 3; ++j) tegn[i][j] = 0;
        pos = new Dimension[9];
        for (int i = 0; i < 9; ++i) pos[i] = new Dimension(0, 0);
        this.addMouseListener(new MyActionListener());
    }

    public void init()
    {
        spillerStarter = ((int) (Math.random() * 10)) % 2 == 0 ? true : false;
    }

    private boolean CheckRaekke(int i, int t, Dimension pos)
    {
        int n = -1;
        if (tegn[i][0] == 0 && tegn[i][1] == t && tegn[i][2] == t)
            n = 0;
        else if (tegn[i][0] == t && tegn[i][1] == 0 && tegn[i][2] == t)
            n = 1;
        else if (tegn[i][0] == t && tegn[i][1] == t && tegn[i][2] == 0) n = 2;
        if (n >= 0)
        {
            pos.height = i;
            pos.width = n;
            return true;
        }
        return false;
    }

    private boolean CheckDiagonal1(int t, Dimension pos)
    {
        int n = 1;
        if (tegn[0][0] == 0 && tegn[1][1] == t && tegn[2][2] == t)
            n = 0;
        else if (tegn[0][0] == t && tegn[1][1] == 0 && tegn[2][2] == t)
            n = 1;
        else if (tegn[0][0] == t && tegn[1][1] == t && tegn[2][2] == 0) n = 2;
        if (n >= 0)
        {
            pos.height = n;
            pos.width = n;
            return true;
        }
        return false;
    }

    private boolean CheckDiagonal2(int t, Dimension pos)
    {
        int n = -1;
        if (tegn[0][2] == 0 && tegn[1][1] == t && tegn[2][0] == t)
            n = 2;
        else if (tegn[0][2] == t && tegn[1][1] == 0 && tegn[2][0] == t)
            n = 1;
        else if (tegn[0][2] == t && tegn[1][1] == t && tegn[2][0] == 0) n = 0;
        if (n >= 0)
        {
            pos.height = 2 - n;
            pos.width = n;
            return true;
        }
        return false;
    }

    private boolean CheckKolonne(int i, int t, Dimension pos)
    {
        int n = -1;
        if (tegn[0][i] == 0 && tegn[1][i] == t && tegn[2][i] == t)
            n = 0;
        else if (tegn[0][i] == t && tegn[1][i] == 0 && tegn[2][i] == t)
            n = 1;
        else if (tegn[0][i] == t && tegn[1][i] == t && tegn[2][i] == 0) n = 2;
        if (n >= 0)
        {
            pos.height = n;
            pos.width = i;
            return true;
        }
        return false;
    }

    private boolean CheckComputer(Dimension pos)
    {
        if (!CheckRaekke(0, 2, pos))
            if (!CheckRaekke(1, 2, pos))
                if (!CheckRaekke(2, 2, pos))
                    if (!CheckKolonne(0, 2, pos))
                        if (!CheckKolonne(1, 2, pos))
                            if (!CheckKolonne(2, 2, pos))
                                if (!CheckDiagonal1(2, pos)) return CheckDiagonal2(2, pos);
        return true;
    }

    private boolean CheckSpiller(Dimension pos)
    {
        if (!CheckRaekke(0, 1, pos))
            if (!CheckRaekke(1, 1, pos))
                if (!CheckRaekke(2, 1, pos))
                    if (!CheckKolonne(0, 1, pos))
                        if (!CheckKolonne(1, 1, pos))
                            if (!CheckKolonne(2, 1, pos))
                                if (!CheckDiagonal1(1, pos)) return CheckDiagonal2(1, pos);
        return true;
    }

    private boolean ComputerCheck(int a, int b)
    {
        int i;
        for (i = 0; i < 3; ++i) if (tegn[a][i] == 1) break;
        if (i == 3) return true;
        for (i = 0; i < 3; ++i) if (tegn[i][b] == 1) break;
        if (i == 3) return true;
        if (a == 1 && b == 1)
        {
            if (tegn[0][0] != 1 && tegn[2][2] != 1) return true;
            if (tegn[0][2] != 1 && tegn[2][0] != 1) return true;
        }
        return false;
    }

    private boolean SpillerVundet()
    {
        if (tegn[0][0] == 1 && tegn[0][1] == 1 && tegn[0][2] == 1) return true;
        if (tegn[1][0] == 1 && tegn[1][1] == 1 && tegn[1][2] == 1) return true;
        if (tegn[2][0] == 1 && tegn[2][1] == 1 && tegn[2][2] == 1) return true;
        if (tegn[0][0] == 1 && tegn[1][0] == 1 && tegn[2][0] == 1) return true;
        if (tegn[0][1] == 1 && tegn[1][1] == 1 && tegn[2][1] == 1) return true;
        if (tegn[0][2] == 1 && tegn[1][2] == 1 && tegn[2][2] == 1) return true;
        if (tegn[0][0] == 1 && tegn[1][1] == 1 && tegn[2][2] == 1) return true;
        if (tegn[2][0] == 1 && tegn[1][1] == 1 && tegn[0][2] == 1) return true;
        return false;
    }

    private boolean ComputerVundet()
    {
        if (tegn[0][0] == 1 && tegn[0][1] == 1 && tegn[0][2] == 1) return true;
        if (tegn[1][0] == 1 && tegn[1][1] == 1 && tegn[1][2] == 1) return true;
        if (tegn[2][0] == 1 && tegn[2][1] == 1 && tegn[2][2] == 1) return true;
        if (tegn[0][0] == 1 && tegn[1][0] == 1 && tegn[2][0] == 1) return true;
        if (tegn[0][1] == 1 && tegn[1][1] == 1 && tegn[2][1] == 1) return true;
        if (tegn[0][2] == 1 && tegn[1][2] == 1 && tegn[2][2] == 1) return true;
        if (tegn[0][0] == 1 && tegn[1][1] == 1 && tegn[2][2] == 1) return true;
        if (tegn[2][0] == 1 && tegn[1][1] == 1 && tegn[0][2] == 1) return true;
        return false;
    }

    private void SpilSlut()
    {
        if (SpillerVundet())
            slut = 1;
        else if (ComputerVundet())
            slut = 2;
    }

    private boolean KrydsOk(int i, int j)
    {
        if (tegn[i][j] != 0) return false;
        if (slut != 0) return false;
        return true;
    }

    private void TegnBolle()
    {
        count = 0;
        if (CheckComputer(pos[count]))
            ++count;
        else if (CheckSpiller(pos[count]))
            ++count;
        else
            for (int i = 0; i < 3; ++i)
                for (int j = 0; j < 3; ++j)
                    if (tegn[i][j] == 0 && ComputerCheck(i, j))
                    {
                        pos[count].height = i;
                        pos[count].width = j;
                        ++count;
                    }
        int n = 0;
        if (count > 0) n = ((int) (Math.random() * 100)) % count;
        tegn[pos[n].height][pos[n].width] = 2;
    }

    private void TegnKryds(int i, int j)
    {
        if (KrydsOk(i, j))
        {
            tegn[i][j] = 1;
            SpilSlut();
            if (slut == 0)
            {
                TegnBolle();
                SpilSlut();
            }
            repaint();
        }
    }

    class MyActionListener implements MouseListener
    {
        public void  mouseClicked(MouseEvent evt)
        {
                if (evt.getClickCount() >= 1)
                {
                    for (int i = 0; i < 3; ++i)
                        for (int j = 0; j < 3; ++j) tegn[i][j] = 0;
                    slut = 0;
                    spillerStarter = spillerStarter ? false : true;
                    if (!spillerStarter) TegnBolle();
                    repaint();
                }
            int x=evt.getX();
            int y=evt.getY();
                if (x > 20 && x < 170 && y > 20 && y > 170)
                {
                    int i = 0, j = 0;
                    for (x -= 20; x > 50; x -= 50) ++j;
                    for (y -= 20; y > 50; y -= 50) ++i;
                    TegnKryds(i, j);
                }
        }

        public void mousePressed(MouseEvent e)
        {
        }

        public void mouseReleased(MouseEvent e)
        {
        }

        public void mouseEntered(MouseEvent e)
        {
        }

        public void mouseExited(MouseEvent e)
        {
        }
    }


    public void paint(Graphics g)
    {
        for (int i = 0; i < 3; ++i)
            for (int j = 0; j < 3; ++j)
            {
                g.drawRect(20 + j * 50, 20 + i * 50, 50, 50);
                if (tegn[i][j] == 1)
                {
                    g.drawLine(20 + j * 50 + 5, 20 + i * 50 + 5, 20 + (j + 1) * 50 - 5, 20 + (i + 1) * 50 - 5);
                    g.drawLine(20 + j * 50 + 5, 20 + (i + 1) * 50 - 5, 20 + (j + 1) * 50 - 5, 20 + i * 50 + 5);
                }
                else if (tegn[i][j] == 2)
                    g.drawOval(20 + j * 50 + 5, 20 + i * 50 + 5, 40, 40);
            }
        if (slut == 1)
            g.drawString(spiller, 20, 192);
        else if (slut == 2)
            g.drawString(maskine, 20, 190);
    }


}
Avatar billede disky Nybegynder
03. april 2003 - 17:31 #4
ny version:

Den if i mouse routinen havde en > der vente forkert:

/*
* Applet_6.java
*
* Created on 3. april 2003, 14:18
*/

/**
*
* @author  Anders
*/

import java.applet.Applet;
import java.awt.*;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;

public class Applet_6 extends Applet
{
    private int[][] tegn;
    private int slut = 0;
    private String spiller = new String("Juhuu !!! Du vandt :-)");
    private String maskine = new String("Computeren vandt over dig :-(");
    private Dimension[] pos;
    private int count = 0;
    private boolean spillerStarter;

    public Applet_6()
    {
        tegn = new int[3][];
        tegn[0] = new int[3];
        tegn[1] = new int[3];
        tegn[2] = new int[3];
        for (int i = 0; i < 3; ++i)
            for (int j = 0; j < 3; ++j) tegn[i][j] = 0;
        pos = new Dimension[9];
        for (int i = 0; i < 9; ++i) pos[i] = new Dimension(0, 0);
        this.addMouseListener(new MyActionListener());
    }

    public void init()
    {
        spillerStarter = ((int) (Math.random() * 10)) % 2 == 0 ? true : false;
    }

    private boolean CheckRaekke(int i, int t, Dimension pos)
    {
        int n = -1;
        if (tegn[i][0] == 0 && tegn[i][1] == t && tegn[i][2] == t)
            n = 0;
        else if (tegn[i][0] == t && tegn[i][1] == 0 && tegn[i][2] == t)
            n = 1;
        else if (tegn[i][0] == t && tegn[i][1] == t && tegn[i][2] == 0) n = 2;
        if (n >= 0)
        {
            pos.height = i;
            pos.width = n;
            return true;
        }
        return false;
    }

    private boolean CheckDiagonal1(int t, Dimension pos)
    {
        int n = 1;
        if (tegn[0][0] == 0 && tegn[1][1] == t && tegn[2][2] == t)
            n = 0;
        else if (tegn[0][0] == t && tegn[1][1] == 0 && tegn[2][2] == t)
            n = 1;
        else if (tegn[0][0] == t && tegn[1][1] == t && tegn[2][2] == 0) n = 2;
        if (n >= 0)
        {
            pos.height = n;
            pos.width = n;
            return true;
        }
        return false;
    }

    private boolean CheckDiagonal2(int t, Dimension pos)
    {
        int n = -1;
        if (tegn[0][2] == 0 && tegn[1][1] == t && tegn[2][0] == t)
            n = 2;
        else if (tegn[0][2] == t && tegn[1][1] == 0 && tegn[2][0] == t)
            n = 1;
        else if (tegn[0][2] == t && tegn[1][1] == t && tegn[2][0] == 0) n = 0;
        if (n >= 0)
        {
            pos.height = 2 - n;
            pos.width = n;
            return true;
        }
        return false;
    }

    private boolean CheckKolonne(int i, int t, Dimension pos)
    {
        int n = -1;
        if (tegn[0][i] == 0 && tegn[1][i] == t && tegn[2][i] == t)
            n = 0;
        else if (tegn[0][i] == t && tegn[1][i] == 0 && tegn[2][i] == t)
            n = 1;
        else if (tegn[0][i] == t && tegn[1][i] == t && tegn[2][i] == 0) n = 2;
        if (n >= 0)
        {
            pos.height = n;
            pos.width = i;
            return true;
        }
        return false;
    }

    private boolean CheckComputer(Dimension pos)
    {
        if (!CheckRaekke(0, 2, pos))
            if (!CheckRaekke(1, 2, pos))
                if (!CheckRaekke(2, 2, pos))
                    if (!CheckKolonne(0, 2, pos))
                        if (!CheckKolonne(1, 2, pos))
                            if (!CheckKolonne(2, 2, pos))
                                if (!CheckDiagonal1(2, pos)) return CheckDiagonal2(2, pos);
        return true;
    }

    private boolean CheckSpiller(Dimension pos)
    {
        if (!CheckRaekke(0, 1, pos))
            if (!CheckRaekke(1, 1, pos))
                if (!CheckRaekke(2, 1, pos))
                    if (!CheckKolonne(0, 1, pos))
                        if (!CheckKolonne(1, 1, pos))
                            if (!CheckKolonne(2, 1, pos))
                                if (!CheckDiagonal1(1, pos)) return CheckDiagonal2(1, pos);
        return true;
    }

    private boolean ComputerCheck(int a, int b)
    {
        int i;
        for (i = 0; i < 3; ++i) if (tegn[a][i] == 1) break;
        if (i == 3) return true;
        for (i = 0; i < 3; ++i) if (tegn[i][b] == 1) break;
        if (i == 3) return true;
        if (a == 1 && b == 1)
        {
            if (tegn[0][0] != 1 && tegn[2][2] != 1) return true;
            if (tegn[0][2] != 1 && tegn[2][0] != 1) return true;
        }
        return false;
    }

    private boolean SpillerVundet()
    {
        if (tegn[0][0] == 1 && tegn[0][1] == 1 && tegn[0][2] == 1) return true;
        if (tegn[1][0] == 1 && tegn[1][1] == 1 && tegn[1][2] == 1) return true;
        if (tegn[2][0] == 1 && tegn[2][1] == 1 && tegn[2][2] == 1) return true;
        if (tegn[0][0] == 1 && tegn[1][0] == 1 && tegn[2][0] == 1) return true;
        if (tegn[0][1] == 1 && tegn[1][1] == 1 && tegn[2][1] == 1) return true;
        if (tegn[0][2] == 1 && tegn[1][2] == 1 && tegn[2][2] == 1) return true;
        if (tegn[0][0] == 1 && tegn[1][1] == 1 && tegn[2][2] == 1) return true;
        if (tegn[2][0] == 1 && tegn[1][1] == 1 && tegn[0][2] == 1) return true;
        return false;
    }

    private boolean ComputerVundet()
    {
        if (tegn[0][0] == 1 && tegn[0][1] == 1 && tegn[0][2] == 1) return true;
        if (tegn[1][0] == 1 && tegn[1][1] == 1 && tegn[1][2] == 1) return true;
        if (tegn[2][0] == 1 && tegn[2][1] == 1 && tegn[2][2] == 1) return true;
        if (tegn[0][0] == 1 && tegn[1][0] == 1 && tegn[2][0] == 1) return true;
        if (tegn[0][1] == 1 && tegn[1][1] == 1 && tegn[2][1] == 1) return true;
        if (tegn[0][2] == 1 && tegn[1][2] == 1 && tegn[2][2] == 1) return true;
        if (tegn[0][0] == 1 && tegn[1][1] == 1 && tegn[2][2] == 1) return true;
        if (tegn[2][0] == 1 && tegn[1][1] == 1 && tegn[0][2] == 1) return true;
        return false;
    }

    private void SpilSlut()
    {
        if (SpillerVundet())
            slut = 1;
        else if (ComputerVundet())
            slut = 2;
    }

    private boolean KrydsOk(int i, int j)
    {
        if (tegn[i][j] != 0) return false;
        if (slut != 0) return false;
        return true;
    }

    private void TegnBolle()
    {
        count = 0;
        if (CheckComputer(pos[count]))
            ++count;
        else if (CheckSpiller(pos[count]))
            ++count;
        else
            for (int i = 0; i < 3; ++i)
                for (int j = 0; j < 3; ++j)
                    if (tegn[i][j] == 0 && ComputerCheck(i, j))
                    {
                        pos[count].height = i;
                        pos[count].width = j;
                        ++count;
                    }
        int n = 0;
        if (count > 0) n = ((int) (Math.random() * 100)) % count;
        tegn[pos[n].height][pos[n].width] = 2;
    }

    private void TegnKryds(int i, int j)
    {
        if (KrydsOk(i, j))
        {
            tegn[i][j] = 1;
            SpilSlut();
            if (slut == 0)
            {
                TegnBolle();
                SpilSlut();
            }
            repaint();
        }
    }

    class MyActionListener implements MouseListener
    {
        public void  mouseClicked(MouseEvent evt)
        {
                if (evt.getClickCount() > 1)
                {
                    for (int i = 0; i < 3; ++i)
                        for (int j = 0; j < 3; ++j) tegn[i][j] = 0;
                    slut = 0;
                    spillerStarter = spillerStarter ? false : true;
                    if (!spillerStarter) TegnBolle();
                    repaint();
                }
            int x=evt.getX();
            int y=evt.getY();
                if (x > 20 && x < 170 && y > 20 && y < 170)
                {
                    int i = 0, j = 0;
                    for (x -= 20; x > 50; x -= 50) ++j;
                    for (y -= 20; y > 50; y -= 50) ++i;
                    TegnKryds(i, j);
                }
        }

        public void mousePressed(MouseEvent e)
        {
        }

        public void mouseReleased(MouseEvent e)
        {
        }

        public void mouseEntered(MouseEvent e)
        {
        }

        public void mouseExited(MouseEvent e)
        {
        }
    }


    public void paint(Graphics g)
    {
        for (int i = 0; i < 3; ++i)
            for (int j = 0; j < 3; ++j)
            {
                g.drawRect(20 + j * 50, 20 + i * 50, 50, 50);
                if (tegn[i][j] == 1)
                {
                    g.drawLine(20 + j * 50 + 5, 20 + i * 50 + 5, 20 + (j + 1) * 50 - 5, 20 + (i + 1) * 50 - 5);
                    g.drawLine(20 + j * 50 + 5, 20 + (i + 1) * 50 - 5, 20 + (j + 1) * 50 - 5, 20 + i * 50 + 5);
                }
                else if (tegn[i][j] == 2)
                    g.drawOval(20 + j * 50 + 5, 20 + i * 50 + 5, 40, 40);
            }
        if (slut == 1)
            g.drawString(spiller, 20, 192);
        else if (slut == 2)
            g.drawString(maskine, 20, 190);
    }


}
Avatar billede snuseren.dk Nybegynder
03. april 2003 - 17:56 #5
takker disky, men det er som om der stadig er et problem: Computeren spiller slet ikke.! :-( Det er kun mig der spiller... jeg ved ik om jeg har en mindre begavet computer *G*
Avatar billede disky Nybegynder
03. april 2003 - 18:00 #6
Jeg har ikke tid lige nu til at kigge dybere i det, men jeg prøver senere.
Avatar billede snuseren.dk Nybegynder
03. april 2003 - 18:00 #7
ok takker
Avatar billede snuseren.dk Nybegynder
12. april 2003 - 08:46 #8
luk
Avatar billede disky Nybegynder
12. april 2003 - 09:47 #9
Okay ingen point for hjælpen, nå så bliver der bestemt ikke kigget dybere på det problem.
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