Hallo zusammen!
Ich bin eine Anfängerin in Java-Programmierung (lerne erst seit 2 Monaten) und versuche, ein einfaches "Vier Gewinnt" Spiel zu schreiben. Leider funktioniert es nicht, und selbst kann ich nicht meine Fehler finden. Unser Professor hat gesagt, dass es schon ziemlich fortgeschrittene Aufgabe ist, aber ich will es trotzdem schaffen.
Ich weiß, der Code sieht total schlecht aus, aber ich hoffe, ihr habt Verständnis dafür. Problempunkte:
1.Die Steine erscheinen nicht an den zugehörigen Stellen, sondern ein wenig versetzt.
2.Die Steine bewegen sich nur in der Diagonale.
...Und eventuell noch mehr.
Danke für eure Hilfe!
Klasse SpielStein
Klasse SpielFeld
Klasse Spiel
Ich bin eine Anfängerin in Java-Programmierung (lerne erst seit 2 Monaten) und versuche, ein einfaches "Vier Gewinnt" Spiel zu schreiben. Leider funktioniert es nicht, und selbst kann ich nicht meine Fehler finden. Unser Professor hat gesagt, dass es schon ziemlich fortgeschrittene Aufgabe ist, aber ich will es trotzdem schaffen.
Ich weiß, der Code sieht total schlecht aus, aber ich hoffe, ihr habt Verständnis dafür. Problempunkte:
1.Die Steine erscheinen nicht an den zugehörigen Stellen, sondern ein wenig versetzt.
2.Die Steine bewegen sich nur in der Diagonale.
...Und eventuell noch mehr.
Danke für eure Hilfe!
Klasse SpielStein
Java:
import edu.princeton.cs.introcs.StdDraw;
public class SpielStein {
boolean istRot;
SpielStein(boolean istRot){
this.istRot = istRot;
}
boolean istRot() {
return istRot;
}
public void zeicheStein(int xPos, int yPos, int radius) {
if(istRot)
StdDraw.setPenColor(StdDraw.RED);
else
StdDraw.setPenColor(StdDraw.YELLOW);
StdDraw.filledCircle(xPos, xPos, radius);
}
}
Klasse SpielFeld
Java:
import edu.princeton.cs.introcs.StdDraw;
public class SpielFeld {
public static final int anzahlSpalten = 7;
public static final int anzahlZeilen = 6;
public static final int feldGrosse = 80;
public static final int breite = feldGrosse/anzahlSpalten;
public static final int hoehe = feldGrosse/anzahlZeilen;
public static final int radius = Math.min(breite, hoehe)/2-1;
SpielStein [][] steine = new SpielStein[anzahlSpalten][anzahlZeilen];
public void zeichnenGrundRiss() {
StdDraw.setXscale(0, feldGrosse);
StdDraw.setYscale(0, feldGrosse);
StdDraw.rectangle(feldGrosse/2, feldGrosse/2, feldGrosse/2, feldGrosse/2);
for (int spalte = 0; spalte < anzahlSpalten; spalte++) {
for(int zeile = 0; zeile < anzahlZeilen; zeile++) {
StdDraw.circle(spalte * breite + breite/2, zeile * hoehe + hoehe/2, radius);
}
}
}
boolean legeStein(int spalte, boolean farbe) {
for (int zeile = 0; zeile < anzahlZeilen; zeile++) {
if(steine[spalte-1][anzahlZeilen-1] != null) {
System.out.println("Die Spalte ist schon voll! Wählen Sie eine andere Spalte aus!");
return false;
}else if(steine[spalte-1][zeile] == null){
steine[spalte-1][zeile] = new SpielStein(farbe);
return true;
}
}
return farbe;
}
public void zeicheSpielFeld() {
StdDraw.setXscale(0, feldGrosse);
StdDraw.setYscale(0, feldGrosse);
for (int spalte = 0; spalte < anzahlSpalten; spalte++) {
for(int zeile = 0; zeile < anzahlZeilen; zeile++) {
int xCenterPos = spalte * breite + breite/2;
int yCenterPos = zeile * hoehe + hoehe/2;
StdDraw.setPenColor(StdDraw.BLACK);
StdDraw.circle(xCenterPos, yCenterPos, radius);
if(steine[spalte][zeile] != null)
steine[spalte][zeile].zeicheStein(xCenterPos, yCenterPos, radius);
}
}
}
public boolean gewinnt() {
for (int zeile = 0; zeile < 7; zeile++) {
int summe = 1;
for (int spalte = 0; spalte < 5; spalte++) {
if (steine[spalte][zeile] != null && steine[spalte + 1][zeile] != null
&& steine[spalte][zeile] == steine[spalte + 1][zeile]) {
summe++;
if (summe >= 4) {
return true;
}
} else {
summe = 1;
}
}
}
return false;
}
}
Klasse Spiel
Java:
import edu.princeton.cs.introcs.StdDraw;
public class Spiel {
public static void main(String[] args) {
boolean rotIstAmZug = false;
SpielFeld spiel = new SpielFeld();
spiel.zeichnenGrundRiss();
while(true) {
if(rotIstAmZug == false) {
System.out.println("Rot ist am Zug!");
rotIstAmZug = true;
}else if(rotIstAmZug == true){
System.out.println("Gelb ist am Zug!");
rotIstAmZug = false;
}
System.out.println("Wo soll der Stein hingesetzt werden (1-7)?");
int spalte = EAM.rInt(); //Code input
spiel.legeStein(spalte, rotIstAmZug);
StdDraw.clear();
spiel.zeicheSpielFeld();
}
}
}