Java :: Aufgabe #41 :: Lösung #1

2 Lösungen Lösungen öffentlich
#41

4 Gewinnt für die Konsole

Anfänger - Java von Gustl - 05.01.2013 um 16:57 Uhr
Es soll 4 Gewinnt für die Konsole programmiert werden.
2 Spieler spielen gegeneinander, ohne Computergegner (ohne künstliche Intelligenz), spielen können.

Optional mit Computergegner, aber bitte in der Beschreibung dann angeben.
#1
vote_ok
von bequiet (220 Punkte) - 27.06.2013 um 13:18 Uhr
Quellcode ausblenden Java-Code
import java.util.*;
public class Hauptprogramm {
	
	
	
	public Hauptprogramm()
	{
		
		
	
	}
	
	public static void initialisiereSpielmenue(int zeile, int spalte)
	{
		
		//Objekter andere Klassen
		Spielfeld sp1 = new Spielfeld(zeile,spalte);
		Spieler spieler1 = new Spieler("Sabrina", 1);
		Spieler spieler2 = new Spieler("Olli", 2);
		
		//aktueller Spieler
		Spieler aktuellerSpieler = spieler1;
		
		//Scanner
		Scanner sc = new Scanner(System.in);
		
		// Spielfeld ausgaben
		do
		{
		System.out.println(aktuellerSpieler.getName() + ", Sie sind an der Reihe!");
		System.out.println();
		
		sp1.ausgabeSpielfeld();
		
		System.out.println();
		System.out.println("Bitte wählen Sie die Spalte aus! (Wert zwischen 0 und " + spalte + ")");
		System.out.println("bei Eingaben über " + spalte + " wird das Spiel beendet!");
		
		int eingabe = sc.nextInt();
		if(eingabe >= 0 && eingabe < spalte)
		{
			sp1.setzeSpielstein(aktuellerSpieler.getSpielerNr(), eingabe);
			if(aktuellerSpieler.getSpielerNr() == 1)
				{
				aktuellerSpieler = spieler2;
				}
			else
			{
				aktuellerSpieler = spieler1;
			}
			
		}
		else
		{
			beendeSpiel();
		}
		} while(sp1.unentschieden() == false && sp1.testeReihe(aktuellerSpieler.getSpielerNr()) == false);
		
		System.out.println("Herzlichen Glückwunsch, " + aktuellerSpieler.getName() + " hat gewonnen!!");
		
		beendeSpiel();
		
	}
	
	
	
	public static void initialisiereMenue()
	{
	
		System.out.println("Willkommen bei 4 Gewinnt!");
		System.out.println();
		System.out.println("Spiel beginnen: [1]");
		System.out.println("Spiel beenden:  [beliebige Eingabe]");
		
		Scanner sc = new Scanner(System.in);
		
		int eingabe = sc.nextInt();
		if(eingabe == 1)
		{
			Hauptprogramm.initialisiereSpielmenue(6,7);
		}
		else
		{
			beendeSpiel();
		}
		
		
		
	}
	
	
	public static void beendeSpiel()
	{
		System.exit(0);
		
	}

}


Quellcode ausblenden Java-Code
import java.util.*;
public class Hauptprogramm {
	
	
	
	public Hauptprogramm()
	{
		
		
	
	}
	
	public static void initialisiereSpielmenue(int zeile, int spalte)
	{
		
		//Objekter andere Klassen
		Spielfeld sp1 = new Spielfeld(zeile,spalte);
		Spieler spieler1 = new Spieler("Sabrina", 1);
		Spieler spieler2 = new Spieler("Olli", 2);
		
		//aktueller Spieler
		Spieler aktuellerSpieler = spieler1;
		
		//Scanner
		Scanner sc = new Scanner(System.in);
		
		// Spielfeld ausgaben
		do
		{
		System.out.println(aktuellerSpieler.getName() + ", Sie sind an der Reihe!");
		System.out.println();
		
		sp1.ausgabeSpielfeld();
		
		System.out.println();
		System.out.println("Bitte wählen Sie die Spalte aus! (Wert zwischen 0 und " + spalte + ")");
		System.out.println("bei Eingaben über " + spalte + " wird das Spiel beendet!");
		
		int eingabe = sc.nextInt();
		if(eingabe >= 0 && eingabe < spalte)
		{
			sp1.setzeSpielstein(aktuellerSpieler.getSpielerNr(), eingabe);
			if(aktuellerSpieler.getSpielerNr() == 1)
				{
				aktuellerSpieler = spieler2;
				}
			else
			{
				aktuellerSpieler = spieler1;
			}
			
		}
		else
		{
			beendeSpiel();
		}
		} while(sp1.unentschieden() == false && sp1.testeReihe(aktuellerSpieler.getSpielerNr()) == false);
		
		System.out.println("Herzlichen Glückwunsch, " + aktuellerSpieler.getName() + " hat gewonnen!!");
		
		beendeSpiel();
		
	}
	
	
	
	public static void initialisiereMenue()
	{
	
		System.out.println("Willkommen bei 4 Gewinnt!");
		System.out.println();
		System.out.println("Spiel beginnen: [1]");
		System.out.println("Spiel beenden:  [beliebige Eingabe]");
		
		Scanner sc = new Scanner(System.in);
		
		int eingabe = sc.nextInt();
		if(eingabe == 1)
		{
			Hauptprogramm.initialisiereSpielmenue(6,7);
		}
		else
		{
			beendeSpiel();
		}
		
		
		
	}
	
	
	public static void beendeSpiel()
	{
		System.exit(0);
		
	}

}


Quellcode ausblenden Java-Code
public class Spielfeld {

	private int feld[][] = null;
	
	
	
	public Spielfeld(int x, int y)
	{
		
		feld = new int[x][y];
		
		for(int i=0; i < feld.length; i++)
		{
			for(int j=0; j < feld[i].length; j++)
			{
				feld[i][j] = 0;
			}
			
		}
		
		
		
	}
	
	public void setzeSpielstein(int spielerNr, int spalte)
	{
		
		int x = feld.length-1;
		
		boolean fortsetzen = true;
		
		while(x >= 0 && fortsetzen == true)
		{
			
			if(feld[x][spalte] == 0 )
			{
			feld[x][spalte] = spielerNr;
			fortsetzen = false;
			}
			
			x--;
			
		}
		
		if(x < 0)
		{
			System.out.println("Der Stein konnte nicht gesetzt werden!");
		}
	
			
		
		
	}
	
	public void ausgabeSpielfeld()
	{
		
		for(int i=0; i < feld.length; i++)
		{
			for(int j=0; j < feld[i].length; j++)
			{
				
				System.out.print("| " + feld[i][j] + " |");
				
			}
			System.out.println();
		}
		
		
	}
	
	public boolean unentschieden()
	{
		
		boolean returnwert = false;
		
		if(getAnzahlGesetzterSteine() == feld.length*feld[0].length)
		{
			returnwert = true;
		}
		
		return returnwert;
	}
	
	public int getAnzahlGesetzterSteine()
	{
		int anzSteine = 0;
		for(int i=0; i < feld.length; i++)
		{
			for(int j=0; j < feld[i].length; j++)
			{
				if(feld[i][j] != 0)
				{
					anzSteine++;
				}
			}
		}
		
		return anzSteine;
	}
	
	public boolean testeReihe(int spielerNr)
	{
		boolean returnwert = false;
		
		if(getAnzahlGesetzterSteine() >= 7)
		{
		for(int i=0; i < feld.length; i++)
		{
			for(int j=0; j < feld.length; j++)
			{
				if(testeHorizontal(i,j,spielerNr) == true || testeVertikal(i,j,spielerNr) == true || testeQuer(i,j,spielerNr) == true )
				{
					returnwert = true;
				}
				
			}
		}
		
		}
		else
		{
		return returnwert;
		}
		return returnwert;
	}
	
	public boolean testeHorizontal(int x, int y, int Spieler)
	{
		boolean returnwert = false;
		
		
	if(y + 3 < feld[x].length)
		{
			if(feld[x][y] == Spieler && feld[x][y+1] == Spieler && feld[x][y+2] == Spieler && feld[x][y+3] == Spieler)
			{
			returnwert = true;
			}
		}	
		return returnwert;
	}
	
	public boolean testeVertikal(int x, int y, int Spieler)
	{
		boolean returnwert = false;
		if(x + 3 < feld.length)
		{
			if(feld[x][y] == Spieler && feld[x+1][y] == Spieler && feld[x+2][y] == Spieler && feld[x+3][y] == Spieler)
			{
			returnwert = true;
			}
		}	
		return returnwert;
	}
	
	public boolean testeQuer(int x, int y, int Spieler)
	{
		boolean returnwert = false;
		if(x + 3 < feld.length && y + 3 < feld.length)
		{
			if(feld[x][y] == Spieler && feld[x+1][y+1] == Spieler && feld[x+2][y+2] == Spieler && feld[x+3][y+3] == Spieler)
			{
			returnwert = true;
			}
		}	
		
		if(x - 3 >= 0 && y + 3 < feld.length)
		{
			if(feld[x][y] == Spieler && feld[x-1][y+1] == Spieler && feld[x-2][y+2] == Spieler && feld[x-3][y+3] == Spieler)
			{
			returnwert = true;
			}
		}	
		
		return returnwert;
	}
}


Quellcode ausblenden Java-Code
public class Testprogramm {

	public static void main(String[] args) {
		
		Hauptprogramm.initialisiereMenue();
		
		

	}

}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
2092449

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.