Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
Snake
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Container registry
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
dlw-9ak-u1
Snake
Commits
4dc1dcd8
Commit
4dc1dcd8
authored
6 years ago
by
dlw-9ak-u1
Browse files
Options
Downloads
Patches
Plain Diff
Add new file
parent
1c7fd5d7
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
MainMenu.java
+218
-0
218 additions, 0 deletions
MainMenu.java
with
218 additions
and
0 deletions
MainMenu.java
0 → 100644
+
218
−
0
View file @
4dc1dcd8
import
java.io.FileInputStream
;
import
java.io.FileNotFoundException
;
import
java.util.Random
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.ScheduledExecutorService
;
import
java.util.concurrent.TimeUnit
;
import
javafx.animation.FadeTransition
;
import
javafx.animation.ParallelTransition
;
import
javafx.animation.TranslateTransition
;
import
javafx.application.Application
;
import
javafx.application.Platform
;
import
javafx.geometry.Pos
;
import
javafx.scene.Node
;
import
javafx.scene.Parent
;
import
javafx.scene.Scene
;
import
javafx.scene.image.Image
;
import
javafx.scene.image.ImageView
;
import
javafx.scene.input.KeyCode
;
import
javafx.scene.layout.HBox
;
import
javafx.scene.layout.Pane
;
import
javafx.scene.layout.VBox
;
import
javafx.scene.paint.Color
;
import
javafx.scene.text.Font
;
import
javafx.scene.text.FontWeight
;
import
javafx.scene.text.Text
;
import
javafx.stage.Stage
;
import
javafx.util.Duration
;
public
class
MainMenu
extends
Application
{
private
static
final
Font
FONT
=
Font
.
font
(
""
,
FontWeight
.
BOLD
,
18
);
private
Stage
primaryStage
;
private
Scene
startScene
;
private
Scene
menuScene
;
private
VBox
menuBox
;
private
VBox
startBox
;
private
MenuItem
startItem
;
protected
int
currItem
=
0
;
private
Random
rand
=
new
Random
();
private
int
playerNum
=
(
int
)
((
Math
.
random
()*
656
)+
44
);
private
int
randNumber
=
0
;
private
ScheduledExecutorService
bgThread
=
Executors
.
newSingleThreadScheduledExecutor
();
private
Duration
durationInSeconds
=
Duration
.
seconds
(
0.4
);
private
Duration
durationInMillis
=
Duration
.
millis
(
1000
);
private
int
temPlayerNum
;
private
Parent
createMainMenuContent
()
throws
FileNotFoundException
{
Pane
root
=
new
Pane
();
root
.
setPrefSize
(
900
,
600
);
final
Image
background
=
new
Image
(
readFoto
(
"Images/snakeBG.png"
));
final
ImageView
background_node
=
new
ImageView
(
background
);
ContentFrame
frame1
=
new
ContentFrame
(
createLeftContent
());
ContentFrame
frame2
=
new
ContentFrame
(
createRightContent
());
HBox
mainInfoBox
=
new
HBox
(
300
,
frame1
,
frame2
);
mainInfoBox
.
setTranslateX
(
100
);
mainInfoBox
.
setTranslateY
(
50
);
startItem
=
new
MenuItem
(
"Start"
);
// Hier ist das Problem
// startItem.setOnActivate(new Runnable() {
// @Override
// public void run() {
// try {
// System.out.println(createStartContent());
// startScene= new Scene(createStartContent());
// } catch (FileNotFoundException e) {
// e.printStackTrace();
// }
// actions(startScene, startBox);
// primaryStage.setScene(startScene);
// primaryStage.show();
// }
// });
MenuItem
exitItem
=
new
MenuItem
(
"EXIT"
);
exitItem
.
setOnActivate
(()
->
System
.
exit
(
0
));
menuBox
=
new
VBox
(
10
,
startItem
,
new
MenuItem
(
"Settings"
),
new
MenuItem
(
"About"
),
exitItem
);
menuBox
.
setAlignment
(
Pos
.
TOP_CENTER
);
menuBox
.
setTranslateX
(
360
);
menuBox
.
setTranslateY
(
300
);
getMenuItem
(
0
).
setActive
(
true
);
root
.
getChildren
().
addAll
(
background_node
,
mainInfoBox
,
menuBox
);
return
root
;
}
private
Node
createLeftContent
()
{
final
Text
inbox
=
new
Text
(
playerNum
+
" are playing this game"
);
inbox
.
setFill
(
Color
.
WHITE
);
bgThread
.
scheduleAtFixedRate
(()
->
{
Platform
.
runLater
(()
->
{
TranslateTransition
tt
=
new
TranslateTransition
(
durationInSeconds
,
inbox
);
FadeTransition
ft
=
new
FadeTransition
(
durationInSeconds
,
inbox
);
tt
.
setToY
(
100
);
ft
.
setToValue
(
0.1
);
ParallelTransition
pt
=
new
ParallelTransition
(
tt
,
ft
);
pt
.
setOnFinished
(
e
->
{
inbox
.
setTranslateY
(-
100
);
inbox
.
setText
(
getPlayerNum
()+
" are playing this game"
);
TranslateTransition
tt2
=
new
TranslateTransition
(
durationInSeconds
,
inbox
);
FadeTransition
ft2
=
new
FadeTransition
(
durationInSeconds
,
inbox
);
tt2
.
setToY
(
0
);
ft2
.
setToValue
(
5
);
ParallelTransition
pt2
=
new
ParallelTransition
(
tt2
,
ft2
);
pt2
.
play
();
});
pt
.
play
();
});
},
2
,
4
,
TimeUnit
.
SECONDS
);
return
inbox
;
}
private
Node
createRightContent
()
{
String
title
=
"!! Snake Game !! :)"
;
HBox
letters
=
new
HBox
();
letters
.
setAlignment
(
Pos
.
CENTER
);
for
(
int
i
=
0
;
i
<
title
.
length
();
i
++)
{
Text
letter
=
new
Text
(
title
.
charAt
(
i
)
+
""
);
letter
.
setFont
(
FONT
);
letter
.
setFill
(
Color
.
WHITE
);
letters
.
getChildren
().
add
(
letter
);
TranslateTransition
tt3
=
new
TranslateTransition
(
durationInMillis
,
letter
);
FadeTransition
ft3
=
new
FadeTransition
(
durationInMillis
,
letter
);
tt3
.
setFromY
(-
25
);
tt3
.
setToY
(
25
);
ft3
.
setFromValue
(
0.1
);
ft3
.
setToValue
(
1
);
ParallelTransition
pt3
=
new
ParallelTransition
(
tt3
,
ft3
);
pt3
.
setDelay
(
Duration
.
millis
(
i
*
30
));
pt3
.
setAutoReverse
(
true
);
pt3
.
setCycleCount
(
TranslateTransition
.
INDEFINITE
);
pt3
.
play
();
}
return
letters
;
}
public
FileInputStream
readFoto
(
String
source
)
throws
FileNotFoundException
{
return
new
FileInputStream
(
source
);
}
protected
MenuItem
getMenuItem
(
int
index
)
{
return
(
MenuItem
)
menuBox
.
getChildren
().
get
(
index
);
}
private
int
getPlayerNum
()
{
for
(
int
i
=
0
;
i
<
1000
;
i
++
)
{
randNumber
=
rand
.
nextInt
(
15
)
+
5
;
}
temPlayerNum
=
playerNum
+
randNumber
;
playerNum
=
temPlayerNum
;
return
playerNum
;
}
@Override
public
void
start
(
Stage
primaryStage
)
throws
FileNotFoundException
{
menuScene
=
new
Scene
(
createMainMenuContent
());
actions
(
menuScene
,
menuBox
);
primaryStage
.
setScene
(
menuScene
);
primaryStage
.
show
();
}
public
void
actions
(
Scene
scene
,
VBox
box
)
{
scene
.
setOnKeyPressed
(
event
->
{
if
(
event
.
getCode
()
==
KeyCode
.
UP
)
{
if
(
currItem
>
0
)
{
getMenuItem
(
currItem
).
setActive
(
false
);
getMenuItem
(--
currItem
).
setActive
(
true
);
}
}
if
(
event
.
getCode
()
==
KeyCode
.
DOWN
)
{
if
(
currItem
<
box
.
getChildren
().
size
()
-
1
)
{
getMenuItem
(
currItem
).
setActive
(
false
);
getMenuItem
(++
currItem
).
setActive
(
true
);
}
}
if
(
event
.
getCode
()
==
KeyCode
.
ENTER
)
{
getMenuItem
(
currItem
).
activate
();
}
});
}
public
static
void
main
(
String
[]
args
)
{
launch
(
args
);
}
}
\ No newline at end of file
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