Stringcolor=(i+j)%2==0?
"white":
"dimgray";
gc.setFill(Paint.valueOf(color));
gc.fillRect(i*SIZE,j*SIZE,SIZE,SIZE);
}
}
}
}
packageone.view;
importjavafx.geometry.Insets;
importjavafx.geometry.Pos;
importjavafx.scene.control.Button;
importjavafx.scene.control.RadioButton;
importjavafx.scene.control.TextField;
importjavafx.scene.control.ToggleGroup;
importjavafx.scene.layout.VBox;
importjavafx.scene.text.Font;
publicclassConsoleView{
privateTextFieldtextField;
privateButtonset;
privateRadioButton[]modeSelection;
privateToggleGrouptgroup;
privateButton[]function;
privateVBoxconsole;
privateFontfont;
privatestaticConsoleViewconsoleView=null;
publicstaticConsoleViewgetInstance(){
if(consoleView==null)
consoleView=newConsoleView();
returnconsoleView;
}
privateConsoleView(){
font=Font.font(20);
tgroup=newToggleGroup();
textField=newTextField();
textField.setPrefSize(120,40);
textField.setFont(font);
set=newButton("SetN");
set.setPrefSize(100,28);
set.setFont(font);
modeSelection=newRadioButton[2];
for(inti=0;i<2;++i){
modeSelection[i]=newRadioButton();
modeSelection[i].setFont(font);
modeSelection[i].setToggleGroup(tgroup);
}
function=newButton[5];
for(inti=0;i<5;i++){
function[i]=newButton();
function[i].setFont(font);
function[i].setPrefSize(100,28);
}
function[3].setDisable(true);
function[2].setDisable(true);
console=newVBox(20);
setModule();
loadModule();
}
publicButtongetSet(){
returnset;
}
publicTextFieldgetTextField(){
returntextField;
}
publicRadioButtongetMode(inti){
returnmodeSelection[i];
}
publicButtongetFunction(inti){
returnfunction[i];
}
publicVBoxgetConsole(){
returnconsole;
}
privatevoidsetModule(){
textField.setPromptText("8~13");
modeSelection[0].setText("PlayMode");
modeSelection[0].setSelected(true);
modeSelection[1].setText("SoluMode");
modeSelection[1].setSelected(false);
function[0].setText("Check");
function[1].setText("Reset");
function[2].setText("Last");
function[3].setText("Next");
function[4].setText("Quit");
}
privatevoidloadModule(){
console.getChildren().addAll(modeSelection);
console.getChildren().addAll(textField,set);
console.getChildren().addAll(function);
VBox.setMargin(textField,newInsets(20,0,0,0));
VBox.setMargin(function[0],newInsets(20,0,0,0));
console.setAlignment(Pos.CENTER);
}
}
packageone.view;
importjavafx.application.Application;
importjavafx.geometry.Insets;
importjavafx.scene.Scene;
importjavafx.scene.layout.BorderPane;
importjavafx.stage.Stage;
importone.control.ChessBoardControl;
importone.control.ConsoleControl;
publicclassMainFrameextendsApplication{
publicvoidstart(Stagestage){
BorderPaneborderPane=newBorderPane();
//getcomponents
ChessBoardboard=ChessBoard.getInstance();
ConsoleViewconsoleView=ConsoleView.getInstance();
//putcomponentsintorightplace
borderPane.setCenter(board.getCanvas());
borderPane.setRight(consoleView.getConsole());
//setmargin
BorderPane.setMargin(consoleView.getConsole(),newInsets(0,20,0,20));
//addalltheevents
ChessBoardControl.addChessBoardEvents();
ConsoleControl.addConsoleEvents();
//run
Scenescene=newScene(borderPane);
stage.setScene(scene);
stage.show();
}
}
packageone.control;
importjavafx.scene.image.Image;
importone.model.EightQueenModel;
importone.model.Queen;
importone.model.QueenList;
importone.view.ChessBoard;
publicclassChessBoardControl{
privatestaticChessBoardchessBoard=ChessBoard.getInstance();
privatestaticEightQueenModeleightQueenModel=EightQueenModel.getInstance();
privatestaticQueenListqlist=QueenList.getInstance();
privatestaticintnumOfQueen=0;
privateChessBoardControl(){}
publicstaticvoidaddChessBoardEvents(){
addQueenEvent();
}
publicstaticvoidaddQueenEvent(){
chessBoard.getCanvas().setOnMouseClicked(event->{
if(numOfQueendoubletempX=event.getX();
doubletempY=event.getY();
intx=(int)(tempX/ChessBoard.SIZE);
inty=(int)(tempY/ChessBoard.SIZE);
//positionisvalid
if(eightQueenModel.addQueen(x,y)){
Queenqueen=newQueen(x,y);
qlist.add(queen);
drawQueen(queen);
numOfQueen++;//makesureonly8queensareavailable
}
}
});
}
publ