Ginę, tworzę i nie wiem do końca co.
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
class Kwadrat {
int wspx; // wpółrzędna pola x
int wspy; // wpółrzędna pola y
int nr; // nr pola
int status = 0; // info, czy pole zostało kliknięte
int obrazekid = 2; //aktualny obrazek
Image obr; // obrazek załadowany w dane pole
}
public class nn extends Applet implements MouseListener {
double px, py;
Point point;
int i, x = 1, wx, wy, kontr = 0;
int koniec, count = 0;
Image plansza, kolko, krzyzyk, obrinfo, blank;
Kwadrat pole1[] = new Kwadrat[10];
public void init() {
this.resize(400, 400);
addMouseListener(this);
Image o;
blank = getImage(getDocumentBase(), "puste.png");
plansza = getImage(getDocumentBase(), "plansza.png");
krzyzyk = getImage(getDocumentBase(), "krzyzyk.png");
kolko = getImage(getDocumentBase(), "kolko.png");
o = blank;
pole1 = intPola(o);
}
int tab[][] = new int[3][3]; // tablica
/* w jaki sposób odczytać wartości pól
{
// dla gracza x
tab[1][1] = gracz_x;
tab[1][2] = gracz_x;
tab[1][3] = gracz_x;
tab[2][1] = gracz_x;
tab[2][2] = gracz_x;
tab[2][3] = gracz_x;
tab[3][1] = gracz_x;
tab[3][2] = gracz_x;
tab[3][3] = gracz_x;
// dla gracza o
tab[1][1] = gracz_o;
tab[1][2] = gracz_o;
tab[1][3] = gracz_o;
tab[2][1] = gracz_o;
tab[2][2] = gracz_o;
tab[2][3] = gracz_o;
tab[3][1] = gracz_o;
tab[3][2] = gracz_o;
tab[3][3] = gracz_o;
}*/
public Kwadrat[] intPola(Image o) {
int i = 0, j = 0, w1 = 30, w2 = 90, w3 = 0;
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
pole1[w3] = new Kwadrat();
pole1[w3].wspx = w1;
pole1[w3].wspy = w2;
pole1[w3].nr = w3;
pole1[w3].obr = o;
pole1[w3].obrazekid = 2;
pole1[w3].status = 0;
w1 += 100;
w3++;
}
w2 += 100;
w1 = 30;
}
kontr = 0;
return pole1;
}
public void paint(Graphics gr) {
gr.drawImage(plansza, 5, 30, this);
int i = 0;
for (i = 0; i < 9; i++) {
gr.drawImage(pole1[i].obr, pole1[i].wspx, pole1[i].wspy, this);
}
/*for (int gracz=1; gracz<3; gracz++ )
for (int i=0; i<3; i++); */
// if (tab[i][0] == tab[i][1] == tab[i][2] - ?
// if (tab[0][i] == tab[1][i] == tab[2][i] - ?
}
public void mousePressed(MouseEvent evt) {}
public void mouseClicked(MouseEvent evt) {
if (koniec == 0) {
point = new Point(1, 1);
point.x = evt.getX();
point.y = evt.getY();
px = point.x;
py = point.y;
ktorePole(px, py);
wygrana();
}
}
public void mouseReleased(MouseEvent evt) {}
public void mouseEntered(MouseEvent evt) {}
public void mouseExited(MouseEvent evt) {}
public Image kLubK(int kik) {
if (kontr == 0) {
obrinfo = krzyzyk;
kontr = 1;
pole1[kik].status = 1;
pole1[kik].obrazekid = 0;
} else if (kontr == 1) {
obrinfo = kolko;
kontr = 0;
pole1[kik].status = 1;
pole1[kik].obrazekid = 1;
}
return obrinfo;
}
public void ktorePole(double wx, double wy) {
int i = 0;
for (i = 0; i < 9; i++) {
if ((wx >= pole1[i].wspx) && (wx <= pole1[i].wspx + 60)
&& (wy >= pole1[i].wspx) && (wy <= pole1[i].wspx + 60)
&& (pole1[i].status == 0)) {
count++;
pole1[i].obr = kLubK(i);
//j = i;
}
}
repaint();
}
// możliwe kombinacje wygranych
public void wygrana() {
if ((pole1[0].status == pole1[1].status)
&& (pole1[1].status == pole1[2].status)
&& (pole1[0].obrazekid == pole1[1].obrazekid)
&& (pole1[1].obrazekid == pole1[2].obrazekid) && (pole1[0].obrazekid < 2)) {
koniec = 1;
repaint();
}
//... itd
}
public void koniecGry() {
if (koniec == 1){
koniec = 0;
count = 0;
intPola(blank);
}
if ((koniec == 0) && (count == 9)) {
count = 0;
intPola(blank);
}
}
}
za duzo sugestii mam z różnych stron i się kręcę.
Jak mam tablicę, w jaki sposób się do niej odwołać odczytując wartości pól?
Czy jest sens tworzyć dodatkową klasę i wszystko co się z nią wiąże?
Wiem, co należy zrobić itd, ale problemy są z poskładaniem tego w całość :-/ Nie wspominając o czasie.
Znalazłem wersję TicTacToe, ale tam tablica jest zapisana w sposób, jaki miałem wcześniej. Zgodnie z sugestiami stworzyłem dwuwymiarową.