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