Jypeli 10
The simple game programming library
PlatformWandererBrain.cs
Siirry tämän tiedoston dokumentaatioon.
1using System;
2
3namespace Jypeli
4{
10 {
11 private double _speed = 50;
12 private double _jumpSpeed = 200;
13 private bool _fallsOffPlatforms = false;
14 private bool _triesToJump = false;
16
20 public Direction Direction { get; set; }
21
25 public double JumpSpeed
26 {
27 get { return _jumpSpeed; }
28 set { _jumpSpeed = value; }
29 }
30
34 public double Speed
35 {
36 get { return _speed; }
37 set { _speed = value; }
38 }
39
44 {
45 get { return _fallsOffPlatforms; }
46 set { _fallsOffPlatforms = value; }
47 }
48
52 public bool TriesToJump
53 {
54 get { return _triesToJump; }
55 set { _triesToJump = value; }
56 }
57
63 {
65 }
66
68 protected override void OnAddToGame()
69 {
70 base.OnAddToGame();
72 }
73
76 public override void OnCollision( IGameObject target )
77 {
78 //if ( target is PhysicsObject && Owner.Y > target.Y && target.Width > Owner.Width )
79 //{
80 // platform = (PhysicsObject)target;
81
82 // // ...
83 // platform.Color = RandomGen.NextColor();
84 // platform.Image = null;
85 //}
86
87 base.OnCollision( target );
88 }
89
91 protected override void Update(Time time)
92 {
93
94 if (!(this.Owner is PlatformCharacter))
95 {
96 return;
97 }
98
99 //Calculate from Speed later?
100 double yTolerance = 10.0;
101 double xTolerance = 10.0;
102
104
105 if (_triesToJump)
106 {
107 //Brains are walking against a wall:
108 if (Math.Abs(pc.Velocity.X) < 5)
109 {
110 //If position hasn't changed since last jump, change direction.
111 if ((pc.Position - lastJumpingPosition).Magnitude < 1)
112 {
113 pc.Stop();
114 this.Speed *= -1;
115 }
116 else
117 {
118 pc.Jump(JumpSpeed);
120
121 //Brains don't change direction in mid-air while jumping:
123 {
124 _fallsOffPlatforms = true;
125 Timer.SingleShot(0.5, delegate { _fallsOffPlatforms = false;});
126 }
127 }
128 }
129 }
130
131 //Changes direction if it's about to fall off a platform:
132 if (!_fallsOffPlatforms && pc.IsAboutToFall() && Math.Abs(pc.Velocity.Y) < yTolerance)
133 {
134 pc.Stop();
135
136 if (_triesToJump && Math.Abs(pc.Velocity.X) < xTolerance) this.Speed *= -1;
137 }
138
139 if (!_triesToJump && Math.Abs(pc.Velocity.X) < xTolerance) this.Speed *= -1;
140
141 pc.Walk(this.Speed);
142
143 base.Update(time);
144
145 }
146 }
147}
Aivoluokka peliolioille. Voidaan käyttää tekoälyn ja tilannekohtaisten toimintamallien luomiseen peli...
Definition: Brain.cs:41
IGameObject Owner
Aivojen haltija.
Definition: Brain.cs:69
override Vector?? Position
Definition: Dimensions.cs:30
Vector Velocity
Nopeus.
Definition: Movement.cs:15
override void Stop()
Pysäyttää olion.
Definition: Movement.cs:107
Aivot, jotka laittavat omistajansa hortoilemaan tasohyppelytasoa edestakaisin.
bool TriesToJump
Yrittääkö aivojen omistaja hypätä esteen päälle kun se kävelee esteeseen.
override void OnAddToGame()
Kutsutaan, kun aivojen omistaja lisätään peliin tai omistajaksi asetetaan olio, joka on jo lisätty pe...
override void Update(Time time)
Kutsutaan, kun tilaa päivitetään. Suurin osa päätöksenteosta tapahtuu täällä. Perivässä luokassa meth...
bool FallsOffPlatforms
Tippuuko aivojen omistaja tasojen reunoilta.
PlatformWandererBrain()
Aivot, jotka laittavat omistajansa hortoilemaan tasohyppelytasoa edestakaisin.
override void OnCollision(IGameObject target)
Ajastin, joka voidaan asettaa laukaisemaan tapahtumia tietyin väliajoin.
Definition: Timer.cs:38
static void SingleShot(double seconds, Action onTimeout)
Kutsuu aliohjelmaa onTimeout annetun ajan kuluttua. Ajastin luodaan automaattisesti.
Definition: Timer.cs:220
Tasohyppelypelin hahmo. Voi liikkua ja hyppiä. Lisäksi sillä voi olla ase.
void Walk(double horizontalVelocity)
Liikuttaa hahmoa.
bool Jump(double speed)
Hyppää, jos hahmo on staattisen olion päällä.
bool IsAboutToFall()
Onko hahmo astumassa tyhjän päälle.
Yhteinen rajapinta kaikille peliolioille.
Definition: IGameObject.cs:11
new Vector Position
Paikka.
Definition: Positional.cs:32
Perussuunta tasossa.
Definition: Direction.cs:47
static Direction Right
Suunta oikealle.
Definition: Direction.cs:71
Sisältää tiedon ajasta, joka on kulunut pelin alusta ja viime päivityksestä.
Definition: Time.cs:14
2D-vektori.
Definition: Vector.cs:67
double Y
Vektorin Y-komponentti
Definition: Vector.cs:339
double X
Vektorin X-komponentti.
Definition: Vector.cs:334