Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
Suunnistuspeli
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
veklemex
Suunnistuspeli
Commits
15a2f477
Commit
15a2f477
authored
3 years ago
by
Klemettinen Veera Eveliina
Browse files
Options
Downloads
Patches
Plain Diff
muutoksia ohjelmaan
parent
c39321bc
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
Harjoitustyo/Suunnistuspeli/Suunnistuspeli.cs
+132
-31
132 additions, 31 deletions
Harjoitustyo/Suunnistuspeli/Suunnistuspeli.cs
with
132 additions
and
31 deletions
Harjoitustyo/Suunnistuspeli/Suunnistuspeli.cs
+
132
−
31
View file @
15a2f477
...
...
@@ -37,6 +37,8 @@ public class Suunnistuspeli : PhysicsGame
private
static
readonly
int
tileWidth
=
700
/
lines
[
0
].
Length
;
private
static
readonly
int
tileHeight
=
480
/
lines
.
Length
;
ScoreList
topLista
=
new
ScoreList
(
10
,
false
,
0
);
Image
olionKuva
=
LoadImage
(
"rasti.png"
);
Image
puu
=
LoadImage
(
"puu2.png"
);
Image
bear
=
LoadImage
(
"bear.png"
);
...
...
@@ -48,8 +50,35 @@ public class Suunnistuspeli : PhysicsGame
{
LuoKentta
();
AsetaOhjaimet
();
Pause
();
MultiSelectWindow
alkuValikko
=
new
MultiSelectWindow
(
"Pelin alkuvalikko"
,
"Aloita peli"
,
"Parhaat pisteet"
,
"Lopeta"
);
alkuValikko
.
Color
=
Color
.
LightGreen
;
alkuValikko
.
SetButtonTextColor
(
Color
.
Orange
);
Add
(
alkuValikko
);
topLista
=
DataStorage
.
TryLoad
<
ScoreList
>(
topLista
,
"pisteet.xml"
);
alkuValikko
.
AddItemHandler
(
0
,
Pause
);
alkuValikko
.
AddItemHandler
(
1
,
ParhaatPisteet
);
alkuValikko
.
AddItemHandler
(
2
,
Exit
);
void
ParhaatPisteet
()
{
HighScoreWindow
topIkkuna
=
new
HighScoreWindow
(
"Parhaat pisteet"
,
topLista
);
topIkkuna
.
Closed
+=
TallennaPisteet
;
Add
(
topIkkuna
);
}
void
TallennaPisteet
(
Window
sender
)
{
DataStorage
.
Save
<
ScoreList
>(
topLista
,
"pisteet.xml"
);
}
}
void
LuoKentta
()
{
//Gravity = new Vector(0, -981);
...
...
@@ -63,9 +92,10 @@ public class Suunnistuspeli : PhysicsGame
tiles
.
Execute
(
tileWidth
,
tileHeight
);
LuoPistelaskuri
();
LuoPistelaskuri
();
LuoAikaLaskuri
();
Level
.
CreateBorders
();
Camera
.
ZoomToLevel
();
...
...
@@ -122,14 +152,27 @@ public class Suunnistuspeli : PhysicsGame
/// <param name="karhu">Törmäyksen kohde</param>
void
PelaajatTormaavat
(
PhysicsObject
suunnistaja
,
PhysicsObject
karhu
)
{
Label
tekstikentta
=
new
Label
(
500.0
,
20.0
,
"
Peli päättyi
!"
);
Label
tekstikentta
=
new
Label
(
500.0
,
20.0
,
"
Hävisit pelin
!"
);
tekstikentta
.
TextColor
=
Color
.
Green
;
Vector
keskipiste
=
new
Vector
();
tekstikentta
.
Position
=
keskipiste
;
Add
(
tekstikentta
);
suunnistaja
.
Destroy
();
//AloitaAlusta();
YesNoWindow
uusipeli
=
new
YesNoWindow
(
"Hävisit pelin! Haluatko aloittaa uuden pelin?"
);
Add
(
uusipeli
);
uusipeli
.
Yes
+=
UusiPeli
;
uusipeli
.
No
+=
LopetaPeli
;
void
UusiPeli
()
{
AloitaAlusta
();
}
void
LopetaPeli
()
{
Exit
();
}
}
...
...
@@ -140,14 +183,40 @@ public class Suunnistuspeli : PhysicsGame
AsetaOhjaimet
();
}
public
void
LuoAikaLaskuri
()
{
Timer
aikaLaskuri
=
new
Timer
();
aikaLaskuri
.
Start
();
Label
aikaNaytto
=
new
Label
();
aikaNaytto
.
X
=
Screen
.
Right
-
100
;
aikaNaytto
.
Y
=
Screen
.
Top
-
150
;
aikaNaytto
.
TextColor
=
Color
.
Black
;
aikaNaytto
.
DecimalPlaces
=
1
;
aikaNaytto
.
BindTo
(
aikaLaskuri
.
SecondCounter
);
Add
(
aikaNaytto
);
}
/// <summary>
/// Pistelaskurin luominen
/// </summary>
IntMeter
pisteLaskuri
;
void
LuoPistelaskuri
()
{
Timer
aikaLaskuri
=
new
Timer
();
aikaLaskuri
.
Start
();
Label
aikaNaytto
=
new
Label
();
aikaNaytto
.
X
=
Screen
.
Right
-
100
;
aikaNaytto
.
Y
=
Screen
.
Top
-
150
;
aikaNaytto
.
TextColor
=
Color
.
Black
;
aikaNaytto
.
DecimalPlaces
=
1
;
aikaNaytto
.
BindTo
(
aikaLaskuri
.
SecondCounter
);
Add
(
aikaNaytto
);
pisteLaskuri
=
new
IntMeter
(
0
);
Label
pisteNaytto
=
new
Label
();
...
...
@@ -163,18 +232,66 @@ public class Suunnistuspeli : PhysicsGame
pisteNaytto
.
BindTo
(
pisteLaskuri
);
Add
(
pisteNaytto
);
}
/// <summary>
/// Ajanotto pysähtyy, kun suunnistaja saa rastit kerättyä.
/// </summary>
/// <summary>
/// Näytölle tulostuva teksti, kun suunnistaja saa rastit kerättyä.
/// </summary>
void
KaikkiKeratty
()
{
MessageDisplay
.
Add
(
"Suunnistaja voitti pelin."
);
void
KaikkiKeratty
()
{
aikaLaskuri
.
Stop
();
Pause
();
HighScoreWindow
topIkkuna
=
new
HighScoreWindow
(
"Parhaat pisteet"
,
"Onneksi olkoon, pääsit listalle pisteillä %p! Syötä nimesi:"
,
topLista
,
aikaLaskuri
.
CurrentTime
);
topIkkuna
.
NameInputWindow
.
Message
.
Text
=
"Onneksi olkoon! Aikasi oli {0:0.0}s. Syötä nimesi:"
;
topIkkuna
.
Color
=
Color
.
LightGreen
;
topIkkuna
.
NameInputWindow
.
Message
.
Color
=
Color
.
LightGreen
;
topIkkuna
.
List
.
ScoreFormat
=
"{0:0.0}"
;
topIkkuna
.
Closed
+=
TallennaPisteet
;
topIkkuna
.
Closed
+=
AloitaUudelleen
;
Add
(
topIkkuna
);
void
AloitaUudelleen
(
Window
sender
)
{
YesNoWindow
uusikierros
=
new
YesNoWindow
(
"Haluatko aloittaa uuden pelin?"
);
Add
(
uusikierros
);
uusikierros
.
Yes
+=
UusiPeli
;
uusikierros
.
No
+=
LopetaPeli
;
void
UusiPeli
()
{
AloitaAlusta
();
}
void
LopetaPeli
()
{
Exit
();
}
void
AloitaAlusta
()
{
ClearAll
();
LuoKentta
();
AsetaOhjaimet
();
}
}
void
TallennaPisteet
(
Window
sender
)
{
DataStorage
.
Save
<
ScoreList
>(
topLista
,
"pisteet.xml"
);
}
}
}
/// <summary>
/// Luodaan palikka kentälle.
/// </summary>
...
...
@@ -208,33 +325,17 @@ public class Suunnistuspeli : PhysicsGame
karhu
.
IgnoresPhysicsLogics
=
true
;
karhu
.
CanRotate
=
false
;
//PathFollowerBrain karhunAivot = new PathFollowerBrain();
//List<Vector> polku = new List<Vector>();
//polku.Add(new Vector(0, 0));
//polku.Add(new Vector(-100, 0));
//polku.Add(new Vector(-100, 100));
//polku.Add(new Vector(100, 100));
//polku.Add(new Vector(-100, 100));
//karhunAivot.Path = polku;
//karhunAivot.Loop = true;
//karhunAivot.Speed = 100;
const
int
RUUDUN_KOKO
=
40
;
LabyrinthWandererBrain
karhunAivot
=
new
LabyrinthWandererBrain
(
RUUDUN_KOKO
);
karhunAivot
.
Speed
=
100.0
;
karhunAivot
.
LabyrinthWallTag
=
"rakenne"
;
//FollowerBrain karhunAivot = new FollowerBrain("suunnistaja");
//RandomMoverBrain karhunAivot = new RandomMoverBrain(200);
//karhunAivot.ChangeMovementSeconds = 3;
//karhunAivot.Speed = 10;
karhu
.
Brain
=
karhunAivot
;
karhu
.
Tag
=
"bear"
;
karhu
.
Image
=
bear
;
Add
(
karhu
);
}
...
...
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