Hallo zusammen,
ich schreibe gerade ein Programm für ein Spiel, dass Zahlen auf einem Spielfeld so sortieren kann, dass gleiche Zahlen auf einem n*n SPiel-Brett entweder horizontal oder vertikal geordnet sind.
sieht dann so aus:
Feld ungeordnet
3 3 1 4
2 1 4 1
4 1 2 3
3 4 2 2
Feld geordnet horizontal - beispiel
1 1 1 1
4 4 4 4
2 2 2 2
3 3 3 3
Feld geordnet vertikal - beispiel
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
das ganze wird mit einer grafischen Oberfläche implemtiert, stuerknöpfe ermöglichen das verschieben jeweils einer ganzen reihe horizontal oder vertikal, Das funktioniert auch alles.
Das einzige problem stellt für mich die Testmethode dar, die testen soll, ob in einer Zeile (horizontal) oder in einer spalte (vertikal) jweils die gleichen werte/ziffern enthalten sind. Das funktioniert nicht. nach den testmethoden entscheidet das Programm, ob das Spiel fertig ist oder nicht, und es hört ständig mitten drin auf ???:L , ich in der meinung, dass es nur an den testmethoden liegen kann, deswegen stelle ich sie mal hier rein.
wenn das jemdandem bekannt vorkimmt oder jemand meinen fehler entdeckt, wäre ich um antwort sehr dankbar,
bis säter...
testH() testet die Reihen horizontal, testV() vertikal und reihenTest() wird anschliessend zum test ind er Programmsteuerung aufgerufen...
die großen zahlen bei FELD:LENGTH-2 oder -3 kommen dadurch zustande, dass das Feld in den äussersten Feldern noch Steuerköpfe besitzt, die natürlich bei der berechnung in das ZahlenFeld nicht mit einfliessen dürfen.
ich schreibe gerade ein Programm für ein Spiel, dass Zahlen auf einem Spielfeld so sortieren kann, dass gleiche Zahlen auf einem n*n SPiel-Brett entweder horizontal oder vertikal geordnet sind.
sieht dann so aus:
Feld ungeordnet
3 3 1 4
2 1 4 1
4 1 2 3
3 4 2 2
Feld geordnet horizontal - beispiel
1 1 1 1
4 4 4 4
2 2 2 2
3 3 3 3
Feld geordnet vertikal - beispiel
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
das ganze wird mit einer grafischen Oberfläche implemtiert, stuerknöpfe ermöglichen das verschieben jeweils einer ganzen reihe horizontal oder vertikal, Das funktioniert auch alles.
Das einzige problem stellt für mich die Testmethode dar, die testen soll, ob in einer Zeile (horizontal) oder in einer spalte (vertikal) jweils die gleichen werte/ziffern enthalten sind. Das funktioniert nicht. nach den testmethoden entscheidet das Programm, ob das Spiel fertig ist oder nicht, und es hört ständig mitten drin auf ???:L , ich in der meinung, dass es nur an den testmethoden liegen kann, deswegen stelle ich sie mal hier rein.
wenn das jemdandem bekannt vorkimmt oder jemand meinen fehler entdeckt, wäre ich um antwort sehr dankbar,
bis säter...
Code:
public boolean testH()
{
boolean gleich = false;
boolean weiter = true;
if(weiter)
{
for(int i=1; i<feld.length-2; i++)
{
if(weiter)
{
for(int j=1; j<feld.length-3; j++)
{
if(feld[i][j] != feld[i][j+1])
weiter = false;
}
}
}
}
if(weiter = false)
return gleich = false;
else return gleich = true;
}
public boolean testV()
{
boolean gleich = false;
boolean weiter = true;
if(weiter)
{
for(int j=1; j<feld.length-2; j++)
{
if(weiter)
{
for(int i=1; i<feld.length-3; i++)
{
if(feld[i][j] != feld[i+1][j])
weiter = false;
}
}
}
}
if(weiter = false)
return gleich = false;
else return gleich = true;
}
public boolean reihenTest()
{
if(testH() || testV())
return true;
else return false;
}
testH() testet die Reihen horizontal, testV() vertikal und reihenTest() wird anschliessend zum test ind er Programmsteuerung aufgerufen...
die großen zahlen bei FELD:LENGTH-2 oder -3 kommen dadurch zustande, dass das Feld in den äussersten Feldern noch Steuerköpfe besitzt, die natürlich bei der berechnung in das ZahlenFeld nicht mit einfliessen dürfen.