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 고전 게임 모음
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
javaFX 오목 미니 게임 실현javaFX 오목 게임 실현,참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다. 과정 디자인 을 할 때 이것 을 하고 공유 하면 여러분 이 참고 하 세 요.사진 은 게임 운영 과정 입 니 다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.