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();
}
}
}
