導航:首頁 > 編程語言 > javafx繪制棋盤

javafx繪制棋盤

發布時間:2024-06-20 13:38:13

Ⅰ 用分治法求解Tromino謎題

import java.lang.Math;
import java.util.ArrayList;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class termino extends Application {
public static void main(String[] args) {
launch(args);
}
GridPane pane = new GridPane();
static ArrayList<Integer> list = new ArrayList<>();
TextField ktf = new TextField();
TextField xtf = new TextField();
TextField ytf = new TextField();
Button qrbutton = new Button("確認");
static int c=1;
int i=0;
int t=1;
static int [][] a= new int[100][100];

@Override
public void start(Stage primaryStage)
{
pane.add(getHBox(),0,0);
qrbutton.setOnAction(e->run());
Scene scene = new Scene(pane);
primaryStage.setTitle("termino");
primaryStage.setScene(scene);
primaryStage.show();
}

void run()
{
pane.getChildren().clear();
int dr = Integer.parseInt(xtf.getText());
int dc = Integer.parseInt(ytf.getText());
int s = Integer.parseInt(ktf.getText());
Tromino(0,0,dr,dc,(int)Math.pow(2,s));
for(int t = 0; t <(int)Math.pow(2,s) ; t++)
{
for (int j = 0; j <(int)Math.pow(2,s); j++)
System.out.printf("%-3d ", a[t][j]);
System.out.print("\n");
}
System.out.print("\n");
for(int j=0;j<list.size();j+=2)
{
Rectangle r = new Rectangle(30,30);
r.setFill(Color.GRAY);
pane.add(r,list.get(j+1),list.get(j));
}
for(int j=0;j<list.size();j++)
{
System.out.println(list.get(j));
}
Button button = new Button("下一步");
pane.add(button, list.size(), list.size());
button.setOnMouseClicked(e->{
i=0;
for(i=0;i<list.size();i+=2)
{
if(a[list.get(i)][list.get(i+1)]==t)
{
Rectangle r1 = new Rectangle(30,30);
r1.setFill(Color.RED);
pane.add(r1,list.get(i+1),list.get(i));
}
}
t++;
});

}

static void Tromino(int tr, int tc, int dr, int dc, int size)
{
if (size == 1)
return;

int t = c++;
int s = size/2;

//左上角
if (dr < tr + s&&dc < tc + s)
Tromino(tr, tc, dr, dc, s);
else
{
a[tr + s - 1][tc + s - 1] = t;
list.add(tr+s-1);
list.add(tc+s-1);
Tromino(tr, tc, tr + s - 1, tc + s - 1, s);
}

//右上角
if (dr < tr + s&&dc >= tc + s)
Tromino(tr, tc + s, dr, dc, s);
else
{
a[tr + s - 1][tc + s] = t;
list.add(tr+s-1);
list.add(tc+s);
Tromino(tr, tc + s, tr + s - 1, tc + s, s);
}

//左下角
if (dr >= tr + s&&dc < tc + s)
Tromino(tr + s, tc, dr, dc, s);
else
{
a[tr + s][tc + s - 1] = t;
list.add(tr+s);
list.add(tc+s-1);
Tromino(tr + s, tc, tr + s, tc + s - 1, s);
}

//右下角
if (dr >= tr + s&&dc >= tc + s)
Tromino(tr + s, tc + s, dr, dc, s);
else
{
a[tr + s][tc + s] = t;
list.add(tr+s);
list.add(tc+s);
Tromino(tr + s, tc + s, tr + s, tc + s, s);
}
}

private HBox getHBox()
{
HBox hbox= new HBox(10);
hbox.setPadding(new Insets(15,15,15,15));
hbox.setStyle("-fx-background-color:gold");
hbox.getChildren().add(new Label("輸入行數"));
hbox.getChildren().add(ktf);
hbox.getChildren().add(new Label("輸入空位置行數"));
hbox.getChildren().add(xtf);
hbox.getChildren().add(new Label("輸入空位置列數"));
hbox.getChildren().add(ytf);
hbox.getChildren().add(qrbutton);
return hbox;
}
}

閱讀全文

與javafx繪制棋盤相關的資料

熱點內容
動漫圖片的文件格式 瀏覽:560
黑衣緊身美女跳小蘋果 瀏覽:670
無法收縮資料庫 瀏覽:216
java中獲取二維數組的長度 瀏覽:510
手機裡面的數據線怎麼接 瀏覽:491
微信轉帳是紅包嗎 瀏覽:748
如何學會函數編程 瀏覽:985
js賦值高度 瀏覽:940
錄像機登錄密碼 瀏覽:94
中斷程序格式 瀏覽:543
微信電話本批量刪除聯系人 瀏覽:439
hp5200固件升級文件 瀏覽:176
除了問卷星還有哪裡收集數據 瀏覽:387
如何編程五子棋盤 瀏覽:747
微信相冊空間 瀏覽:839
蘋果怎麼刷回935 瀏覽:437
linux的模板文件在哪個文件夾 瀏覽:923
企業網路規劃拓撲圖 瀏覽:927
在哪裡可以下載書痴APP 瀏覽:644
橡皮擦工具怎麼使用方法 瀏覽:781

友情鏈接