You are not logged in.

  • Login

1

Wednesday, May 21st 2008, 11:12am

TicTacToe

Also...
Erst mal der Java-Code:

Java Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
import sum.kern.Stift;
public class TickTackToe extends EreignisAnwendung
{
// Bezugsobjekte
Kästchen K1;
Kästchen K2;
Kästchen K3;
Kästchen K4;
Kästchen K5;
Kästchen K6;
Kästchen K7;
Kästchen K8;
Kästchen K9;
Kästchen dummy;
Stift stift;
// Attribute
private boolean Spieler;
 
// Konstruktor
public TickTackToe()
{
    super(800,800);
    stift = new Stift();
    K1 = new Kästchen(this.bildschirm().breite()/4-25,this.bildschirm().hoehe()/4-25);
    K2 = new Kästchen(this.bildschirm().breite()/4*2-25,this.bildschirm().hoehe()/4-25);
    K3 = new Kästchen(this.bildschirm().breite()/4*3-25,this.bildschirm().hoehe()/4-25);
    K4 = new Kästchen(this.bildschirm().breite()/4-25,this.bildschirm().hoehe()/4*2-25);
    K5 = new Kästchen(this.bildschirm().breite()/4*2-25,this.bildschirm().hoehe()/4*2-25);
    K6 = new Kästchen(this.bildschirm().breite()/4*3-25,this.bildschirm().hoehe()/4*2-25);
    K7 = new Kästchen(this.bildschirm().breite()/4-25,this.bildschirm().hoehe()/4*3-25);
    K8 = new Kästchen(this.bildschirm().breite()/4*2-25,this.bildschirm().hoehe()/4*3-25);
    K9 = new Kästchen(this.bildschirm().breite()/4*3-25,this.bildschirm().hoehe()/4*3-25);
    Spieler = true;
    super.fuehreAus();
 
}
public void bearbeiteMausDruck(double pH,double pV)
{
    if(K1.getroffen(pH,pV))
    { 
        if(Spieler)
        {
            K1.kreuz();
            Spieler = false;
        }
        else
        {
            K1.kreis();
            Spieler = true;
        }        
    }
    if(K2.getroffen(pH,pV))
    {
        if(Spieler)
        {
            K2.kreuz();
            Spieler = false;
        }
        else
        {
            K2.kreis();
            Spieler = true;
        }
    }
    if(K3.getroffen(pH,pV))
    {
        if(Spieler)
        {
            K3.kreuz();
            Spieler = false;
        }
        else
        {
            K3.kreis();
            Spieler = true;
        }
    }
    if(K4.getroffen(pH,pV))
    {
        if(Spieler)
        {
            K4.kreuz();
            Spieler = false;
        }
        else
        {
            K4.kreis();
            Spieler = true;
        }
    }
    if(K5.getroffen(pH,pV))
    {
        if(Spieler)
        {
            K5.kreuz();
            Spieler = false;
        }
        else
        {
            K5.kreis();
            Spieler = true;
        }
    }
    if(K6.getroffen(pH,pV))
    {
        if(Spieler)
        {
            K6.kreuz();
            Spieler = false;
        }
        else
        {
            K6.kreis();
            Spieler = true;
        }
    }
    if(K7.getroffen(pH,pV))
    {
        if(Spieler)
        {
            K7.kreuz();
            Spieler = false;
        }
        else
        {
            K7.kreis();
            Spieler = true;
        }
    }
    if(K8.getroffen(pH,pV))
    {
        if(Spieler)
        {
            K8.kreuz();
            Spieler = false;
        }
        else
        {
            K8.kreis();
            Spieler = true;
        }
    }
    if(K9.getroffen(pH,pV))
    {
        if(Spieler)
        {
            K9.kreuz();
            Spieler = false;
        }
        else
        {
            K9.kreis();
            Spieler = true;
        }
    }
}
public void bearbeiteMausLos(double pH,double pV){}
public void bearbeiteMausDoppelKlick(double pH,double pV){}
public void bearbeiteMausBewegt(double pH,double pV){}
public void bearbeiteTaste(char pZeichen){}
public void idle()
{
    K1.zeichneDich();
    K2.zeichneDich();
    K3.zeichneDich();
    K4.zeichneDich();
    K5.zeichneDich();
    K6.zeichneDich();
    K7.zeichneDich();
    K8.zeichneDich();
    K9.zeichneDich();
}
}


Es gibt also 9 Kästchen die alle beim Mausdruck überprüfen ob sie "getroffen" wurden und sich dann je nachdem wer dran ist mit Kreis oder Kreuz neu zeichnen...
Läuft so weit auch gut, aber gibt es ne Möglichkeit zu überprüfen ob 3 in einer Reihe sind ohne das man alle möglichen Fälle auflistet :

Java Quellcode

1
2
3
4
5
If(K1.nkreis() && K2.nKreis() && K3.nkreis())
 {
 super.ende();
 stift.schreibeText("Kreis gewinnt");
 }


Irgend ne Mathematische Gleichung oder so ?^^

Hier noch des Kästchen:

Java Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import sum.kern.Stift;
public class Kästchen
{
	// Bezugsobjekte
	Stift S;
	// Attribute
	public boolean Kreuz;
	public boolean Kreis;
	public double zH;
	public double zV;
 
	// Konstruktor
	public Kästchen(int pH, int pV)
	{
    	S = new Stift();
    	zH = pH;
    	zV = pV;
    	S.bewegeBis(pH,pV);
	}
 
	// Dienste
	public void zeichneDich()
	{
    	if(Kreuz)
    	{
        	S.zeichneRechteck(50,50);
        	S.runter();
        	S.bewegeBis(zH+50,zV+50);
        	S.bewegeBis(zH,zV);
    	}
    	else
    	{
        	if(Kreis)
        	{
            	S.zeichneRechteck(50,50);
            	S.bewegeBis(zH+25,zV+25);
            	S.zeichneKreis(10);
            	S.bewegeBis(zH,zV);
        	}
        	else
        	{
            	S.zeichneRechteck(50,50);
        	}
    	}
	}
	public void loescheDich()
	{
    	S.radiere();
    	this.zeichneDich();
    	S.normal();
	}
	public boolean getroffen(double pH,double pV)
	{
    	return pH > S.hPosition() && pH < S.hPosition() + 50 && pV > S.vPosition() && pV < S.vPosition() +50;
	}
	public void kreuz()
	{
    	if(Kreis != true)
    	{
        	Kreuz = true;
    	}
	}
	public void kreis()
	{
    	if(Kreuz != true)
    	{
        	Kreis = true;
    	}
	}
	public boolean nkreuz()
	{
    	return Kreuz;
	}
	public boolean nkreis()
	{
    	return Kreis;
	}
	public void gibFrei()
	{
    	S.gibFrei();
	}
}


und die EreignisAnwendung :

Java Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/**
 * @author Philip WOltersdorf
 * @version 1.0
 */
public abstract class EreignisAnwendung extends Anwendung
{
	// Bezugsobjekte
 
	// Attribute
	private boolean zArbeit;
	private boolean MausUnten;
	private int zX;
	private int zY;
 
	// Konstruktor
	public EreignisAnwendung(int pB,int pH)
	{
    	super(pB,pH);
    	zArbeit = true;
	}
 
	// Dienste
	public abstract void bearbeiteMausDruck(double pH,double pV);
	public abstract void bearbeiteMausLos(double pH,double pV);
	public abstract void bearbeiteMausDoppelKlick(double pH,double pV);
	public abstract void bearbeiteMausBewegt(double pH,double pV);
	public abstract void bearbeiteTaste(char pZeichen);
	public abstract void idle();
	public void ende()
	{
    	zArbeit = false;
	}
	public void fuehreAus()
	{
    	do
    	{
        	if(this.maus().istGedrueckt() && !MausUnten)
        	{
            	MausUnten = true;
            	this.bearbeiteMausDruck(this.maus().hPosition(),this.maus().vPosition());
        	}
        	else
        	{
            	if(!this.maus().istGedrueckt() && MausUnten)
            	{
                	MausUnten = false;
                	this.bearbeiteMausLos(this.maus().hPosition(),this.maus().vPosition());
            	}
            	else
            	{
                	if(this.maus().doppelKlick())
                	{
                    	this.bearbeiteMausDoppelKlick(this.maus().hPosition(),this.maus().vPosition());
                	}
                	else
                	{
                    	if(this.maus().hPosition() != zX || this.maus().vPosition() != zY)
                    	{
                        	this.bearbeiteMausBewegt(this.maus().hPosition(),this.maus().vPosition());
                        	zX = this.maus().hPosition();
                        	zY = this.maus().vPosition();
                    	}
                    	else
                    	{
                        	if(this.tastatur().wurdeGedrueckt())
                        	{
                            	this.bearbeiteTaste(this.tastatur().zeichen());
                            	this.tastatur().weiter();
                        	}
                        	else
                        	{
                            	this.idle();
                        	}
                    	}
                	}
            	}
        	}
    	}while(zArbeit != false);
	}
}


Danke im Voraus =)

This post has been edited 1 times, last edit by "möP" (May 21st 2008, 11:22am)


2

Wednesday, May 21st 2008, 11:23am

Mit einem Array wäre das alles kein Problem gewesen, aber so hast du eigentlich nur die Möglichkeit der If-Abfragen...

3

Wednesday, May 21st 2008, 11:25am

buargh... Erklär mir das mal bitte grob mit dem Arrays... Ich fand schon ziemlich komisch alle Kästchen einzeln zu machen aber was anderes fiel mir net ein...
Hilft evtl. n Dummy oder so was ?

This post has been edited 1 times, last edit by "möP" (May 21st 2008, 11:30am)


4

Thursday, May 22nd 2008, 10:04pm

Etwa so ...

Java Quellcode

1
2
3
4
5
6
7
8
9
String[] spielFeld = new String[9];
 
// Vertikal prüfen
for(int i = 0; i <= 2; i++) {
    Ist spielFeld[i] == spielFeld[i+3] == spielFeld[i+6] ?
        dann spielFeld[i] + " gewinnt";
}
 
Das ganze noch für Horizontale Prüfung und die 2 Diagonalen.


Vllt hilft dir das?!


Gruß,
X-Eon

5

Thursday, May 22nd 2008, 11:55pm

In deinem Fall sollte es ein 2-dimmensionales Array vom Typ Kästchen (seit wann unterstützt Java denn Umlaute?) sein.

Java Quellcode

1
Kästchen[][] spielfeld = new Kästchen[3][3];

Die untere rechte Ecke kannst du dann so ansprechen:

Java Quellcode

1
spielfeld[2][2] = new Kästchen(this.bildschirm().breite()/4*3-25,this.bildschirm().hoehe()/4*3-25);

Similar threads

Social bookmarks