Sudoku
Sudoku
BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Random;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.Labeled;
import javafx.scene.image.Image;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.input.MouseButton;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.paint.Paint;
import javafx.scene.shape.Rectangle;
import javafx.scene.shape.Shape;
import javafx.scene.text.Font;
import javafx.stage.Stage;
/**
* @author Marlon Alexander Estupian Galindo Cod.1610010802
* @author Edward Fabian Baron Gutierrez Cod.1610010854
* @author Brayan Felipe Barragan Nuez Cod.1610011115
*
*/
public class Sudoku extends Application {
/*Se crea una matriz de caracteres y los colores que tendra el tablero*/
BorderPane menu;
GridPane tablero;
Tablero t;
boolean finalized = false;
boolean [][] bMatriz = new boolean[9][9];
StackPane [][] pane = new StackPane[9][9];
{'g','g','g','b','b','b','g','g','g'},
{'g','g','g','b','b','b','g','g','g'},
{'g','g','g','b','b','b','g','g','g'},
{'b','b','b','g','g','g','b','b','b'},
{'b','b','b','g','g','g','b','b','b'},
{'b','b','b','g','g','g','b','b','b'},
{'g','g','g','b','b','b','g','g','g'},
{'g','g','g','b','b','b','g','g','g'},
{'g','g','g','b','b','b','g','g','g'}
};;
class Tablero {
int r = 0;
int y = 1;
@Override
public void start (Stage primaryStage) throws Exception {
menu = new BorderPane();
tablero = new GridPane();
t = new Tablero (true, 1 + new Random().nextInt(3));
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
tablero.add(t.getNode(i,j), j, i);
}
}
tablero.setOnKeyReleased(new EventHandler<KeyEvent>() {
@Override
public void handle(MouseEvent event) {
System.out.println(event.getSceneX() + " " +
event.getSceneY());
int i = ((int)event.getSceneX()/70);
int j = ((int)event.getSceneY()/70);
if (!finalized) {
if (i < 9 && j < 9) {
StackPane node = t.getNode(j, i);
MouseButton s = event.getButton();
if (s == MouseButton.PRIMARY)
if (!bMatriz[j][i])
((Labeled)
node.getChildren().get(1)).setText(change(((Labeled)
node.getChildren().get(1)).getText()));
if (!isValid(j, i, t))
if (!bMatriz[j][i])
((Shape)
node.getChildren().get(0)).setFill(a4);
else
((Shape)
node.getChildren().get(0)).setFill(selectColor(j,i));
else
((Shape)
node.getChildren().get(0)).setFill(selectColor(j,i));
}
finalized = isFinalized();
}
return true;
}
});
@Override
public void handle(ActionEvent event) {
tablero.getChildren().clear();
finalized = false;
bMatriz = new boolean[9][9];
pane = new StackPane[9][9];
try {
t = new Tablero(true, 1);
} catch (IOException e) {
e.printStackTrace();
}
@Override
public void handle(ActionEvent event) {
tablero.getChildren().clear();
finalized = false;
bMatriz = new boolean[9][9];
pane = new StackPane[9][9];
try {
t = new Tablero(true, 2);
} catch (IOException e) {
e.printStackTrace();
}
@Override
public void handle(ActionEvent event) {
tablero.getChildren().clear();
finalized = false;
bMatriz = new boolean[9][9];
pane = new StackPane[9][9];
try {
t = new Tablero(true, 3);
} catch (IOException e) {
e.printStackTrace();
}
/*Escena*/
Scene scene = new Scene(menu);
primaryStage.setScene(scene);
primaryStage.setTitle("Sudoku");
primaryStage.setResizable(false);
primaryStage.getIcons().add(new Image("file:Iconos/Icon.png"));
primaryStage.show();
tablero.requestFocus();
}
if (!s.equals(""+ matriz[i][j]))
return false;
}}
finalized(menu);
win();
return true;
}
/*-----------------------------------------*/
public static void main(String[]args) {
launch(args);
}
}