[JAVA] Fünfäugiges Spiel

(Regel)

・ Schwarze und weiße abwechselnde Steine in 5x5 (veränderbaren) Quadraten ・ Gewinnen Sie, wenn alle vertikalen, horizontalen und diagonalen Quadrate mit den gleichen Farbsteinen gefüllt sind

(Jede Datei)

・ Steinklasse → Steininformationen verwalten ・ Board-Klasse → Board-Informationen verwalten ・ Richterklasse → Verwalten Sie das Siegesurteil · Konstante Schnittstelle → Konstanten verwalten ・ Spielklasse → Als Spiel zusammenfassen

Stone.java


package Gomokunarabe;

public class Stone implements Constant{
	Board board = new Board();


	//Richtig, wenn der Stein normal platziert werden kann,Falsch, wenn nicht platziert
	private boolean stoneSet;
	public boolean getStoneSet() {
		return stoneSet;
	}
	public void setStoneSet(boolean stoneSet) {
		this.stoneSet = stoneSet;
	}


	//Feld bezüglich der Steinposition
	private int tatePosition;
	private int yokoPosition;
	public int getTatePosition() {
		return tatePosition;
	}
	public void setTatePosition(int tatePosition) {
		this.tatePosition = tatePosition;
	}
	public int getYokoPosition() {
		return yokoPosition;
	}
	public void setYokoPosition(int yokoPosition) {
		this.yokoPosition = yokoPosition;
	}


	//Steinplatzierungsverarbeitung
	@SuppressWarnings("resource")
	public void stoneConfig(boolean stoneColor) {
		//Argument stoneColor ist wahr für schwarz, falsch für weiß
		System.out.println("Bitte geben Sie die Position des Steins ein");
		try {
		int tatePosition = new java.util.Scanner(System.in).nextInt();
		int yokoPosition = new java.util.Scanner(System.in).nextInt();
		if((tatePosition>=0&&yokoPosition>=0)&&(tatePosition<BOARD_LENGTH && yokoPosition<BOARD_LENGTH)) {
			if(Board.getPosition(tatePosition, yokoPosition)==EMPTY_STONE) {
				setTatePosition(tatePosition);
				setYokoPosition(yokoPosition);
				board.board(getTatePosition(), getYokoPosition(), stoneColor);
				setStoneSet(true);
			}
			else {
				setStoneSet(false);
				System.out.println("Bitte wählen Sie einen Ort, an dem keine Steine platziert sind");
			}
		}
		else {
			setStoneSet(false);
			System.out.println("0~"+(BOARD_LENGTH-1)+"Bitte geben Sie eines von ein");
		}
		}
		catch(Exception e) {
			setStoneSet(false);
			System.out.println("Bitte geben Sie als Ganzzahl ein");
		}
	}

}

Board.java


package Gomokunarabe;

public class Board implements Constant{
	//Speichern Sie die Position des Steins
	private static String[][] position = new String[BOARD_LENGTH][BOARD_LENGTH];
	public static void setPosition(int tate, int yoko, String stone) {
		position[tate][yoko] = stone;
	}
	public static String getPosition(int tate, int yoko) {
		return position[tate][yoko];
	}

	//Schwarz wenn wahr, weiß wenn falsch
	private Boolean stoneColor;
	public Boolean isStoneColor() {
		return stoneColor;
	}
	public void setStoneColor(Boolean stoneColor) {
		this.stoneColor = stoneColor;
	}

	public void firstShowBoard() {
		//Nummernanzeige auf der Tafel
		for(int i=0; i<BOARD_LENGTH;i++) {
			if(i==(BOARD_LENGTH-1)) {
				System.out.println(i);
				}
			else if(i==0) {
				System.out.print(" "+i+",");
			}
			else {
				System.out.print(i + ",");
				}
				}
		for(int j=0; j<BOARD_LENGTH; j++) {
			System.out.println(j);
		}

		//Bei allen Koordinaten des Positionsarrays"□"Geschäft
		//Verhindern Sie Null, wenn Sie auf die Position verweisen
		for(int i=0; i<BOARD_LENGTH;i++) {
			for(int j=0; j<BOARD_LENGTH; j++) {
				setPosition(i,j,EMPTY_STONE);
				System.out.print(EMPTY_STONE);
			}
			System.out.println("");
		}
	}

	//Go Board-Erstellungsmethode
	public void board(int tate, int yoko, boolean stoneColor) {
		//stoneColor ist wahr und schwarz,Weiß mit falsch
		setStoneColor(stoneColor);

		for(int i=0; i<BOARD_LENGTH; i++) {
			//Die Variable i in für Anweisung bedeutet vertikal
			for(int j=0; j<BOARD_LENGTH; j++) {
				//Die Variable j in für Anweisung bedeutet horizontal
				if((i==tate) && (j==yoko)) {
					if(isStoneColor()) {
						setPosition(tate,yoko,BLACK_STONE);
						System.out.print(getPosition(tate,yoko));
					}
					else{
						setPosition(tate,yoko,WHITE_STONE);
						System.out.print(getPosition(tate,yoko));
					}
				}
				else {
					System.out.print(getPosition(i,j));
				}
			}
			System.out.println("");
		}
	}
}

Judge.java


package Gomokunarabe;

public class Judge implements Constant{

	private int win = 0;

	public int getWin() {
		return win;
	}

	public void setWin(int win) {
		this.win += win;
	}
	public void resetWin() {
		this.win = 0;
	}


	public boolean winJudge() {
		//Ist die Gewinnvariable 5?-Wenn die Summe von 5 erhalten wird, wird true zurückgegeben und der Sieg beurteilt.

		//Row Sieg Urteil
		for(int i=0; i<BOARD_LENGTH; i++) {
			for(int j=0; j<BOARD_LENGTH; j++) {
				if(Board.getPosition(i, j)==BLACK_STONE) {
					setWin(1);
				}
				else if(Board.getPosition(i, j)==WHITE_STONE) {
					setWin(-1);
				}
				else {
					setWin(0);
				}
			}

			if((getWin()==BOARD_LENGTH) || (getWin()==(-BOARD_LENGTH))) {
				return true;
			}
			else {
				resetWin();
			}
		}

		//Säulensiegsurteil
		for(int j=0; j<BOARD_LENGTH; j++){
			for(int i=0; i<BOARD_LENGTH; i++)
			 {
				if(Board.getPosition(i, j)==BLACK_STONE) {
					setWin(1);
				}
				else if(Board.getPosition(i, j)==WHITE_STONE) {
					setWin(-1);
				}
				else {
					setWin(0);
				}
			}

			if((getWin()==BOARD_LENGTH) || (getWin()==(-BOARD_LENGTH))) {
				return true;
			}
			else {
				resetWin();
			}
		}

		//Siegesurteil in der linken diagonalen Spalte
		for(int i=0; i<BOARD_LENGTH; i++) {
			for(int j=0; j<BOARD_LENGTH; j++) {
				if((i==j) && (Board.getPosition(i, j)==BLACK_STONE)) {
					setWin(1);
				}
				else if((i==j) && (Board.getPosition(i, j)==WHITE_STONE)) {
					setWin(-1);
				}
				else {
					setWin(0);
				}
			}
			}
		if((getWin()==BOARD_LENGTH) || (getWin()==(-BOARD_LENGTH))) {
			return true;
		}
		else {
			resetWin();
		}

		//Siegesurteil in der rechten diagonalen Spalte
		for(int i=0; i<BOARD_LENGTH; i++) {
			for(int j=0; j<BOARD_LENGTH; j++) {
				if((i+j == (BOARD_LENGTH - 1)) && (Board.getPosition(i, j)==BLACK_STONE)) {
					setWin(1);
				}
				else if((i+j == (BOARD_LENGTH - 1)) && (Board.getPosition(i, j)==WHITE_STONE)) {
					setWin(-1);
				}
				else {
					setWin(0);
				}
			}
			}
		if((getWin()==BOARD_LENGTH) || (getWin()==(-BOARD_LENGTH))) {
			return true;
		}
		else {
			resetWin();
		}

		return false;
	}

	}




Constant.java


package Gomokunarabe;

public interface Constant{
	/*
	 *Durch Ändern der Konstante bezüglich der Länge des Go-Boards
	 *Ändern Sie die Quadrate
	 */

	//Gehen Sie Brettlänge
	int BOARD_LENGTH = 5;

	//Schwarzer Stein
	String BLACK_STONE = "●";
	//weißer Stein
	String WHITE_STONE = "〇";
	//Leer
	String EMPTY_STONE = "□";

}


Game.java


package Gomokunarabe;

public class Game {
	Stone stone = new Stone();
	Judge judge = new Judge();
	Board board = new Board();

	//Richtig, um das Spiel fortzusetzen, falsch, um das Spiel zu beenden
	private boolean gameLoop = true;
	public boolean isGameLoop() {
		return gameLoop;
	}
	public void setGameLoop(boolean gameLoop) {
		this.gameLoop = gameLoop;
	}

	//Schwarz für ungerade Zahlen, Weiß für gerade Zahlen
	private int loop=1;
	public int getLoop() {
		return loop;
	}
	public void setLoop(int loop) {
		this.loop = loop;
	}

	public void gameStart() {
		board.firstShowBoard();

		while(isGameLoop()) {
			//Wenn gameLoop wahr ist, setze das Spiel fort
			if(getLoop()%2 == 1) {
				//Schwarz, wenn die Schleife ungerade ist
				System.out.println("Es ist schwarz");
				//Black Turn mit echtem Argument
				stone.stoneConfig(true);
				if(stone.getStoneSet()) {
					if(!judge.winJudge()) {
					//winJudge ist falsch, um das Spiel fortzusetzen, wahr, um zu gewinnen
					//stoneSet ist wahr und nach der nächsten weißen Kurve
					setLoop(2);
					}
					else {
						System.out.println("Schwarzer Sieg!\n Beenden Sie das Spiel!");
						setGameLoop(false);
					}
				}
				else {
					setLoop(1);
				}
			}
			//Weiß, wenn die Schleife gerade ist
			else{
				System.out.println("Es ist weiß");
				stone.stoneConfig(false);

				if(stone.getStoneSet()) {
					if(!judge.winJudge()) {
						//winJudge ist falsch, um das Spiel fortzusetzen, wahr, um zu gewinnen
						//stoneSet ist wahr und nach der nächsten weißen Kurve
						setLoop(1);
						}
						else {
							System.out.println("Weißer Sieg!\n Beenden Sie das Spiel!");
							setGameLoop(false);
						}
					//stoneSet ist wahr und wechselt in die schwarze Kurve
					}
				else {
					setLoop(2);
				}
			}

		}
	}


}

Main.java


package Gomokunarabe;

public class Main {

	public static void main(String[] args) {
		Game game = new Game();
		game.gameStart();
	}
}

【Ausführungsergebnis】

★ Fünf Reihen ★ 0,1,2,3,4 0 1 2 3 4 □□□□□ □□□□□ □□□□□ □□□□□ □□□□□ Es ist schwarz Bitte geben Sie die Position des Steins ein 0 0 ●□□□□ □□□□□ □□□□□ □□□□□ □□□□□ Es ist weiß Bitte geben Sie die Position des Steins ein 0 4 ●□□□〇 □□□□□ □□□□□ □□□□□ □□□□□ Es ist schwarz Bitte geben Sie die Position des Steins ein 1 1 ●□□□〇 □●□□□ □□□□□ □□□□□ □□□□□ Es ist weiß Bitte geben Sie die Position des Steins ein 1 4 ●□□□〇 □●□□〇 □□□□□ □□□□□ □□□□□ Es ist schwarz Bitte geben Sie die Position des Steins ein 2 2 ●□□□〇 □●□□〇 □□●□□ □□□□□ □□□□□ Es ist weiß Bitte geben Sie die Position des Steins ein 2 0 ●□□□〇 □●□□〇 〇□●□□ □□□□□ □□□□□ Es ist schwarz Bitte geben Sie die Position des Steins ein 3 3 ●□□□〇 □●□□〇 〇□●□□ □□□●□ □□□□□ Es ist weiß Bitte geben Sie die Position des Steins ein 2 4 ●□□□〇 □●□□〇 〇□●□〇 □□□●□ □□□□□ Es ist schwarz Bitte geben Sie die Position des Steins ein 4 4 ●□□□〇 □●□□〇 〇□●□〇 □□□●□ □□□□● Schwarzer Sieg! Beende das Spiel!

Recommended Posts

Fünfäugiges Spiel
Janken-Spiel
Kinx Algorithm-Life-Spiel