Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
O
ohj1ht
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
pepihlaj
ohj1ht
Commits
2d8555f3
Commit
2d8555f3
authored
2 years ago
by
Pekka Pihlajamaa
Browse files
Options
Downloads
Patches
Plain Diff
Vahan siistimista
parent
6aec2e5c
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
Hiko/Hiko/Hiko.cs
+131
-11
131 additions, 11 deletions
Hiko/Hiko/Hiko.cs
with
131 additions
and
11 deletions
Hiko/Hiko/Hiko.cs
+
131
−
11
View file @
2d8555f3
...
...
@@ -8,13 +8,30 @@ using System.Threading;
namespace
Hiko
{
public
class
Hiko
:
PhysicsGame
/// <summary>
/// Tehdään vihuluokka helpottamaan hitpointtien laskussa
/// </summary>
class
Vihu
:
PlatformCharacter
{
private
IntMeter
elamalaskuri
=
new
IntMeter
(
3
,
0
,
3
);
public
IntMeter
Elamalaskuri
{
get
{
return
elamalaskuri
;
}
}
public
Vihu
(
double
leveys
,
double
korkeus
)
:
base
(
leveys
,
korkeus
)
{
elamalaskuri
.
LowerLimit
+=
delegate
{
this
.
Destroy
();
};
}
}
public
class
Hiko
:
PhysicsGame
{
PhysicsObject
pelaaja
;
GameObject
tahtain
;
Image
taustakuva
=
LoadImage
(
"Testitaustakuva"
);
/// <summary>
/// Luodaan peliin kenttä
/// </summary>
private
static
readonly
String
[]
lines
=
{
" "
,
...
...
@@ -24,7 +41,15 @@ namespace Hiko
" "
,
" "
,
" "
,
" X "
,
" ___ "
,
" X "
,
" _____ "
,
" X "
,
" ____ "
,
" "
,
" X "
,
" __________ "
,
" "
,
" "
,
" "
,
...
...
@@ -32,14 +57,6 @@ namespace Hiko
" "
,
" "
,
" "
,
" "
,
" "
,
" X X "
,
" X X X "
,
" X X X "
,
" X X X "
,
" X X X "
,
" X X X "
,
};
private
static
readonly
int
tileWidth
=
800
/
lines
[
0
].
Length
;
private
static
readonly
int
tileHeight
=
480
/
lines
.
Length
;
...
...
@@ -57,9 +74,17 @@ namespace Hiko
Gravity
=
new
Vector
(
0.0
,
-
981.0
);
LuoOhjaimet
();
LuoTahtain
();
LuoAikalaskuri
();
tiles
.
SetTileMethod
(
'X'
,
LuoMaavihu
);
tiles
.
SetTileMethod
(
'_'
,
LuoTaso
);
tiles
.
Execute
(
tileWidth
,
tileHeight
);
}
/// <summary>
/// Luo pelaajamodellin ja antaa sille ominaisuudet
/// </summary>
/// <returns></returns>
PhysicsObject
LuoPelaaja
()
{
pelaaja
=
new
PhysicsObject
(
20
,
40
);
...
...
@@ -71,18 +96,34 @@ namespace Hiko
Add
(
pelaaja
);
return
pelaaja
;
}
/// <summary>
/// Luo vihollisolion
/// </summary>
/// <param name="paikka"></param>
/// <param name="leveys"></param>
/// <param name="korkeus"></param>
void
LuoMaavihu
(
Vector
paikka
,
double
leveys
,
double
korkeus
)
{
PlatformCharacter
maavihu
=
new
PlatformCharacter
(
leveys
,
korkeus
);
//PlatformCharacter maavihu = new PlatformCharacter(leveys, korkeus);
Vihu
maavihu
=
new
Vihu
(
leveys
,
korkeus
);
maavihu
.
Shape
=
Shape
.
Circle
;
maavihu
.
Color
=
Color
.
Blue
;
maavihu
.
Position
=
paikka
;
maavihu
.
Tag
=
"maavihu"
;
PlatformWandererBrain
tasoaivot
=
new
PlatformWandererBrain
();
tasoaivot
.
Speed
=
100
;
maavihu
.
Brain
=
tasoaivot
;
maavihu
.
Image
=
LoadImage
(
"örkki"
);
Add
(
maavihu
);
}
/// <summary>
/// Luo näkyvän indikaattorin tähtäimestä
/// </summary>
/// <returns></returns>
GameObject
LuoTahtain
()
{
tahtain
=
new
GameObject
(
30.0
,
30.0
,
Shape
.
Circle
);
...
...
@@ -90,6 +131,11 @@ namespace Hiko
Add
(
tahtain
);
return
tahtain
;
}
/// <summary>
/// Luo tarvittavat ohjaimet pelaajalle
/// </summary>
public
void
LuoOhjaimet
()
{
Keyboard
.
Listen
(
Key
.
Left
,
ButtonState
.
Down
,
LiikutaPelaajaa
,
null
,
new
Vector
(-
1000
,
0
));
...
...
@@ -105,16 +151,32 @@ namespace Hiko
Mouse
.
Listen
(
MouseButton
.
Left
,
ButtonState
.
Pressed
,
Ammu
,
null
);
}
/// <summary>
/// Tämä aliohjelma liikuttaa pelaajaa tiettyyn suuntaan
/// </summary>
/// <param name="vektori">Minne suuntaan sitä liikutetaan</param>
void
LiikutaPelaajaa
(
Vector
vektori
)
{
pelaaja
.
Push
(
vektori
);
}
/// <summary>
/// Tässä kerrotaan missä tähtäin on ruudulla
/// </summary>
void
KuunteleLiiketta
()
{
tahtain
.
X
=
Mouse
.
PositionOnWorld
.
X
;
tahtain
.
Y
=
Mouse
.
PositionOnWorld
.
Y
;
}
/// <summary>
/// Tämä luo projektiilin jolla voi tuhota vihuja
/// </summary>
void
Ammu
()
{
PhysicsObject
luoti
=
new
PhysicsObject
(
20
,
20
);
...
...
@@ -130,12 +192,70 @@ namespace Hiko
Add
(
luoti
);
//luoti.Hit(new Vector(pelaaja.RelativePosition.X - Mouse.PositionOnScreen.X, pelaaja.RelativePosition.Y - Mouse.PositionOnScreen.Y));
Vector
suunta
=
new
Vector
((
pelaaja
.
RelativePosition
.
X
-
Mouse
.
PositionOnScreen
.
X
)
*
-
1
,
(
pelaaja
.
RelativePosition
.
Y
-
Mouse
.
PositionOnScreen
.
Y
)
*
-
1
);
Vector
suunta
=
AnnaLuodinSuunta
(
pelaaja
);
Angle
a
=
suunta
.
Angle
;
luoti
.
Hit
(
Vector
.
FromLengthAndAngle
(
200
,
a
));
AddCollisionHandler
<
PhysicsObject
,
Vihu
>(
luoti
,
LuotiOsuuVihuun
);
}
/// <summary>
/// Tässä funktio palauttaa luodin suunnan
/// </summary>
/// <param name="pelaaja">tarvittava positio mistä se ammutaan</param>
/// <returns></returns>
public
Vector
AnnaLuodinSuunta
(
PhysicsObject
pelaaja
)
{
return
new
Vector
((
pelaaja
.
RelativePosition
.
X
-
Mouse
.
PositionOnScreen
.
X
)
*
-
1
,
(
pelaaja
.
RelativePosition
.
Y
-
Mouse
.
PositionOnScreen
.
Y
)
*
-
1
);
}
/// <summary>
/// Tässä kerrotaan mitä tapahtuu kun luoti osuu pelaajaan
/// </summary>
/// <param name="luoti">projektiili joka osuu</param>
/// <param name="vihu">mihin osuu</param>
private
void
LuotiOsuuVihuun
(
PhysicsObject
luoti
,
Vihu
vihu
)
{
MessageDisplay
.
Add
(
"luoti osui vihuun"
);
vihu
.
Elamalaskuri
.
Value
--;
}
/// <summary>
/// Tämä aliohjelma luo tasanteita kenttään
/// </summary>
/// <param name="paikka">tason paikka koordinaatistossa</param>
/// <param name="leveys">tason leveys</param>
/// <param name="pituus">tason korkeus</param>
void
LuoTaso
(
Vector
paikka
,
double
leveys
,
double
pituus
)
{
Surface
taso
=
new
Surface
(
leveys
,
pituus
);
taso
.
Position
=
paikka
;
taso
.
Color
=
Color
.
Orange
;
Add
(
taso
);
}
/// <summary>
/// Tässä on aikalaskuri peliin
/// </summary>
void
LuoAikalaskuri
()
{
Jypeli
.
Timer
aikalaskuri
=
new
Jypeli
.
Timer
();
aikalaskuri
.
Start
();
Label
aikanaytto
=
new
Label
();
aikanaytto
.
TextColor
=
Color
.
Orange
;
aikanaytto
.
DecimalPlaces
=
1
;
aikanaytto
.
BindTo
(
aikalaskuri
.
SecondCounter
);
aikanaytto
.
Position
=
new
Vector
(
0
,
300
);
Add
(
aikanaytto
);
}
}
}
\ 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