・ Pierres alternées noires et blanches en carrés 5x5 (modifiables) ・ Gagnez lorsque tous les carrés verticaux, horizontaux et diagonaux sont remplis de pierres de même couleur
・ Classe de pierre → Gérer les informations sur la pierre ・ Classe de conseil → Gérer les informations du conseil ・ Classe de juge → Gérer le jugement de victoire · Interface constante → Gérer les constantes ・ Classe de jeu → Résumer comme un jeu
Stone.java
package Gomokunarabe;
public class Stone implements Constant{
Board board = new Board();
//Vrai si la pierre peut être placée normalement,Faux si non placé
private boolean stoneSet;
public boolean getStoneSet() {
return stoneSet;
}
public void setStoneSet(boolean stoneSet) {
this.stoneSet = stoneSet;
}
//Champ concernant la position de la pierre
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;
}
//Traitement de placement de pierre
@SuppressWarnings("resource")
public void stoneConfig(boolean stoneColor) {
//L'argument stoneColor est vrai pour le noir, faux pour le blanc
System.out.println("Veuillez saisir la position de la pierre");
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("Veuillez choisir un endroit où aucune pierre n'est placée");
}
}
else {
setStoneSet(false);
System.out.println("0~"+(BOARD_LENGTH-1)+"Veuillez saisir l'un des");
}
}
catch(Exception e) {
setStoneSet(false);
System.out.println("Veuillez saisir sous forme d'entier");
}
}
}
Board.java
package Gomokunarabe;
public class Board implements Constant{
//Enregistrer la position de la pierre
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];
}
//Noir si vrai, blanc si faux
private Boolean stoneColor;
public Boolean isStoneColor() {
return stoneColor;
}
public void setStoneColor(Boolean stoneColor) {
this.stoneColor = stoneColor;
}
public void firstShowBoard() {
//Affichage du numéro sur le tableau
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);
}
//À toutes les coordonnées du tableau de position"□"Boutique
//Empêcher null lors du référencement de la position
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("");
}
}
//Méthode de création de tableau Go
public void board(int tate, int yoko, boolean stoneColor) {
//stoneColor est vrai et noir,Blanc avec faux
setStoneColor(stoneColor);
for(int i=0; i<BOARD_LENGTH; i++) {
//La variable i dans l'instruction pour signifie vertical
for(int j=0; j<BOARD_LENGTH; j++) {
//La variable j dans l'instruction pour signifie 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() {
//La variable win est-elle 5?-Lorsque la somme de 5 est obtenue, true est renvoyé et la victoire est jugée.
//Jugement de victoire en ligne
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();
}
}
//Jugement de la victoire de la colonne
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();
}
}
//Jugement de victoire dans la colonne diagonale gauche
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();
}
//Jugement de victoire dans la colonne diagonale droite
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{
/*
*En changeant la constante concernant la longueur du go board
*Changer les carrés
*/
//Aller à la longueur de la planche
int BOARD_LENGTH = 5;
//Pierre noire
String BLACK_STONE = "●";
//Pierre blanche
String WHITE_STONE = "〇";
//Vide
String EMPTY_STONE = "□";
}
Game.java
package Gomokunarabe;
public class Game {
Stone stone = new Stone();
Judge judge = new Judge();
Board board = new Board();
//Vrai pour continuer le jeu, faux pour terminer le jeu
private boolean gameLoop = true;
public boolean isGameLoop() {
return gameLoop;
}
public void setGameLoop(boolean gameLoop) {
this.gameLoop = gameLoop;
}
//Noir pour les nombres impairs, blanc pour les nombres pairs
private int loop=1;
public int getLoop() {
return loop;
}
public void setLoop(int loop) {
this.loop = loop;
}
public void gameStart() {
board.firstShowBoard();
while(isGameLoop()) {
//Si gameLoop est vrai, continuez le jeu
if(getLoop()%2 == 1) {
//Noir lorsque la boucle est bizarre
System.out.println("C'est le tour noir");
//Tour noir avec un vrai argument
stone.stoneConfig(true);
if(stone.getStoneSet()) {
if(!judge.winJudge()) {
//winJudge est faux pour continuer le jeu, vrai pour gagner
//stoneSet est vrai et après le prochain virage blanc
setLoop(2);
}
else {
System.out.println("Victoire noire!\n Terminez le jeu!");
setGameLoop(false);
}
}
else {
setLoop(1);
}
}
//Blanc lorsque la boucle est régulière
else{
System.out.println("C'est virage blanc");
stone.stoneConfig(false);
if(stone.getStoneSet()) {
if(!judge.winJudge()) {
//winJudge est faux pour continuer le jeu, vrai pour gagner
//stoneSet est vrai et après le prochain virage blanc
setLoop(1);
}
else {
System.out.println("Victoire blanche!\n Terminez le jeu!");
setGameLoop(false);
}
//stoneSet est vrai et passe au virage noir
}
else {
setLoop(2);
}
}
}
}
}
Main.java
package Gomokunarabe;
public class Main {
public static void main(String[] args) {
Game game = new Game();
game.gameStart();
}
}
★ Cinq rangées ★ 0,1,2,3,4 0 1 2 3 4 □□□□□ □□□□□ □□□□□ □□□□□ □□□□□ C'est le tour noir Veuillez saisir la position de la pierre 0 0 ●□□□□ □□□□□ □□□□□ □□□□□ □□□□□ C'est virage blanc Veuillez saisir la position de la pierre 0 4 ●□□□〇 □□□□□ □□□□□ □□□□□ □□□□□ C'est le tour noir Veuillez saisir la position de la pierre 1 1 ●□□□〇 □●□□□ □□□□□ □□□□□ □□□□□ C'est virage blanc Veuillez saisir la position de la pierre 1 4 ●□□□〇 □●□□〇 □□□□□ □□□□□ □□□□□ C'est le tour noir Veuillez saisir la position de la pierre 2 2 ●□□□〇 □●□□〇 □□●□□ □□□□□ □□□□□ C'est virage blanc Veuillez saisir la position de la pierre 2 0 ●□□□〇 □●□□〇 〇□●□□ □□□□□ □□□□□ C'est le tour noir Veuillez saisir la position de la pierre 3 3 ●□□□〇 □●□□〇 〇□●□□ □□□●□ □□□□□ C'est virage blanc Veuillez saisir la position de la pierre 2 4 ●□□□〇 □●□□〇 〇□●□〇 □□□●□ □□□□□ C'est le tour noir Veuillez saisir la position de la pierre 4 4 ●□□□〇 □●□□〇 〇□●□〇 □□□●□ □□□□● Victoire noire! Terminez le jeu!