03. april 2003 - 17:11Der 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 */
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); }
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 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); }
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.
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()); }
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 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); }
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()); }
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 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); }
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*
Okay ingen point for hjælpen, nå så bliver der bestemt ikke kigget dybere på det problem.
Synes godt om
Ny brugerNybegynder
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.