Hallo,
wie aus meinen vorherigen Fragen schon entnommen werden kann Programmiere ich gerade ein Viergewinnt Spiel, dass sich selbst zufällig befüllt.
Mein Problem ist allerdings jetzt das ich den Code mit Methoden sortiert habe mir aber die Methoden nicht ausgebenlassen kann weil es ein falscher Datentyp ist.
Ich weiß aber icht wie ich das beheben soll, da ich ja diesen Datentyp (char) beibehalten muss.
Sorryfür den Ganzen Code da unten aber ich denke so einzelne Ausschnitte davon bringen nicht viel
[CODE lang="java" title="actual and formal argument lists differ in length"]public class Spiel {
public static void main (String[] args) {
new Spiel().spiele();
}
public void spiele() {
spielfeldleer();
spielfelbefullen();
waagerechtGewonnen();
senkrechtGewonen();
diagonalGewonnen();
if(gewonnen > 0) {
System.out.println("Sie haben gewonnen!");
}
else{
System.out.println("Es gibt keinen Gewinner");
}
}
private int regel = 4;//Anzahl der Steine in einer Reihe zum gewinnen
private int dimension = 5;//Spielfeld größe
public static final char stein = 'X';
private int gewonnen = 0;//Counter für 4er Reihen
//Spielfeld erstellen
public char[][] spielfeldleer() {
char[][] spielfeld = new char[dimension][dimension];
for (int y = 0; y < spielfeld.length; y++) {
for (int x = 0; x < spielfeld.length; x++) {
spielfeld[y][x] = (' ');
System.out.print(spielfeld[y][x] + " | ");
}
System.out.println(" ");
}
return spielfeld;
}
//Spielfeld befüllen
public void spielfelbefullen(char spielfeld[][]) {
Random r = new Random();
for (int y = 0; y < spielfeld.length; y++) {
for (int x = 0; x < spielfeld.length; x++) {
spielfeld[y][x] = r.nextBoolean() ? ' ' : stein;
System.out.print(spielfeld[y][x] + " | ");
}
System.out.println(" ");
}
}
//Waagerecht überprüfen
public int waagerechtGewonnen(char spielfeld[][]) {
int anzahlwa = 0;
for (int spalte = 0; spalte < spielfeld.length; spalte++) {
for (int zeile = 0; zeile < spielfeld.length; zeile++) {
if (spielfeld[spalte][zeile] == stein) {
anzahlwa++;
if (anzahlwa > 4) {
anzahlwa = 0;
}
}
if (spielfeld[spalte][zeile] != stein) {
anzahlwa = 0;
}
if (anzahlwa == regel) {
System.out.println("4 in einer Reihe waagerecht");
gewonnen++;
}
}
anzahlwa = 0;
}
return gewonnen;
}
//Senkrechte überprüfen
public int senkrechtGewonen(char spielfeld[][], char stein, int n) {
int anzahlse = 0;
for (int zeile = 0; zeile < spielfeld.length; zeile++) {
for (int spalte = 0; spalte < spielfeld.length; spalte++) {
if (spielfeld[spalte][zeile] == stein) {
anzahlse++;
if (anzahlse > 4) {
anzahlse = 0;
}
}
if (spielfeld[spalte][zeile] != stein
&& zeile < spielfeld.length - 1) {
anzahlse = 0;
}
if (anzahlse == n) {
System.out.println("4 in einer Reihe senkrecht");
gewonnen++;
}
}
anzahlse = 0;
}
return gewonnen;
}
//Diagonal übeprüfen
public int diagonalGewonnen(char spielfeld[][], char stein, int n) {
int anzahldi = 0;
for (int spalte = 0; spalte < spielfeld.length - 1; spalte++) {
for (int zeile = 0; zeile < spielfeld.length - 1; zeile++) {
if (spielfeld[spalte][zeile] == stein) {
anzahldi++;// anzahldi vielleicht in der Schleife erst definieren
int y = spalte;
int x = zeile;
while (x < spielfeld.length - 1
&& y < spielfeld.length - 1
&& spielfeld[y + 1][x + 1] == stein) {//Letzte nicht weil kein stein mehr kommt
anzahldi++;
x++;
y++;
if (anzahldi == n) {
System.out.println("4 in einer Reihe diagonal");
gewonnen++;
}
}
}
anzahldi = 0;
}
}
return gewonnen;
}
}[/CODE]
wie aus meinen vorherigen Fragen schon entnommen werden kann Programmiere ich gerade ein Viergewinnt Spiel, dass sich selbst zufällig befüllt.
Mein Problem ist allerdings jetzt das ich den Code mit Methoden sortiert habe mir aber die Methoden nicht ausgebenlassen kann weil es ein falscher Datentyp ist.
Ich weiß aber icht wie ich das beheben soll, da ich ja diesen Datentyp (char) beibehalten muss.
Sorryfür den Ganzen Code da unten aber ich denke so einzelne Ausschnitte davon bringen nicht viel
[CODE lang="java" title="actual and formal argument lists differ in length"]public class Spiel {
public static void main (String[] args) {
new Spiel().spiele();
}
public void spiele() {
spielfeldleer();
spielfelbefullen();
waagerechtGewonnen();
senkrechtGewonen();
diagonalGewonnen();
if(gewonnen > 0) {
System.out.println("Sie haben gewonnen!");
}
else{
System.out.println("Es gibt keinen Gewinner");
}
}
private int regel = 4;//Anzahl der Steine in einer Reihe zum gewinnen
private int dimension = 5;//Spielfeld größe
public static final char stein = 'X';
private int gewonnen = 0;//Counter für 4er Reihen
//Spielfeld erstellen
public char[][] spielfeldleer() {
char[][] spielfeld = new char[dimension][dimension];
for (int y = 0; y < spielfeld.length; y++) {
for (int x = 0; x < spielfeld.length; x++) {
spielfeld[y][x] = (' ');
System.out.print(spielfeld[y][x] + " | ");
}
System.out.println(" ");
}
return spielfeld;
}
//Spielfeld befüllen
public void spielfelbefullen(char spielfeld[][]) {
Random r = new Random();
for (int y = 0; y < spielfeld.length; y++) {
for (int x = 0; x < spielfeld.length; x++) {
spielfeld[y][x] = r.nextBoolean() ? ' ' : stein;
System.out.print(spielfeld[y][x] + " | ");
}
System.out.println(" ");
}
}
//Waagerecht überprüfen
public int waagerechtGewonnen(char spielfeld[][]) {
int anzahlwa = 0;
for (int spalte = 0; spalte < spielfeld.length; spalte++) {
for (int zeile = 0; zeile < spielfeld.length; zeile++) {
if (spielfeld[spalte][zeile] == stein) {
anzahlwa++;
if (anzahlwa > 4) {
anzahlwa = 0;
}
}
if (spielfeld[spalte][zeile] != stein) {
anzahlwa = 0;
}
if (anzahlwa == regel) {
System.out.println("4 in einer Reihe waagerecht");
gewonnen++;
}
}
anzahlwa = 0;
}
return gewonnen;
}
//Senkrechte überprüfen
public int senkrechtGewonen(char spielfeld[][], char stein, int n) {
int anzahlse = 0;
for (int zeile = 0; zeile < spielfeld.length; zeile++) {
for (int spalte = 0; spalte < spielfeld.length; spalte++) {
if (spielfeld[spalte][zeile] == stein) {
anzahlse++;
if (anzahlse > 4) {
anzahlse = 0;
}
}
if (spielfeld[spalte][zeile] != stein
&& zeile < spielfeld.length - 1) {
anzahlse = 0;
}
if (anzahlse == n) {
System.out.println("4 in einer Reihe senkrecht");
gewonnen++;
}
}
anzahlse = 0;
}
return gewonnen;
}
//Diagonal übeprüfen
public int diagonalGewonnen(char spielfeld[][], char stein, int n) {
int anzahldi = 0;
for (int spalte = 0; spalte < spielfeld.length - 1; spalte++) {
for (int zeile = 0; zeile < spielfeld.length - 1; zeile++) {
if (spielfeld[spalte][zeile] == stein) {
anzahldi++;// anzahldi vielleicht in der Schleife erst definieren
int y = spalte;
int x = zeile;
while (x < spielfeld.length - 1
&& y < spielfeld.length - 1
&& spielfeld[y + 1][x + 1] == stein) {//Letzte nicht weil kein stein mehr kommt
anzahldi++;
x++;
y++;
if (anzahldi == n) {
System.out.println("4 in einer Reihe diagonal");
gewonnen++;
}
}
}
anzahldi = 0;
}
}
return gewonnen;
}
}[/CODE]