Connect6 Spiel - Code in ei

Status
Nicht offen für weitere Antworten.

SyNaTiiC

Neues Mitglied
Java:
import java.util.Scanner;

/**

 * Spiel: Connect6. "Connect 6 is a two-player strategy game similar to Gomoku.

 * Two players, Black and White, alternately place two stones of their own

 * colour, black and white respectively, on empty intersections of a Go-like

 * board, except that Black (the first player) places one stone only for the

 * first move. The one who gets six or more stones in a row (horizontally,

 * vertically or diagonally) first wins the game." - Wikipedia.

 *

 * @author michaeldietz

 *

 */

public class Connect6 {

public static char color; // Die Farbe des Steins, der als naechste gespielt wird.

public static char[][] board; // Das Spielbrett.

public static int x, y; // Spielfeldgroeße.

public static int r, s; // Koordinaten des Feldes, auf das der naechste Stein gespielt wird.

public static Scanner scanner = new Scanner(System.in);

public static boolean gameNotOver = true;



public static void main(String[] args) throws Exception {

x = reihenAnzahl();

y = spaltenAnzahl();

System.out.println();

board = new char[x][y];

fillBoard(board); // füllt die Felder mit dem Zeichen '.'.

printBoard(board); // Zeichnet das Spielfeld.

playGame(board); // Spiel beginnt.

}



/**

* Spielt das Spiel Connect6. Spieler black beginnt zuerst. Spiel endet,

* wenn einer der beiden Spieler 6 Felder in einer waagerechten, diagonalen

* oder senkrechten hat.

*

* @param board

*/

public static void playGame(char[][] board) throws Exception{



boolean blackTurn = true;

boolean firstTurn = true;



while (gameNotOver) { // solange das Spiel nicht zu Ende ist.

if (blackTurn) { // black ist am Zug.

System.out.println("\nBlack ist am Zug:");

if (firstTurn) { // In der ersten Runde darf black nur einen Stein platzieren. Ansonsten immer zwei.

gibKoordinaten('B'); // Fragt nach den Koordinaten.

printBoard(board); // Zeichnet das aktuelle Spielbrett.

blackTurn = !blackTurn; // beendet Runde und white beginnt.

firstTurn = !firstTurn; // die erste Runde ist vorbei und ab jetzt darf jeder zwei Steine platzieren.

}

else { // ab dem zweiten Zug.

for (int i = 0; i < 2; i++) { // wiederholt das ganze zweimal, da jeder zwei Steine platzieren darf.

gibKoordinaten('B'); // Fragt nach den Koordinaten.

printBoard(board); // Zeichnet das aktuelle Spielbrett.

if (gameWinner()) {

gameNotOver = false;

System.out.println("Glückwunsch, Spieler " + color + " hat das Spiel gewonnen!" );

break;

}

}

blackTurn = !blackTurn; // beendet Runde und white beginnt.

}

}

else { // white ist am Zug.

System.out.println("\nWhite ist am Zug:");

for (int i = 0; i < 2; i++) { // wiederholt das ganze zweimal, da jeder zwei Steine platzieren darf.

gibKoordinaten('W'); // Fragt nach den Koordinaten.

printBoard(board); // Zeichnet das aktuelle Spielbrett.

if (gameWinner()) {

gameNotOver = false;

System.out.println("Glückwunsch, Spieler " + color + " hat das Spiel gewonnen!" );

break;

}

}

blackTurn = !blackTurn; // beendet Runde und black beginnt.

}

}

}



/**

* (Spielfeldkomponente beginnt hier und kann unabhängig vom anderen modifziert werden.)

* Zeichnet das Spielbrett.

*

* @param board

*/

public static void printBoard(char[][] board) {

for (int i = 0; i < board.length; i++) { // für jede Reihe...

for (int j = 0; j < board[I].length; j++) { // für jede Spalte...

System.out.print("|" + board[I][j]);

}

System.out.println("|");

}

}



/**

* Füllt das Spielbrett mit dem Defaultwert '.' aus.

* 

* @param board

*/

public static void fillBoard(char[][] board) {

for (int i = 0; i < board.length; i++) { // für jede Reihe...

for (int j = 0; j < board[I].length; j++) { // für jede Spalte...

board[I][j] = '.'; // Belege das Feld mit dem Initialisierungswert.

}

}

}



/**

* (Spielfeldkomponente endet hier)

* Kontrolliert, ob das Feld schon besetzt ist oder nicht. Liefert true,

* wenn das Feld noch nicht besetzt ist, liefert false, wenn das Feld

* besetzt ist. Wenn das Feld noch nicht besetzt ist, platziert es den zu spielenden

* Stein an diese Stelle.

* 

* @param board

* @param color

* @param x

* @param y

* [USER=49078]@Return[/USER]

*/

public static boolean checkField(char[][] board, char color, int x, int y) {

if (board[x][y] == '.') { // Wenn das Feld leer ist...

board[x][y] = color;

return true;

} else { // ansonsten...

System.out.println("Das Feld ist bereits besetzt. Bitte wiederholen sie ihre Eingabe.\n");

return false;

}

}



/**

* (Dialogkomponente beginnt hier und kann unabhängig vom anderen modifiziert werden.)

* Fragt nach der Reihe, in welche der Spieler seinen Stein platzieren

* möchte.

* 

* [USER=49078]@Return[/USER] Reihenkoordinate

*/

public static int gibReihenKoordinate(int a) {

int i = 0;

System.out.println("Bitte geben sie ein, in welche Reihe sie spielen möchten(1-" + a + ").");

String o = scanner.nextLine();

if (o.equalsIgnoreCase("beenden")) {

System.exit(0);

}

else {

i = Integer.parseInt(o) - 1;

while (i < 0 || i > a - 1) { // solange sich die Eingabe außerhalb des Feldes befindet...

System.out.println("Reihenposition befindet sich außerhalb des Spielfeldes. Bitte wiederholen sie ihre Eingabe.");

System.out.println("Bitte geben sie ein, in welche Reihe sie spielen möchten(1-" + a + ").");

o = scanner.nextLine();

if (o.equalsIgnoreCase("beenden")) {

System.exit(0);

}

else {

i = Integer.parseInt(o) - 1;

}

}

}

return i;

}



/**

* Fragt nach der Spalte, in welche der Spieler seinen Stein platzieren

* möchte.

* 

* [USER=49078]@Return[/USER] Spaltenkoordinate

*/

public static int gibSpaltenKoordinate(int b) {

int i = 0;

System.out.println("Bitte geben sie ein, in welche Spalte sie spielen möchten(1-" + b + ").");

String o = scanner.nextLine();

if (o.equalsIgnoreCase("beenden")) {

System.exit(0);

}

else {

i = Integer.parseInt(o) - 1;

while (i < 0 || i > b - 1) { // solange sich die Eingabe außerhalb des Feldes befindet...

System.out.println("Reihenposition befindet sich außerhalb des Spielfeldes. Bitte wiederholen sie ihre Eingabe.");

System.out.println("Bitte geben sie ein, in welche Spalte sie spielen möchten(1-" + b + ").");

o = scanner.nextLine();

if (o.equalsIgnoreCase("beenden")) {

System.exit(0);

}

else {

i = Integer.parseInt(o) - 1;

}

}

System.out.println();

}

return i;

}



/**

* Fragt nach den Koordinaten, in welche der Spieler seinen Stein platzieren

* möchte.

* 

* @param farbe

* @throws Exception

*/

public static void gibKoordinaten(char farbe) throws Exception {

r = gibReihenKoordinate(x);

s = gibSpaltenKoordinate(y);

color = farbe;

while (!checkField(board, color, r, s)) { // wenn das Feld besetzt ist.

r = gibReihenKoordinate(x);

s = gibSpaltenKoordinate(y);

color = farbe;

}

}


/**

* Fragt nach der Anzahl der Reihen des Spielfeldes.

* [USER=49078]@Return[/USER]

* @throws Exception

*/

public static int reihenAnzahl() throws Exception {

x = IO.readInt("Wie viele Reihen soll das Spielfeld haben(6-20)?");

while (x < 6 || x > 20) { // solange es sich nicht im Bereich befindet...

System.out.println("Ihre Eingabe befindet sich außerhalb der gueltigen Groeße. Bitte wiederholen sie ihre Eingabe.");

x = IO.readInt("Wie viele Reihen soll das Spielfeld haben(6-20)?");

}

return x;

}


/**

* (Dialogkomponente endet hier.)

* Fragt nach der Anzahl der Spalten des Spielfeldes.

* [USER=49078]@Return[/USER]

* @throws Exception

*/

public static int spaltenAnzahl() throws Exception {

y = IO.readInt("Wie viele Spalten soll das Spielfeld haben(6-20)?");

while (y < 6 || y > 20) { // solange es sich nicht im Bereich befindet...

System.out.println("Ihre Eingabe befindet sich außerhalb der gueltigen Groeße. Bitte wiederholen sie ihre Eingabe.");

y = IO.readInt("Wie viele Spalten soll das Spielfeld haben(6-20)?");

}

return y;

}


/**

* Kontrolliert ob es einen Gewinner gibt.

* Returnt true, wenn eine lückenlose vertikale, horizontale oder diagonale 

* Reihe von sechs oder mehr der gleichen Steine gebildet wurde.

* [USER=49078]@Return[/USER]

*/

public static boolean gameWinner() {


if (checkReihe()) { // kontrolliert ob jemand 6 oder mehr Steine in einer Reihe hat.

return true;

}


if (checkSpalte()) { // kontrolliert ob jemand 6 oder mehr Steine in einer Spalte hat.

return true;

}

if (checkDiagonal1()) { // kontrolliert ob jemand 6 oder mehr Steine in einer Diagonalen von links oben nach rechts unten hat.

return true;

}

if (checkDiagonal2()) {

return true;

}

return false;

}


/**

* 

* Returnt true, wenn 6 oder mehr der gleichen Steine lückenlos in einer Reihe sind.

* [USER=49078]@Return[/USER]

*/

public static boolean checkReihe() {

int counter = 1; // Anzahl der lückenloses Steine, der gleichen Farbe.

for (int i = s - 1; i >= 0; i--) { // zaehlt wieviele Steine der gleichen Farbe lückenlos links neben dem platzierten Stein liegen.

if (board[r][I] == color) {

counter++;

} else {

break;

}

}

if (counter >= 6) {

return true;

}

for (int i = s + 1 ; i < y; i++) { // zaehlt wieviele Steine der gleichen Farbe lückenlos rechts neben dem platzierten Stein liegen.

if (board[r][I] == color) {

counter++;

} else {

break;

}

}

if (counter >= 6) {

return true;

}

return false;

}


/**

* 

* Returnt true, wenn 6 oder mehr der gleichen Steine lückenlos in einer Spalte sind.

* [USER=49078]@Return[/USER]

*/

public static boolean checkSpalte() {

int counter = 1; // Anzahl der lückenloses Steine, der gleichen Farbe.

for (int i = r - 1; i >= 0; i--) { // zaehlt wieviele Steine der gleichen Farbe lückenlos oberhalb des platzierten Steins liegen.

if (board[I][S] == color) {

counter++;

} else {

break;

}

}

if (counter >= 6) {

return true;

}

for (int i = r + 1; i < x; i++) { // zaehlt wieviele Steine der gleichen Farbe lückenlos unterhalb des platzierten Steins liegen.

if (board[I][S] == color) {

counter++;

} else {

break;

}

}

if (counter >= 6) {

return true;

}

return false;

}


/**

* Returnt true, wenn 6 oder mehr Steine lückenlos in einer Diagonalen von

* links oben nach rechts unten sind.

* [USER=49078]@Return[/USER]

*/

public static boolean checkDiagonal1() {

int counter = 1; // Anzahl der lückenloses Steine, der gleichen Farbe.

for(int i = r - 1, j = s - 1; i >= 0 && j >= 0; i--, j--) { // zaehlt wieviele Steine der gleichen Farbe lückenlos links oben des platzierten Steins liegen.

if(board[I][j] == color) {

counter++;

}

else {

break;

}

}

if (counter >= 6) {

return true;

}

for(int i = r + 1, j = s + 1; i < x && j < y; i++, j++){ // zaehlt wieviele Steine der gleichen Farbe lückenlos rechts unten des platzierten Steins liegen.

if(board[I][j] == color) {

counter++;

}

else {

break;

}

}

if (counter >= 6) {

return true;

}

return false;

}


/**

* Returnt true, wenn 6 oder mehr Steine lückenlos in einer Diagonalen von

* rechts oben nach links unten sind.

* [USER=49078]@Return[/USER]

*/

public static boolean checkDiagonal2() {

int counter = 1; // Anzahl der lückenloses Steine, der gleichen Farbe.

for(int i = r - 1, j = s + 1; i >= 0 && j < y; i--, j++) { // zaehlt wieviele Steine der gleichen Farbe lückenlos rechts oben des platzierten Steins liegen.

if(board[I][j] == color) {

counter++;

}

else {

break;

}

}

if (counter >= 6) {

return true;

}

for(int i = r + 1, j = s - 1; i < x && j >= 0; i++, j--){ // zaehlt wieviele Steine der gleichen Farbe lückenlos links unten des platzierten Steins liegen.

if(board[I][j] == color) {

counter++;

}

else {

break;

}

}

if (counter >= 6) {

return true;

}

return false;


}

}
 
Zuletzt bearbeitet von einem Moderator:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
xFearofdarkness Feinde überlappen sich in Java Spiel Spiele- und Multimedia-Programmierung 3
ItundMathe1994 TicTacToe Spiel programmieren Spiele- und Multimedia-Programmierung 2
JEP1 Hilfe bei Spiel Spiele- und Multimedia-Programmierung 1
P Pokemon Spiel Funktioniert nicht ? Spiele- und Multimedia-Programmierung 3
Leon.tr3x Mein erstes Programm/Spiel Spiele- und Multimedia-Programmierung 10
O Texas Hold'em Poker als Online-Spiel mit Freunden Spiele- und Multimedia-Programmierung 5
Drachenbauer Speicher-Tool für ein Spiel schreiben Spiele- und Multimedia-Programmierung 13
M Spiel Mühle-Programmierung Java Spiele- und Multimedia-Programmierung 9
Excess Spiel abzugeben Spiele- und Multimedia-Programmierung 1
I Superhelden - Spiel Spiele- und Multimedia-Programmierung 14
E Hauptmenü und Spiel ???? Spiele- und Multimedia-Programmierung 2
L Sound in Java Spiel Spiele- und Multimedia-Programmierung 5
R Interaktives Spiel Spiele- und Multimedia-Programmierung 5
L Spiel im Editor testen Spiele- und Multimedia-Programmierung 4
Jackii dispatchUncaughtException in Quiz Spiel mit GUI Layout Spiele- und Multimedia-Programmierung 6
D Textbasiertes Spiel Spiele- und Multimedia-Programmierung 8
K Android Spiel Programmieren Spiele- und Multimedia-Programmierung 6
L BrickBreaker Spiel Spiele- und Multimedia-Programmierung 3
A Spiel Figur ansprechen und bewegen Spiele- und Multimedia-Programmierung 3
it_is_all Dialogbox im Spiel - Text in Blöcke aufteilen Spiele- und Multimedia-Programmierung 4
F Koordinieren und Essen von Snake - Spiel Spiele- und Multimedia-Programmierung 14
G Entity Verwaltung in einem 2D Spiel Spiele- und Multimedia-Programmierung 1
E Möchte Spiel Programmieren Spiele- und Multimedia-Programmierung 7
A Spiel nach Abfrage beenden oder neustarten Spiele- und Multimedia-Programmierung 1
G Welten Generierung 2D Spiel Spiele- und Multimedia-Programmierung 4
G Java 2D Spiel mit LWJGL verbinden Spiele- und Multimedia-Programmierung 1
N Problem mit 2D Spiel Spiele- und Multimedia-Programmierung 17
T Probleme bei "Pixel-Fighting"-Spiel: Unausgewogene Mannschaften??? Spiele- und Multimedia-Programmierung 4
R Pong Spiel Problem Spiele- und Multimedia-Programmierung 1
L Coordinate Space JavaFX 2d Spiel Spiele- und Multimedia-Programmierung 0
C Vier Gewinnt Spiel Programmiertipp Spiele- und Multimedia-Programmierung 11
N Jump and run Spiel - wo anfangen / weitermachen? Spiele- und Multimedia-Programmierung 11
K Spiel zum zuordnen von Dienstgraden und Dienstgradabzeichen Spiele- und Multimedia-Programmierung 5
M Textbasiertes Spiel programmieren Spiele- und Multimedia-Programmierung 4
T 2d-Spiel Licht Spiele- und Multimedia-Programmierung 5
S Jump 'n' Run-Spiel Kollisionserkennung Spiele- und Multimedia-Programmierung 3
T Spiel rendern Spiele- und Multimedia-Programmierung 2
Grevak Sounds im Spiel Spiele- und Multimedia-Programmierung 5
B Fehlerhafte Mob Bewegungen in Tower Defense Spiel Spiele- und Multimedia-Programmierung 2
F Spiel ähnlich wie SimCity/o.ä programmieren Spiele- und Multimedia-Programmierung 5
X Erklärung zu einem Tic Tac Toe Spiel Spiele- und Multimedia-Programmierung 1
I Spectator Modus für Spiel ähnlich zu Terraria Spiele- und Multimedia-Programmierung 8
I Textbasiertes Spiel - Umsetzungsfrage & Schleifen Problem Spiele- und Multimedia-Programmierung 26
M Kollisions abfrage bei 3D spiel? Spiele- und Multimedia-Programmierung 12
D JAVA Basiertes Spiel aus dem Internet in eigenem Client laden Spiele- und Multimedia-Programmierung 1
P [Spiel]Welche Bilder sind gleich Spiele- und Multimedia-Programmierung 2
E GUI zum Spiel hinzufügen Spiele- und Multimedia-Programmierung 19
S 2D Spiel - Physics Spiele- und Multimedia-Programmierung 16
S 2D Spiel "Der Sprung" Spiele- und Multimedia-Programmierung 7
A 2D Spiel ohne Tiles Spiele- und Multimedia-Programmierung 10
V welche vorgehensweise beforzieht ihr bei einfachem Quizz Spiel ? Spiele- und Multimedia-Programmierung 4
S Quaxli's Heli Spiel läuft nicht nach Plan Spiele- und Multimedia-Programmierung 2
G Methode sleepen während das Spiel weiterläuft Spiele- und Multimedia-Programmierung 3
T Spiel Überprüfung Spiele- und Multimedia-Programmierung 3
P Spiel laggt nach unbestimmter Zeit tierisch. Spiele- und Multimedia-Programmierung 27
S Hilfe bei Spiel Spiele- und Multimedia-Programmierung 6
B Hauptmenü für Spiel Spiele- und Multimedia-Programmierung 1
W Spiel ist langsam/laggt Spiele- und Multimedia-Programmierung 18
J Ascii Spiel Spiele- und Multimedia-Programmierung 1
Androbin Mein Spiel will sich nicht zeichnen lassen !!! Spiele- und Multimedia-Programmierung 7
O Vollständige Musik in Spiel einbauen (wav - Format) Spiele- und Multimedia-Programmierung 8
Y Quiz Spiel Spiele- und Multimedia-Programmierung 1
J Conways Spiel des Lebens nachprogrammiert Spiele- und Multimedia-Programmierung 1
B Spiel Programmieren, die Anfänge Spiele- und Multimedia-Programmierung 6
D [OpenGL] Spiel in der Art von Age of Empires Spiele- und Multimedia-Programmierung 4
lord239123 suche Graphiker für ein Pokemon-Spiel Spiele- und Multimedia-Programmierung 6
S Spiel installeren lassen und organisieren Spiele- und Multimedia-Programmierung 3
J Lichtupdate in tile-basiertem Spiel Spiele- und Multimedia-Programmierung 4
P Erstes Spiel (Strategie) Spiele- und Multimedia-Programmierung 31
J Mein erstes Spiel [Spielevorstellung] Spiele- und Multimedia-Programmierung 2
Bananabert Spiel Renderer Images und Strings Spiele- und Multimedia-Programmierung 4
N Spiel Menü error ! Spiele- und Multimedia-Programmierung 5
S Anfangsmenü mit Spiel verknüpfen Spiele- und Multimedia-Programmierung 16
S Spiel ruckelt trotz 50 fps Spiele- und Multimedia-Programmierung 16
D Spiel-Bilddaten auswerten Spiele- und Multimedia-Programmierung 7
Creylon [LWJGL] Spiel Exportieren Spiele- und Multimedia-Programmierung 2
L Hilfe bei Klassendesign für Spiel Spiele- und Multimedia-Programmierung 2
Devil0s Spiel laggt trotz 90 FPS (bei der Anzeige) Spiele- und Multimedia-Programmierung 9
N Webanwendung als eine Art Spiel Spiele- und Multimedia-Programmierung 8
L Korrekte Darstellung von Wasser in 2D Spiel Spiele- und Multimedia-Programmierung 4
F Ideen für spiel Spiele- und Multimedia-Programmierung 4
J wohin mit der Logik des Spiel Spiele- und Multimedia-Programmierung 2
R Experimente mit Quaxlis Spiel Spiele- und Multimedia-Programmierung 12
W Spiel-Grundlagen selbst austüfteln: Kollisionen? Spiele- und Multimedia-Programmierung 3
Kenan89 Java 2D Spiel Spiele- und Multimedia-Programmierung 39
M Automaten Spiel Spiele- und Multimedia-Programmierung 27
J Tic tac toe spiel Neustart Spiele- und Multimedia-Programmierung 5
S 2D Spiel im Vollbild langsamer als im Fenster Spiele- und Multimedia-Programmierung 11
A TicTacToe Spiel Spiele- und Multimedia-Programmierung 3
S Verbesserungvorschläge Spiel Z Spiele- und Multimedia-Programmierung 31
S Spiel abbrechen Spiele- und Multimedia-Programmierung 3
J Greenfoot "Little Crab" Spiel Erweiterungen Spiele- und Multimedia-Programmierung 6
P Spiel HUD erstellen Spiele- und Multimedia-Programmierung 6
E Spiel neustarten Spiele- und Multimedia-Programmierung 4
S Aufbau von Klassen für Spiel Spiele- und Multimedia-Programmierung 13
A Grundlagensuche für Spiel Spiele- und Multimedia-Programmierung 8
V Basisprinzipien Breakout-Spiel Spiele- und Multimedia-Programmierung 8
E Spiel startet nach exportieren nicht Spiele- und Multimedia-Programmierung 7
Gossi Erweiterung von Quaxlis Heli-Spiel Spiele- und Multimedia-Programmierung 16
M Hilfe bei Spiel Programmierung Spiele- und Multimedia-Programmierung 4

Ähnliche Java Themen

Neue Themen


Oben