javafx逻辑实现五子棋基本功能(悔棋,重新开始,保存棋谱,复盘,人人对战,单机模式)
做这个项目,本身目的仅仅是想应用学过的知识做个小项目,想知道它们在实际开发中应该如何应用,顺便帮我对几个月来的学习的知识更深入的了解。等我学完了数据库,再做个更大的项目,应该不成问题。所以,这篇文章适合学完Java基础的人学习,这也是我对自己Java学习第一阶段做的总结。
这是关于棋子文件上传代码
saveButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
//创建保存框对象
FileChooser fileChooser=new FileChooser();
if(!isWin)
return;
//展示Window window = ;
File file=fileChooser.showSaveDialog(stage);
BufferedWriter bw=null;
if (file!=null){
try {
bw=new BufferedWriter(new FileWriter(file) );
//一次写一个字符串
for (int i=0;i<count;i++){
Chess chess=chesses[i];
bw.write(chess.getX()+","+chess.getY()+","+chess.getColor());
bw.newLine();
bw.flush();
}
} catch (Exception e) {
System.out.println("保存失败");
}finally {
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
System.out.println(file);
}
});
复盘代码
replay.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
//首先应该在点击复盘的时候清空所有棋子
//怎么删除呢,怎么添加怎么删除,pane.getChildren()是一个单列集合
pane.getChildren().removeIf(new Predicate<Object>() {
@Override
public boolean test(Object obj) {
return obj instanceof Circle;
}
});
//清空了,为什么会是白子先走,而且有些地方仍旧显示有棋子
isBLACK=true;
chesses =new Chess[100];
count=0;
isWin=false;
FileChooser fileChooser=new FileChooser();
file=fileChooser.showOpenDialog(stage);
if (file!=null) {
//关闭画板鼠标点击事件
pane.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
return;
}
});
Button up = up();
pane.getChildren().add(up);
Button down = down();
pane.getChildren().add(down);
movingdown(down);
movingup(up);
}
else
return;
}
});