salut! C'est une affaire privée, mais j'ai déménagé à Tokyo à partir d'avril et suis devenu un nouveau membre de la société. Nous sommes actuellement en cours de formation. (La formation dure 3 mois.) Lors de la formation, tous les ingénieurs sont censés apprendre Java. La pensée orientée objet est importante dans tout langage de programmation, Java est un langage conçu avec l'orientation objet à l'esprit, et je pense que c'est un bon langage à apprendre en premier. Il fonctionne également de la même manière sur Mac, Windows et Linux, de sorte qu'il peut être largement utilisé sans dépendre de l'ordinateur. Bien que j'aie étudié les tableaux, pour les boucles, les méthodes et l'orientation des objets, N'est-il pas difficile pour beaucoup de gens de se faire une idée de la manière dont ils fonctionnent réellement ensemble sur les logiciels? Par conséquent, cette fois, je voudrais créer une application Othello qui s'exécute sur CLI et mettre les connaissances acquises en pratique. Je pense que la manière la plus efficace d'étudier la programmation est de «créer et publier une application avec votre propre pouvoir». Maintenant, entrons dans le sujet principal!
Hello, Othello Avez-vous déjà fait Othello? Il y a des cadres blancs et noirs, et lorsque vous prenez en sandwich le cadre de l'adversaire, il change à la couleur de votre propre cadre. En fin de compte, celui avec le plus de pièces de votre propre couleur l'emporte. N'est-il pas approprié de diviser les classes comme suit lors de la création d'une application Othello? Une classe de cadre qui contient l'état du blanc ou du noir, la position du cadre, etc. Classe de terrain qui juge le retournement d'un cadre Classe de jeu qui contrôle l'ensemble du jeu Afin d'avoir une idée de l'ambiance, plaçons d'abord un cadre sur le plateau et affichons-le!
Les informations sur chaque image d'Othello sont traitées dans la classe frame. L'état du cadre (blanc, noir, vide) est géré par la variable d'état de type String. Ici, le noir est B, le blanc est W et le ciel est E. Implémentez la méthode setState () pour changer l'état et la méthode getPosition () pour obtenir la position.
Koma.java
public class Koma{
private String state; //La couleur d'Othello est noir ... B, blanc ... W, ciel ... E
private int x;
private int y;
public Koma(int x,int y){
this.state = "E";
this.x = x;
this.y = y;
}
public String getState(){
return this.state;
}
public void setState(String state){
this.state = state;
}
public int[] getPosition(){
int[]pos = {this.x, this.y};
return pos;
}
}
Dans la classe de terrain, vous pouvez placer des pièces sur le plateau et les retourner. La méthode prepare () qui initialise toutes les trames de la carte dans l'état E, Implémentez la méthode feature () qui visualise la situation sur la carte et la renvoie sur la ligne de commande.
Field.java
import java.util.ArrayList;
import java.util.List;
public class Field{
private List<Koma> komalist;
private int ynum = 0;
private int xnum = 0;
public Field(int xnum, int ynum){
this.xnum = xnum;
this.ynum = ynum;
}
public void prepare(){
this.komalist = new ArrayList<>();
for(int y=0;y<this.ynum;y++){
for(int x=0;x<this.xnum;x++){
Koma koma = new Koma(x,y);
this.komalist.add(koma);
}
}
}
public Koma getKoma(int y, int x){
for(Koma koma : this.komalist){
int[]pos = koma.getPosition();
if(pos[0]==y && pos[1]==x){
return koma;
}
}
return null;
}
public void putKoma(int x, int y, String state){
Koma koma = this.getKoma(x,y);
koma.setState(state);
}
public void feature(){
String [][] board = new String[ynum][xnum];
for(Koma koma : this.komalist){
int[] pos = koma.getPosition();
String state = koma.getState();
board[pos[1]][pos[0]] = state;
}
System.out.println("\n\t0\t1\t2\t3\t4\t5\n");
for(int y=0;y<board.length;y++){
System.out.print(y+"\t");
for(int x=0;x<board[0].length;x++){
String b = board[y][x];
System.out.print(b+"\t");
}
System.out.println("\n");
}
}
}
Appelez la classe de champ et essayez de mettre un cadre noir à la position x = 2, y = 2.
Game.java
public class Game{
public static void main(String[] args){
Field field = new Field(6,6);
field.prepare();
field.putKoma(2,2,"B");
field.feature();
}
}
$ javac Game.java
$ java Game
Compilez et exécutez un programme Java.
La position de x = 2, y = 2 est B et les autres endroits sont E!
Ensuite, nous ajouterons un processus pour retourner le cadre de l'adversaire lors du placement du cadre. Imaginons Othello concrètement. (En supposant une situation simple de 4✕4 pour l'explication)
Dans la situation illustrée sur la figure, que se passe-t-il si vous placez un cadre blanc sur B-1? C'est si facile! Tous les cadres noirs entre les deux sont basculés vers des cadres blancs. Les cadres noirs sur B-2 et B-3 se transforment en cadres blancs.
Mais qu'en est-il de cette affaire? Il y a beaucoup d'endroits à inverser cette fois! Grâce au cadre blanc en D-1, le cadre noir en C-1 est inversé. Grâce au cadre blanc sur D-3, le cadre noir sur C-2 est inversé. Grâce aux cadres blancs en B-4, les cadres noirs en B-2 et B-3 sont inversés.
Maintenant, mettons cela dans l'algorithme. Cela semble un peu compliqué. Comme vous pouvez le voir dans les deux exemples ci-dessus, il existe des règles communes pour retourner des pièces. Autrement dit, dans une certaine direction, le cadre blanc et le cadre blanc prennent en sandwich le cadre noir. Il y a huit directions (nord, nord-est, est, sud-est, sud, sud-ouest, ouest, nord-ouest) sur la carte, donc le traitement du jugement doit être effectué pour toutes les directions. Le fait que le cadre blanc et le cadre blanc prennent en sandwich le cadre noir est un peu bâclé. Si vous mâchez un peu plus pour que cela puisse être décrit dans le déroulement du programme, ce sera comme suit. Si le cadre que vous prévoyez de placer est un cadre blanc
Considérons l'exemple précédent. Si vous obtenez la liste de cadres dans 8 directions (nord, nord-est, est, sud-est, sud, sud-ouest, ouest, nord-ouest) à partir de la position de B-1, ce sera comme suit.
direction | Liste des cadres |
---|---|
Nord | - |
Nord-est | - |
est | noir-blanc |
Sud-est | noir-blanc |
Sud | noir-noir-blanc |
Sud-ouest | noir |
Ouest | blanc |
Nord Ouest | - |
La couleur du cadre à placer ensuite étant le blanc, le retournement se produira dans les trois directions est, sud-est et sud.
Ce serait intéressant si nous pouvions faire de la communication réseau et jouer contre des amis, Cela semble être un peu élevé, alors jouons contre le CPU cette fois. Créer un processeur puissant est un peu difficile, mais un processeur faible peut le faire tout de suite. Un processeur faible peut être implémenté comme suit.
C'est tout.
Othello a une règle selon laquelle il ne doit être placé que là où le retournement se produit (certainement) Par exemple, si le prochain cadre à placer est blanc dans la situation illustrée dans l'image ci-dessous, Il y a quatre endroits qui peuvent être placés en orange (A-3, B-4, C-1, D-2). Sélectionnez au hasard un de ces quatre endroits et placez-y le cadre Disons que "le CPU a placé un cadre".
Jusqu'à présent, j'ai expliqué le programme Othello. Je pense qu'il est important d'écrire un programme tout en ressentant la valeur de l'orientation objet! Cette fois
Le code est facile à lire pour les humains en le divisant en trois parties. Et s'il n'y a pas d'orientation d'objet et que ceux-ci sont procéduraux? Je pense que c'est très, très difficile. L'important est de penser par vous-même, de concevoir et de coder la classe. Bien sûr, ça peut être Othello, ça ne doit pas être Othello, ça peut être Blackjack, ça peut être un serveur Web, donc quand vous apprenez un langage de programmation, vous avez l'expérience de créer quelque chose à partir de zéro. Regardons!
Recommended Posts