Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
M
Mathdoku
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
tmp1u19
Mathdoku
Commits
276b3df9
Commit
276b3df9
authored
5 years ago
by
tmp1u19
Browse files
Options
Downloads
Patches
Plain Diff
Animation implemented: cells change colors randomly
parent
8b19e154
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
Cage.java
+14
-5
14 additions, 5 deletions
Cage.java
Cell.java
+32
-16
32 additions, 16 deletions
Cell.java
GameScene.java
+63
-10
63 additions, 10 deletions
GameScene.java
Handler.java
+58
-16
58 additions, 16 deletions
Handler.java
Window.java
+78
-14
78 additions, 14 deletions
Window.java
with
245 additions
and
61 deletions
Cage.java
+
14
−
5
View file @
276b3df9
import
java.util.ArrayList
;
import
java.util.ArrayList
;
public
class
Cage
{
public
class
Cage
{
...
@@ -24,6 +25,8 @@ public class Cage {
...
@@ -24,6 +25,8 @@ public class Cage {
cell
=
new
Cell
(
n
,
i
,
j
);
cell
=
new
Cell
(
n
,
i
,
j
);
}
}
cell
.
setCellNumber
(
cellNumber
);
cells
.
add
(
cell
);
cells
.
add
(
cell
);
}
}
...
@@ -44,10 +47,6 @@ public class Cage {
...
@@ -44,10 +47,6 @@ public class Cage {
this
.
label
=
label
;
this
.
label
=
label
;
}
}
public
String
getLabel
()
{
return
label
;
}
public
char
getSymbol
()
{
public
char
getSymbol
()
{
return
symbol
;
return
symbol
;
}
}
...
@@ -103,10 +102,20 @@ public class Cage {
...
@@ -103,10 +102,20 @@ public class Cage {
public
boolean
isCompleted
()
{
public
boolean
isCompleted
()
{
for
(
Cell
cell
:
getCells
())
{
for
(
Cell
cell
:
getCells
())
{
if
(!
cell
.
isNumeric
(
cell
.
getTextField
().
getText
()))
{
if
(!
isNumeric
(
cell
.
getTextField
().
getText
()))
{
return
false
;
return
false
;
}
}
}
}
return
true
;
return
true
;
}
}
public
boolean
isNumeric
(
String
x
)
{
try
{
Integer
.
parseInt
(
x
);
}
catch
(
NumberFormatException
e
)
{
return
false
;
}
return
true
;
}
}
}
This diff is collapsed.
Click to expand it.
Cell.java
+
32
−
16
View file @
276b3df9
...
@@ -4,12 +4,15 @@ import javafx.scene.control.TextField;
...
@@ -4,12 +4,15 @@ import javafx.scene.control.TextField;
import
javafx.scene.layout.*
;
import
javafx.scene.layout.*
;
import
javafx.scene.text.Font
;
import
javafx.scene.text.Font
;
import
javafx.scene.control.*
;
import
javafx.scene.control.*
;
import
javafx.scene.text.FontWeight
;
public
class
Cell
extends
Pane
{
public
class
Cell
extends
Pane
{
private
TextField
input
;
private
TextField
input
;
private
int
i
;
private
int
i
;
private
int
j
;
private
int
j
;
private
int
cellNumber
;
private
Label
l
;
public
Cell
(
int
n
,
int
i
,
int
j
)
{
public
Cell
(
int
n
,
int
i
,
int
j
)
{
...
@@ -17,39 +20,30 @@ public class Cell extends Pane {
...
@@ -17,39 +20,30 @@ public class Cell extends Pane {
this
.
j
=
j
;
this
.
j
=
j
;
input
=
new
TextField
();
input
=
new
TextField
();
setPrefSize
(
400
/
n
,
400
/
n
);
setStyle
(
"- fx-background-color: transparent;"
);
setStyle
(
"- fx-background-color: transparent;"
);
input
.
setStyle
(
"-fx-text-box-border: transparent; -fx-background-color: transparent;"
+
input
.
setStyle
(
"-fx-text-box-border: transparent; -fx-background-color: transparent;"
);
"-fx-f
ont
-w
eight
: bold;"
);
input
.
setFont
(
Font
.
font
(
"Verdana"
,
F
ont
W
eight
.
BOLD
,
20
)
);
input
.
setAlignment
(
Pos
.
CENTER
);
input
.
setAlignment
(
Pos
.
CENTER
);
input
.
setFont
(
Font
.
font
(
20
));
input
.
setPrefWidth
(
400
/
n
);
input
.
setPrefHeight
(
400
/
n
);
getChildren
().
addAll
(
input
);
getChildren
().
addAll
(
input
);
}
}
public
void
setLabel
(
String
label
)
{
public
void
setLabel
(
String
label
)
{
Label
l
=
new
Label
(
label
);
l
=
new
Label
(
label
);
l
.
setPadding
(
new
Insets
(
5
));
l
.
setPadding
(
new
Insets
(
5
));
l
.
setAlignment
(
Pos
.
TOP_LEFT
);
l
.
setAlignment
(
Pos
.
TOP_LEFT
);
getChildren
().
add
(
l
);
getChildren
().
add
(
l
);
}
}
public
Label
getLabel
()
{
return
l
;
}
public
TextField
getTextField
()
{
public
TextField
getTextField
()
{
return
input
;
return
input
;
}
}
public
boolean
isNumeric
(
String
text
)
{
try
{
Integer
.
parseInt
(
text
);
return
true
;
}
catch
(
Exception
e
)
{
return
false
;
}
}
public
int
getRow
()
{
public
int
getRow
()
{
return
i
;
return
i
;
}
}
...
@@ -77,4 +71,26 @@ public class Cell extends Pane {
...
@@ -77,4 +71,26 @@ public class Cell extends Pane {
}
}
return
false
;
return
false
;
}
}
public
boolean
isAdjacent
(
Cage
cage
)
{
for
(
Cell
cell
:
cage
.
getCells
())
{
if
((
cell
.
getCellNumber
()
==
getCellNumber
()
-
1
||
cell
.
getCellNumber
()
==
getCellNumber
()
+
1
||
cell
.
getCellNumber
()
==
getCellNumber
()
-
8
||
cell
.
getCellNumber
()
==
getCellNumber
()
+
8
)
&&
cell
.
getCellNumber
()
!=
getCellNumber
())
{
return
true
;
}
}
}
return
false
;
}
public
void
setCellNumber
(
int
cellNumber
)
{
this
.
cellNumber
=
cellNumber
;
}
public
int
getCellNumber
()
{
return
cellNumber
;
}
}
This diff is collapsed.
Click to expand it.
GameScene.java
+
63
−
10
View file @
276b3df9
...
@@ -18,8 +18,8 @@ import java.util.ArrayList;
...
@@ -18,8 +18,8 @@ import java.util.ArrayList;
public
class
GameScene
extends
Application
{
public
class
GameScene
extends
Application
{
boolean
sizeSelected
=
false
;
private
ArrayList
<
Cage
>
cages
=
new
ArrayList
<
Cage
>();
private
ArrayList
<
Cage
>
cages
=
new
ArrayList
<
Cage
>();
private
Window
window
=
new
Window
();
public
static
void
main
(
String
[]
args
)
{
public
static
void
main
(
String
[]
args
)
{
launch
(
args
);
launch
(
args
);
...
@@ -29,7 +29,6 @@ public class GameScene extends Application {
...
@@ -29,7 +29,6 @@ public class GameScene extends Application {
public
void
start
(
Stage
stage
)
{
public
void
start
(
Stage
stage
)
{
FileChooser
fileChooser
=
new
FileChooser
();
FileChooser
fileChooser
=
new
FileChooser
();
Window
window
=
new
Window
();
VBox
root
=
new
VBox
(
20
);
VBox
root
=
new
VBox
(
20
);
root
.
setPrefSize
(
800
,
700
);
root
.
setPrefSize
(
800
,
700
);
root
.
setAlignment
(
Pos
.
TOP_CENTER
);
root
.
setAlignment
(
Pos
.
TOP_CENTER
);
...
@@ -63,7 +62,8 @@ public class GameScene extends Application {
...
@@ -63,7 +62,8 @@ public class GameScene extends Application {
buttons
.
setAlignment
(
Pos
.
TOP_CENTER
);
buttons
.
setAlignment
(
Pos
.
TOP_CENTER
);
Button
play
=
new
Button
(
"Play"
);
Button
play
=
new
Button
(
"Play"
);
play
.
setStyle
(
"-fx-font-size: 20px; -fx-font-weight:bold;"
);
play
.
setStyle
(
"-fx-font-size: 20px; -fx-font-weight:bold; -fx-background-color: MediumSeaGreen;"
+
"-fx-border-color: black; -fx-border-width: 4 4 4 4;"
);
play
.
setDisable
(
true
);
play
.
setDisable
(
true
);
Label
size
=
new
Label
(
"Choose size: "
);
Label
size
=
new
Label
(
"Choose size: "
);
...
@@ -101,7 +101,7 @@ public class GameScene extends Application {
...
@@ -101,7 +101,7 @@ public class GameScene extends Application {
@Override
@Override
public
void
changed
(
ObservableValue
<?
extends
String
>
observableValue
,
String
oldValue
,
public
void
changed
(
ObservableValue
<?
extends
String
>
observableValue
,
String
oldValue
,
String
newValue
)
{
String
newValue
)
{
sizeSelected
=
true
;
size
.
setDisable
(
true
);
size
.
setDisable
(
true
);
input
.
setDisable
(
false
);
input
.
setDisable
(
false
);
cbInput
.
setDisable
(
false
);
cbInput
.
setDisable
(
false
);
...
@@ -114,6 +114,8 @@ public class GameScene extends Application {
...
@@ -114,6 +114,8 @@ public class GameScene extends Application {
int
n
=
Character
.
getNumericValue
(
cbSize
.
getSelectionModel
().
getSelectedItem
().
toString
().
charAt
(
0
));
int
n
=
Character
.
getNumericValue
(
cbSize
.
getSelectionModel
().
getSelectedItem
().
toString
().
charAt
(
0
));
//play.setDisable(false);
if
(
newValue
.
equals
(
"file"
))
{
if
(
newValue
.
equals
(
"file"
))
{
if
(
cbSize
.
getSelectionModel
().
getSelectedItem
()
!=
null
)
{
if
(
cbSize
.
getSelectionModel
().
getSelectedItem
()
!=
null
)
{
...
@@ -122,18 +124,19 @@ public class GameScene extends Application {
...
@@ -122,18 +124,19 @@ public class GameScene extends Application {
if
(
file
!=
null
)
{
if
(
file
!=
null
)
{
try
{
try
{
openFile
(
file
,
n
);
openFile
(
file
,
n
,
play
);
}
catch
(
IOException
e
)
{
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
}
}
}
else
{
play
.
setDisable
(
true
);
}
}
}
}
}
else
if
(
newValue
.
equals
(
"text area"
))
{
}
else
if
(
newValue
.
equals
(
"text area"
))
{
directInput
(
n
);
directInput
(
n
,
play
);
}
}
input
.
setDisable
(
true
);
input
.
setDisable
(
true
);
play
.
setDisable
(
false
);
}
}
});
});
...
@@ -166,7 +169,7 @@ public class GameScene extends Application {
...
@@ -166,7 +169,7 @@ public class GameScene extends Application {
stage
.
setResizable
(
false
);
stage
.
setResizable
(
false
);
}
}
public
void
openFile
(
File
file
,
int
n
)
throws
IOException
{
public
boolean
openFile
(
File
file
,
int
n
,
Button
play
)
throws
IOException
{
BufferedReader
buffer
=
new
BufferedReader
(
new
FileReader
(
file
.
getPath
()));
BufferedReader
buffer
=
new
BufferedReader
(
new
FileReader
(
file
.
getPath
()));
...
@@ -199,9 +202,58 @@ public class GameScene extends Application {
...
@@ -199,9 +202,58 @@ public class GameScene extends Application {
cages
.
add
(
cage
);
cages
.
add
(
cage
);
line
=
buffer
.
readLine
();
line
=
buffer
.
readLine
();
}
}
try
{
if
(!
checkUniqueCells
(
n
))
{
cages
=
new
ArrayList
<
Cage
>();
play
.
setDisable
(
true
);
window
.
inputError
(
"The cells are not part of exactly "
+
"one cage."
).
showAndWait
();
return
false
;
}
}
catch
(
ArrayIndexOutOfBoundsException
e
)
{
cages
=
new
ArrayList
<
Cage
>();
play
.
setDisable
(
true
);
window
.
inputError
(
"Some cells don't belong to the bord"
).
showAndWait
();
return
false
;
}
}
public
void
directInput
(
int
n
)
{
play
.
setDisable
(
false
);
return
true
;
}
public
boolean
checkUniqueCells
(
int
n
)
throws
IOException
{
int
[]
verify
=
new
int
[
n
*
n
+
1
];
for
(
Cage
cage
:
cages
)
{
for
(
Cell
cell
:
cage
.
getCells
())
{
verify
[
cell
.
getCellNumber
()]
+=
1
;
}
}
for
(
int
i
=
1
;
i
<=
n
*
n
;
i
++)
{
if
(
verify
[
i
]
!=
1
)
{
return
false
;
}
}
return
true
;
}
public
boolean
checkAdjacent
()
{
for
(
Cage
cage
:
cages
)
{
for
(
Cell
cell
:
cage
.
getCells
())
{
if
(!
cell
.
isAdjacent
(
cage
))
{
return
false
;
}
}
}
return
true
;
}
public
void
directInput
(
int
n
,
Button
play
)
{
VBox
root
=
new
VBox
(
10
);
VBox
root
=
new
VBox
(
10
);
root
.
setPadding
(
new
Insets
(
20
));
root
.
setPadding
(
new
Insets
(
20
));
...
@@ -223,6 +275,7 @@ public class GameScene extends Application {
...
@@ -223,6 +275,7 @@ public class GameScene extends Application {
Scene
scene
=
new
Scene
(
root
);
Scene
scene
=
new
Scene
(
root
);
Stage
stage
=
new
Stage
();
Stage
stage
=
new
Stage
();
stage
.
setScene
(
scene
);
stage
.
setScene
(
scene
);
play
.
setDisable
(
true
);
ok
.
setOnAction
(
new
EventHandler
<
ActionEvent
>()
{
ok
.
setOnAction
(
new
EventHandler
<
ActionEvent
>()
{
@Override
@Override
...
@@ -238,7 +291,7 @@ public class GameScene extends Application {
...
@@ -238,7 +291,7 @@ public class GameScene extends Application {
}
}
try
{
try
{
openFile
(
file
,
n
);
openFile
(
file
,
n
,
play
);
}
catch
(
IOException
e
)
{
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
}
}
...
...
This diff is collapsed.
Click to expand it.
Handler.java
+
58
−
16
View file @
276b3df9
import
javafx.animation.*
;
import
javafx.beans.value.ChangeListener
;
import
javafx.beans.value.ChangeListener
;
import
javafx.beans.value.ObservableValue
;
import
javafx.beans.value.ObservableValue
;
import
javafx.event.ActionEvent
;
import
javafx.event.ActionEvent
;
...
@@ -13,9 +14,11 @@ import javafx.scene.layout.BackgroundFill;
...
@@ -13,9 +14,11 @@ import javafx.scene.layout.BackgroundFill;
import
javafx.scene.layout.CornerRadii
;
import
javafx.scene.layout.CornerRadii
;
import
javafx.scene.layout.GridPane
;
import
javafx.scene.layout.GridPane
;
import
javafx.scene.paint.Color
;
import
javafx.scene.paint.Color
;
import
javafx.scene.text.Font
;
import
javafx.scene.text.FontWeight
;
import
javafx.util.Duration
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Collections
;
public
class
Handler
{
public
class
Handler
{
...
@@ -78,7 +81,7 @@ public class Handler {
...
@@ -78,7 +81,7 @@ public class Handler {
}
}
if
(
verify
()
&&
verifyCages
())
{
if
(
verify
()
&&
verifyCages
())
{
win
dow
.
win
(
"Congratulations!"
,
"You won the game!"
);
win
(
);
}
else
{
}
else
{
window
.
win
(
"Too bad..."
,
"You lost the game"
);
window
.
win
(
"Too bad..."
,
"You lost the game"
);
}
}
...
@@ -137,13 +140,30 @@ public class Handler {
...
@@ -137,13 +140,30 @@ public class Handler {
});
});
}
}
public
void
changeFont
(
Button
button
,
int
number
)
{
button
.
setOnAction
(
new
EventHandler
<
ActionEvent
>()
{
@Override
public
void
handle
(
ActionEvent
actionEvent
)
{
for
(
Cage
cage
:
cages
)
{
for
(
Cell
cell
:
cage
.
getCells
())
{
cell
.
getTextField
().
setStyle
(
"-fx-text-box-border: transparent; "
+
"-fx-background-color: transparent;"
);
cell
.
getTextField
().
setFont
(
Font
.
font
(
"Verdana"
,
FontWeight
.
BOLD
,
number
));
}
cage
.
getCells
().
get
(
0
).
getLabel
().
setFont
(
Font
.
font
(
number
-
10
));
}
}
});
}
public
void
addActions
(
GridPane
grid
,
Button
undo
)
{
public
void
addActions
(
GridPane
grid
,
Button
undo
)
{
for
(
Node
cell
:
grid
.
getChildren
())
{
for
(
Node
cell
:
grid
.
getChildren
())
{
((
Cell
)
cell
).
getTextField
().
textProperty
().
addListener
(
new
ChangeListener
<
String
>()
{
((
Cell
)
cell
).
getTextField
().
textProperty
().
addListener
(
new
ChangeListener
<
String
>()
{
@Override
@Override
public
void
changed
(
ObservableValue
<?
extends
String
>
observableValue
,
String
s
,
String
t1
)
{
public
void
changed
(
ObservableValue
<?
extends
String
>
observableValue
,
String
s
,
String
t1
)
{
if
(
((
Cell
)
cell
).
isNumeric
(((
Cell
)
cell
).
getTextField
().
getText
()))
{
if
(
isNumeric
(((
Cell
)
cell
).
getTextField
().
getText
()))
{
Element
e
=
new
Element
(((
Cell
)
cell
).
getRow
(),
((
Cell
)
cell
).
getColumn
(),
Element
e
=
new
Element
(((
Cell
)
cell
).
getRow
(),
((
Cell
)
cell
).
getColumn
(),
Integer
.
parseInt
(((
Cell
)
cell
).
getTextField
().
getText
()));
Integer
.
parseInt
(((
Cell
)
cell
).
getTextField
().
getText
()));
undoStack
.
push
(
e
);
undoStack
.
push
(
e
);
...
@@ -173,7 +193,7 @@ public class Handler {
...
@@ -173,7 +193,7 @@ public class Handler {
public
void
changed
(
ObservableValue
<?
extends
String
>
observableValue
,
String
oldValue
,
public
void
changed
(
ObservableValue
<?
extends
String
>
observableValue
,
String
oldValue
,
String
newValue
)
{
String
newValue
)
{
if
(
cell
.
isNumeric
(
newValue
))
{
if
(
isNumeric
(
newValue
))
{
if
(
Integer
.
parseInt
(
newValue
)
>
n
||
Integer
.
parseInt
(
newValue
)
==
0
)
{
if
(
Integer
.
parseInt
(
newValue
)
>
n
||
Integer
.
parseInt
(
newValue
)
==
0
)
{
cell
.
getTextField
().
setText
(
oldValue
);
cell
.
getTextField
().
setText
(
oldValue
);
}
else
{
}
else
{
...
@@ -210,20 +230,16 @@ public class Handler {
...
@@ -210,20 +230,16 @@ public class Handler {
public
void
drawGrid
(
GridPane
grid
)
{
public
void
drawGrid
(
GridPane
grid
)
{
for
(
Cage
cage
:
cages
)
{
for
(
Cage
cage
:
cages
)
{
cage
.
getCells
().
get
(
0
).
setStyle
(
"-fx-border-color: black; -fx-border-width: 2 2 2 2;"
);
for
(
Cell
cell
:
cage
.
getCells
())
{
for
(
Cell
cell
:
cage
.
getCells
())
{
if
(
cell
!=
cage
.
getCells
().
get
(
0
))
{
if
(
cell
.
hasLeftNeighbour
(
cage
)
&&
cell
.
hasUpNeighbour
(
cage
))
{
if
(
cell
.
hasLeftNeighbour
(
cage
)
&&
cell
.
hasUpNeighbour
(
cage
))
{
cell
.
setStyle
(
"-fx-border-color: black; -fx-border-width: 0
2 2
0;"
);
cell
.
setStyle
(
"-fx-border-color: black; -fx-border-width: 0
4 4
0;"
);
}
else
if
(
cell
.
hasLeftNeighbour
(
cage
))
{
}
else
if
(
cell
.
hasLeftNeighbour
(
cage
))
{
cell
.
setStyle
(
"-fx-border-color: black; -fx-border-width:
2 2 2
0;"
);
cell
.
setStyle
(
"-fx-border-color: black; -fx-border-width:
4 4 4
0;"
);
}
else
if
(
cell
.
hasUpNeighbour
(
cage
))
{
}
else
if
(
cell
.
hasUpNeighbour
(
cage
))
{
cell
.
setStyle
(
"-fx-border-color: black; -fx-border-width: 0
2 2 2
;"
);
cell
.
setStyle
(
"-fx-border-color: black; -fx-border-width: 0
4 4 4
;"
);
}
else
{
}
else
{
cell
.
setStyle
(
"-fx-border-color: black; -fx-border-width: 2 2 2 2;"
);
cell
.
setStyle
(
"-fx-border-color: black; -fx-border-width: 4 4 4 4;"
);
}
}
}
doubleClick
(
cell
);
doubleClick
(
cell
);
...
@@ -436,6 +452,23 @@ public class Handler {
...
@@ -436,6 +452,23 @@ public class Handler {
}
}
}
}
public
void
win
()
{
Timeline
timeline
=
new
Timeline
(
new
KeyFrame
(
Duration
.
millis
(
100
),
new
EventHandler
<
ActionEvent
>()
{
@Override
public
void
handle
(
ActionEvent
actionEvent
)
{
for
(
Cage
cage
:
cages
)
{
for
(
Cell
cell
:
cage
.
getCells
())
{
cell
.
setBackground
(
new
Background
(
new
BackgroundFill
(
Color
.
color
(
Math
.
random
(),
Math
.
random
(),
Math
.
random
()),
CornerRadii
.
EMPTY
,
Insets
.
EMPTY
)));
}
}
}
}));
timeline
.
setCycleCount
(
Transition
.
INDEFINITE
);
timeline
.
play
();
}
public
Cell
getCell
(
GridPane
grid
,
int
i
,
int
j
)
{
public
Cell
getCell
(
GridPane
grid
,
int
i
,
int
j
)
{
for
(
Node
cell
:
grid
.
getChildren
())
{
for
(
Node
cell
:
grid
.
getChildren
())
{
if
(((
Cell
)
cell
).
getRow
()
==
i
&&
((
Cell
)
cell
).
getColumn
()
==
j
)
{
if
(((
Cell
)
cell
).
getRow
()
==
i
&&
((
Cell
)
cell
).
getColumn
()
==
j
)
{
...
@@ -452,5 +485,14 @@ public class Handler {
...
@@ -452,5 +485,14 @@ public class Handler {
public
void
setN
(
int
n
)
{
public
void
setN
(
int
n
)
{
this
.
n
=
n
;
this
.
n
=
n
;
}
}
public
boolean
isNumeric
(
String
x
)
{
try
{
Integer
.
parseInt
(
x
);
}
catch
(
NumberFormatException
e
)
{
return
false
;
}
return
true
;
}
}
}
This diff is collapsed.
Click to expand it.
Window.java
+
78
−
14
View file @
276b3df9
...
@@ -11,11 +11,8 @@ import javafx.scene.text.Font;
...
@@ -11,11 +11,8 @@ import javafx.scene.text.Font;
import
javafx.stage.Modality
;
import
javafx.stage.Modality
;
import
javafx.stage.Stage
;
import
javafx.stage.Stage
;
import
javafx.stage.StageStyle
;
import
javafx.stage.StageStyle
;
import
java.io.File
;
import
java.io.FileWriter
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.TimerTask
;
public
class
Window
{
public
class
Window
{
...
@@ -131,6 +128,15 @@ public class Window {
...
@@ -131,6 +128,15 @@ public class Window {
return
alert
;
return
alert
;
}
}
public
Alert
inputError
(
String
comment
)
{
Alert
alert
=
new
Alert
(
Alert
.
AlertType
.
ERROR
);
alert
.
setTitle
(
"Error"
);
alert
.
setHeaderText
(
"Input error"
);
alert
.
setContentText
(
comment
);
return
alert
;
}
public
Stage
mathdokuStage
(
int
n
,
ArrayList
<
Cage
>
cages
)
{
public
Stage
mathdokuStage
(
int
n
,
ArrayList
<
Cage
>
cages
)
{
this
.
n
=
n
;
this
.
n
=
n
;
...
@@ -138,6 +144,12 @@ public class Window {
...
@@ -138,6 +144,12 @@ public class Window {
Handler
handler
=
new
Handler
(
n
,
cages
);
Handler
handler
=
new
Handler
(
n
,
cages
);
handler
.
setN
(
n
);
handler
.
setN
(
n
);
Stage
stage
=
new
Stage
();
Stage
stage
=
new
Stage
();
TimerTask
task
=
new
TimerTask
()
{
@Override
public
void
run
()
{
}
};
VBox
root
=
new
VBox
(
5
);
VBox
root
=
new
VBox
(
5
);
root
.
setAlignment
(
Pos
.
CENTER
);
root
.
setAlignment
(
Pos
.
CENTER
);
...
@@ -146,17 +158,26 @@ public class Window {
...
@@ -146,17 +158,26 @@ public class Window {
HBox
buttons
=
new
HBox
();
HBox
buttons
=
new
HBox
();
buttons
.
setAlignment
(
Pos
.
CENTER
);
buttons
.
setAlignment
(
Pos
.
CENTER
);
HBox
sizes
=
new
HBox
(
5
);
sizes
.
setAlignment
(
Pos
.
CENTER
);
GridPane
grid
=
new
GridPane
();
GridPane
grid
=
new
GridPane
();
grid
.
setAlignment
(
Pos
.
CENTER
);
grid
.
setAlignment
(
Pos
.
CENTER
);
grid
.
set
Padding
(
new
Insets
(
20
)
);
grid
.
set
Style
(
"-fx-border-color: black; -fx-border-width: 4 4 4 4;"
);
Button
undo
=
new
Button
(
"Undo"
);
Button
undo
=
new
Button
(
"Undo"
);
Button
redo
=
new
Button
(
"Redo"
);
Button
redo
=
new
Button
(
"Redo"
);
Button
help
=
new
Button
(
"Enable Help"
);
Button
help
=
new
Button
(
"Enable Help"
);
Button
clear
=
new
Button
(
"Clear"
);
Button
clear
=
new
Button
(
"Clear"
);
Button
hint
=
new
Button
(
"Hint"
);
undo
.
setStyle
(
"-fx-font-size: 20px; -fx-font-weight:bold; -fx-background-color: MediumSeaGreen;"
+
"-fx-border-color: black; -fx-border-width: 4 4 4 4;"
);
redo
.
setStyle
(
"-fx-font-size: 20px; -fx-font-weight:bold; -fx-background-color: MediumSeaGreen;"
+
"-fx-border-color: black; -fx-border-width: 4 4 4 4;"
);
help
.
setStyle
(
"-fx-font-size: 20px; -fx-font-weight:bold; -fx-background-color: MediumSeaGreen;"
+
"-fx-border-color: black; -fx-border-width: 4 4 4 4;"
);
clear
.
setStyle
(
"-fx-font-size: 20px; -fx-font-weight:bold; -fx-background-color: MediumSeaGreen;"
+
"-fx-border-color: black; -fx-border-width: 4 4 4 4;"
);
hint
.
setStyle
(
"-fx-font-size: 20px; -fx-font-weight:bold; -fx-background-color: MediumSeaGreen;"
+
"-fx-border-color: black; -fx-border-width: 4 4 4 4;"
);
undo
.
setDisable
(
true
);
undo
.
setDisable
(
true
);
redo
.
setDisable
(
true
);
redo
.
setDisable
(
true
);
...
@@ -166,31 +187,74 @@ public class Window {
...
@@ -166,31 +187,74 @@ public class Window {
handler
.
undoAction
(
undo
,
redo
,
grid
);
handler
.
undoAction
(
undo
,
redo
,
grid
);
handler
.
redoAction
(
redo
,
grid
);
handler
.
redoAction
(
redo
,
grid
);
buttons
.
getChildren
().
addAll
(
undo
,
redo
,
help
,
clear
);
buttons
.
getChildren
().
addAll
(
undo
,
redo
,
help
,
clear
,
hint
);
handler
.
drawGrid
(
grid
);
handler
.
drawGrid
(
grid
);
handler
.
addActions
(
grid
,
undo
);
handler
.
addActions
(
grid
,
undo
);
Button
small
=
new
Button
(
"Small"
);
Button
medium
=
new
Button
(
"Medium"
);
Button
large
=
new
Button
(
"Large"
);
small
.
setStyle
(
"-fx-font-size: 20px; -fx-font-weight:bold; -fx-background-color: MediumSeaGreen;"
+
" -fx-border-color: black; -fx-border-width: 4 4 4 4;"
);
medium
.
setStyle
(
"-fx-font-size: 20px; -fx-font-weight:bold; -fx-background-color: MediumSeaGreen; "
+
"-fx-border-color: black; -fx-border-width: 4 4 4 4;"
);
large
.
setStyle
(
"-fx-font-size: 20px; -fx-font-weight:bold; -fx-background-color: MediumSeaGreen; "
+
"-fx-border-color: black; -fx-border-width: 4 4 4 4;"
);
HBox
sizes
=
new
HBox
(
5
);
sizes
.
setAlignment
(
Pos
.
CENTER
);
sizes
.
getChildren
().
addAll
(
small
,
medium
,
large
);
Label
note
=
new
Label
(
"Double click the space provided for text in cell"
);
Label
note
=
new
Label
(
"Double click the space provided for text in cell"
);
Button
submit
=
new
Button
(
"Submit"
);
Button
submit
=
new
Button
(
"Submit"
);
note
.
setStyle
(
"-fx-font-size: 15px; -fx-font-weight:bold;"
);
submit
.
setStyle
(
"-fx-font-size: 20px; -fx-font-weight:bold; -fx-background-color: MediumSeaGreen; "
+
"-fx-border-color: black; -fx-border-width: 4 4 4 4;"
);
handler
.
changeFont
(
small
,
20
);
handler
.
changeFont
(
medium
,
30
);
handler
.
changeFont
(
large
,
40
);
handler
.
submitButton
(
submit
);
handler
.
submitButton
(
submit
);
root
.
getChildren
().
addAll
(
buttons
,
grid
,
sizes
,
note
,
submit
);
root
.
getChildren
().
addAll
(
buttons
,
grid
,
sizes
,
note
,
submit
);
root
.
widthProperty
().
addListener
((
obs
,
oldVal
,
newVal
)
->
{
grid
.
setMaxWidth
((
Double
)
newVal
-
100
);
for
(
Cage
cage
:
cages
)
{
for
(
Cell
cell
:
cage
.
getCells
())
{
cell
.
setPrefWidth
((
Double
)
newVal
-
100
);
cell
.
getTextField
().
setPrefSize
(
cell
.
getWidth
(),
cell
.
getHeight
());
}
}
});
root
.
heightProperty
().
addListener
((
obs
,
oldVal
,
newVal
)
->
{
grid
.
setMaxHeight
((
Double
)
newVal
-
100
);
for
(
Cage
cage
:
cages
)
{
for
(
Cell
cell
:
cage
.
getCells
())
{
cell
.
setPrefHeight
((
Double
)
newVal
-
100
);
cell
.
getTextField
().
setPrefSize
(
cell
.
getWidth
(),
cell
.
getHeight
());
}
}
});
Scene
scene
=
new
Scene
(
root
);
Scene
scene
=
new
Scene
(
root
);
stage
.
setScene
(
scene
);
stage
.
setScene
(
scene
);
stage
.
setTitle
(
"Mathdoku"
);
stage
.
setTitle
(
"Mathdoku"
);
stage
.
initStyle
(
StageStyle
.
DECORATED
);
stage
.
initStyle
(
StageStyle
.
DECORATED
);
stage
.
setX
(
8
00
);
stage
.
setX
(
7
00
);
stage
.
setY
(
3
00
);
stage
.
setY
(
2
00
);
stage
.
setMinHeight
(
6
00
);
stage
.
setMinHeight
(
7
00
);
stage
.
setMinWidth
(
5
00
);
stage
.
setMinWidth
(
7
00
);
return
stage
;
return
stage
;
}
}
}
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment