javaFX 오목 미니 게임 실현

7995 단어 javaFX오목
javaFX 오목 게임 실현,참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
과정 디자인 을 할 때 이것 을 하고 공유 하면 여러분 이 참고 하 세 요.사진 은 게임 운영 과정 입 니 다.
가장 아래 의 코드 는 전체 수 요 를 실현 하 는 것 이다.



package Version3;

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.input.MouseButton;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Line;
import javafx.stage.Stage;

public class Version3 extends Application {

 private char winer = ' ';//  
 TextField tf = new TextField();
 private char whoseTurn = (int)(Math.random() * 2) == 0 ? 'X' : 'O';//    
 private int numberOfClick = 0;
 @Override
 public void start(Stage primaryStage) {
 Button bt = new Button("New game"); //  
 //TextField tf = new TextField();
 
 Cell [] cell = new Cell[9];
 for(int i=0; i<9 ;i++){
 cell[i] = new Cell(2,1);
 }
 
 GridPane gpane = new GridPane();
 int num =0;
 for(int i=0; i<3 ;i++){
 for(int j=0; j<3 ;j++){
 gpane.add(cell[num],j,i);
 num++;
 }
 }
 
 tf.setEditable(false);//      
 
 BorderPane pane = new BorderPane();
 pane.setTop(bt);
 pane.setAlignment(bt,Pos.CENTER);
 pane.setCenter(gpane);
 pane.setBottom(tf);
 
 //           
 bt.setOnAction(e ->{
 gpane.getChildren().clear();
 
 for (int i = 0; i < 9; i++) {
  cell[i] = new Cell(2,1);
  
 }
 
 int k = 0;
 for (int i = 0; i < 3; i++) {
  for (int j = 0; j < 3; j++) {
  gpane.add(cell[k], j, i);
  k++;
  }
 }
 
 whoseTurn = (int)(Math.random() * 2) == 0 ? 'X' : 'O';
 tf.setText(whoseTurn == 'X' ? "X's turn" : "O's turn");
  
 setListenerForCells(cell);//         
 
 winer = ' ';
 });
 
 //            
 tf.setText(whoseTurn == 'X' ? "X's turn" : "O's turn");
 
 //             
 setListenerForCells(cell);
 
 Scene scene = new Scene(pane,495,550);
 primaryStage.setTitle("version3");
 primaryStage.setScene(scene);
 primaryStage.show();
 }

 public static void main(String[] args) {
 launch(args);
 }
 
 public void judgeWhoWin(Cell[] cell){
 //    
 for (int i = 0; i < 3; i++) {
  if (cell[i * 3].contain == 'X'&& cell[i * 3 + 1].contain == 'X'&& cell[i * 3 + 2].contain == 'X') {
  winer = 'X';
  } else if (cell[i * 3].contain == 'O'&& cell[i * 3 + 1].contain == 'O'&& cell[i * 3 + 2].contain == 'O') {
  winer = 'O';
  }
 }
 
 //    
 for (int i = 0; i < 3; i++) {
  if (cell[i].contain == 'X'&& cell[i + 3].contain == 'X'&& cell[i + 6].contain == 'X') {
  winer = 'X';
  } else if (cell[i].contain == 'O'&& cell[i + 3].contain == 'O'&& cell[i + 6].contain == 'O') {
  winer = 'O';
  }
 }
 
 //    、    
 if (cell[0].contain == 'X' && cell[4].contain == 'X' && cell[8].contain == 'X'||
  cell[2].contain == 'X' && cell[4].contain == 'X' && cell[6].contain == 'X') {
  winer = 'X';
 } else if (cell[0].contain == 'O' && cell[4].contain == 'O' && cell[8].contain == 'O'||
  cell[2].contain == 'O' && cell[4].contain == 'O' && cell[6].contain == 'O') {
  winer = 'O';
 }
 }

 //      #               X or O
 public void setListenerForCells(Cell[] cell){
 numberOfClick = 0;//      
 for (int i = 0; i < cell.length; i++) {
 Cell temp = cell[i];
 
 temp.setOnMouseClicked(e -> {
 if (winer == ' ') {
  if (whoseTurn == 'X' 
  && e.getButton() == MouseButton.PRIMARY 
  && temp.editable) {
  temp.setContain(1,1);
  
  temp.editable = false;//    
  
  winer = ' ';
  whoseTurn = 'O';//      
  
  judgeWhoWin(cell);//    
  if(winer == ' '){
  numberOfClick++;
  if(numberOfClick == 9){
  tf.setText("the game is a draw");
  }
  else{
  tf.setText(whoseTurn + "'s turn");
  }
  }
  else{
  tf.setText("Game is over, and the winner is "+ winer);
  }
  
  } else if (whoseTurn == 'O' 
  && e.getButton() == MouseButton.PRIMARY 
  && temp.editable) {
  temp.setContain(1,2);
  
  temp.editable = false;//    
  
  winer = ' ';
  whoseTurn = 'X';//      
  
  judgeWhoWin(cell);//    
  if(winer == ' '){
  numberOfClick++;
  if(numberOfClick == 9){
  tf.setText("the game is a draw");
  }
  else{
  tf.setText(whoseTurn + "'s turn");
  }
  }
  else{
  tf.setText("Game is over, and the winner is "+ winer);
  } 
  }
 }
 });  
 }
}


class Cell extends BorderPane{
 public char contain =' ';
 int num1 = 0,num2 = 0;
 public boolean editable = true;

 public Cell(int num1,int num2){
 super.setPadding(new Insets(5));
 super.setStyle("-fx-border-color: black");
 super.setPrefSize(2000,2000);
 this.setContain(num1,num2);
 }
 
 public void setContain(int num1,int num2){
 if(num1==1 && editable){
 if(num2==1){
  //  X  
  Line line1 = new Line(0,0,150,150);
  Line line2 = new Line(150,0,0,150);
  StackPane pane1 = new StackPane();
  pane1.getChildren().addAll(line1,line2); 
  super.setCenter(pane1);
  
  contain = 'X';
 }
 
 else if(num2==2 && editable){
  ///  O  
  Circle circle = new Circle(75);//   75 
  circle.setFill(Color.WHITE);//     
  circle.setStroke(Color.BLACK);//     
  StackPane pane2 = new StackPane();
  pane2.getChildren().add(circle);
  super.setCenter(pane2);
  
  contain = 'O';
 } 
 }
 }
 }
}
더 많은 재 미 있 는 클래식 게임 을 통 해 주 제 를 실현 하고 여러분 에 게 공유 합 니 다.
C++클래식 게임 모음
python 클래식 게임 모음
python 러시아 블록 게임 집합
JavaScript 클래식 게임 을 계속 합 니 다.
javascript 고전 게임 모음
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기