導航:首頁 > 編程語言 > 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繪制棋盤相關的資料

熱點內容
電信營業廳手機app如何測網速 瀏覽:910
邊城浪子幾個版本 瀏覽:488
更改磁碟文件系統 瀏覽:282
access2007資料庫壓縮 瀏覽:899
微信公眾號怎麼清粉 瀏覽:459
長安引力app怎麼刷u幣 瀏覽:256
windows7桌面文件夾 瀏覽:110
makefile文件格式 瀏覽:999
市面上賣的蘋果4S是真的嗎 瀏覽:946
app保存密碼 瀏覽:420
團隊網路投票介紹怎麼寫 瀏覽:891
odak音箱app在哪裡下載 瀏覽:830
運營數據指標怎麼寫 瀏覽:499
微信紅包派派 瀏覽:125
1032最新描述文件 瀏覽:737
蘋果錄視頻怎麼變聲 瀏覽:320
怎麼知道自己的網站是什麼 瀏覽:977
qq在線安裝 瀏覽:260
java可以做哪些軟體有哪些 瀏覽:687
win10升級助手哪個好 瀏覽:530

友情鏈接