Kalaha Spiel Implementation

Ericshao

Mitglied
Hallo zusammen,

ich wollte das Spiele Kalah in Java implementieren, bin jedoch einer Schwierigkeit begegnet dass die Mulde (array) die ich leeren will sich nicht leert und ich den Fehler nicht erkennen kann. Könntet ihr bitte mal den Code angucken und mir sagen wo der Fehler liegt?

Java:
public class Kallaha
{

private int spieler;
private int array[];



public Kallaha(int pSpieler)
{

spieler = pSpieler;
array = new int[14];
array[6] = 0;
array[13] = 0;
for(int i=0 ; i<6; i++)
{
array[i] = 4;
}
for(int i=7 ; i<13; i++)
{
array[i] = 4;
}


}

void verteile (int pMulde)
{

int anzahlSteine = array[pMulde];
int zeiger = pMulde+1;
while(anzahlSteine > 0)
{
anzahlSteine=anzahlSteine-1;
array[zeiger]=array[zeiger]+1;

if(zeiger == 5)
{
if (spieler == 1)
{
zeiger = zeiger+1;
}
else
{
zeiger = zeiger+2;
}

}
else if (zeiger == 12)
{

if(spieler == 2)
{
zeiger = zeiger+1;
}
else 
{
zeiger = zeiger-12;
}

}
else if (zeiger == 13)
{
zeiger = zeiger-13;
}
else
{
zeiger = zeiger+1;
}

}
}
}
 
Zuletzt bearbeitet von einem Moderator:
Spielregeln lauten folgendes:
Bei dem Steinchenspiel besteht das Spielbrett aus zwei Reihen mit jeweils sechs Mulden zum Spielen und rechts und links jeweils eine Gewinnmulde.
1. Setzen Sie sich gegenüber von ihrem Gegenspieler und legen das Spielbrett so zwischen sich, dass jeder seine sechs Spielmulden vor sich hat. Außerdem gehört jedem die rechts von ihm liegende Gewinnmulde.
2. Verteilen Sie nun auf die Spielmulden jeweils vier Steine.
3. Nehmen Sie nun aus einer ihrer Mulden alle Steine und verteilen sie gegen den Uhrzeigersinn in die Mulden. In jede Mulde dürfen Sie nur einen Stein legen. Die gegnerische Gewinnmulde wird dabei ausgelassen.
4. Gelingt es ihnen, den letzten Stein in ihre Gewinnmulde zu legen, dürfen Sie noch eine Runde spielen. Das können Sie beliebig oft wiederholen.
5. Wenn der letzte Stein in einer ihrer leeren Spielmulden landet und in der gegenüberliegenden Mulde mindestens ein Sternchen liegt, dann dürfen Sie den letzten Stein sowie die Steine aus der gegenüberliegenden Spielmulde nehmen und in ihre Gewinnmulde legen.
6. Das Steinchenspiel ist zu Ende, wenn nach ihrem Zug alle ihre Spielmulden leer sind. Dann muss ihr Gegenüber alle Steine aus seinen Mulden nehmen und diese in seine Gewinnmulde legen.
7. Sie haben gewonnen, wenn Sie die meisten Steine in ihrer Gewinnmulde haben.

Arbeite gerade nur an die Methode verteile 🙂
 
"leeren" würde für mich bedeuten, dass alle Einträge 0 sind. Das einzige was du in der Schleife aber momentan machst ist den Inhalt zu inkrementieren.

Ach ja: Code bitte in Code-Tags setzen
Danke für die Antwort, bin ef Schüler und programmiere erst seit 2/3 Jahren im Unterricht, deshalb kann ich irgendwie nicht direkt deine Antwort nachvollziehen die von einem erfahrenen Programmierer kommt. Meine Frage war dass ich nur die pMulde von der ich die 4 Steine auf weiter folgende Mulden verteilen will, auf 0 setzen will. Zb pMulde=4 Mulde=4 Mulde=4 Mulde=4 Mulde=4 und nach verteilen muss das so aussehen: pMulde=0 Mulde=5 Mulde=5 Mulde=5 Mulde=5
Wie soll ich das hinbekommen? Arbeite seit 2-3 Tagen dran und finde meinen fehler nicht
 
Was Dir Robat sagen wollte ist, dass Du die Anzahl der Steine in den Mulden immer nur hochzählst. Wenn Du eine Mulde leeren willst, musst Du sie irgendwo mal auf 0 setzen.
Kurz: nach der while-Schleife fügst Du ein
Java:
array[pMulde] = 0; // oder anzahlSteine;
 

Zurück
Oben