Jypeli 10
The simple game programming library
Automobile.cs
Siirry tämän tiedoston dokumentaatioon.
1using System;
2
3
4namespace Jypeli.Assets
5{
9 public class Automobile : PhysicsObject
10 {
11 private static Image commonImage = null;
12
13 private double topspeed;
14
19 public DoubleMeter SpeedMeter { get; set; }
20
25 public double Speed
26 {
27 get { return SpeedMeter.Value; }
28 }
29
33 public double TopSpeed
34 {
35 get { return topspeed; }
36 set
37 {
38 topspeed = value;
40 }
41 }
42
47 public new double Acceleration { get; set; }
48
53 public double BrakeDeceleration { get; set; }
54
58 public Angle Maneuverability { get; set; }
59
60 private double pendingAcceleration = 0;
61 private double pendingDeceleration = 0;
62
68 public Automobile( double width, double height )
69 : base( width, height, Shape.Rectangle )
70 {
71 SpeedMeter = new DoubleMeter( 0 );
72 TopSpeed = 1000;
73 Acceleration = 100;
76 if ( commonImage == null )
79 IsUpdated = true;
80 }
81
86 public void Accelerate( double time )
87 {
89 }
90
95 public void Brake( double time )
96 {
98 }
99
103 public void Accelerate()
104 {
106 }
107
111 public void Reverse()
112 {
114 }
115
119 public void Brake()
120 {
122 }
123
129 public void Turn( Angle angle, double time )
130 {
131 int sign = Math.Sign( angle.Radians );
132 Angle += ( sign * angle <= time * Maneuverability ) ? angle : sign * time * Maneuverability;
133 }
134
139 public override void Update( Time time )
140 {
141 double dt = time.SinceLastUpdate.TotalSeconds;
142 bool nochange = true;
143
144 if ( pendingAcceleration != 0 )
145 {
146 // Accelerate
147 double accel = Math.Min( pendingAcceleration, Acceleration * dt );
148 pendingAcceleration -= accel;
149
151 SpeedMeter.Value += accel;
152
153 nochange = false;
154 }
155
156 if ( pendingDeceleration > 0 )
157 {
158 // Brake
159 double decel = AdvanceMath.MathHelper.Min((float)pendingDeceleration, (float)(BrakeDeceleration * dt), (float)Velocity.Magnitude);
160 pendingDeceleration -= decel;
161
163 SpeedMeter.Value -= decel;
164
165 nochange = false;
166
167 }
168
169 if ( nochange )
170 {
172 }
173
174 base.Update( time );
175 }
176 }
177}
static Scalar Min(params Scalar[] vals)
Definition: MathHelper.cs:242
double TopSpeed
Suurin nopeus, johon auto voi kiihdyttää.
Definition: Automobile.cs:34
double Speed
Auton moottorin nopeus. Huomaa, että ei vastaa aina Velocity-ominaisuuden arvoa.
Definition: Automobile.cs:26
void Accelerate(double time)
Kiihdyttää.
Definition: Automobile.cs:86
DoubleMeter SpeedMeter
Nopeusmittari, joka mittaa auton nopeuden (moottorin nopeus). Huomaa, että ei vastaa aina Velocity-om...
Definition: Automobile.cs:19
Angle Maneuverability
Ohjattavuus, eli kulma jonka auto voi korkeintaan kääntyä sekunnissa.
Definition: Automobile.cs:58
static Image commonImage
Definition: Automobile.cs:11
override void Update(Time time)
Ajetaan kun pelitilannetta päivitetään. Päivityksen voi toteuttaa omassa luokassa toteuttamalla tämän...
Definition: Automobile.cs:139
void Brake()
Jarruttaa.
Definition: Automobile.cs:119
void Brake(double time)
Jarruttaa.
Definition: Automobile.cs:95
void Accelerate()
Kiihdyttää.
Definition: Automobile.cs:103
new double Acceleration
Auton kiihtyvyys, eli kuinka monta yksikköä korkeintaan nopeutta voidaan lisätä sekunnissa kiihdyttäm...
Definition: Automobile.cs:47
Automobile(double width, double height)
Alustaa uuden auton.
Definition: Automobile.cs:68
void Turn(Angle angle, double time)
Kääntyy niin paljon kuin auton ohjattavuus sallii.
Definition: Automobile.cs:129
double BrakeDeceleration
Jarrujen hidastavuus, eli kuinka monta yksikköä korkeintaan nopeutta voidaan vähentää sekunnissa jarr...
Definition: Automobile.cs:53
void Reverse()
Kiihdyttää takaperin.
Definition: Automobile.cs:111
Mittari, joka mittaa double-tyyppisiä arvoja. Sidottavissa näyttöihin, kuten ValueDisplay ja BarGa...
Definition: DoubleMeter.cs:11
static Time Time
Peliaika. Sisältää tiedon siitä, kuinka kauan peliä on pelattu (Time.SinceStartOfGame) ja kuinka kaua...
Definition: Time.cs:25
static Image LoadImageFromResources(string name)
Lataa kuvan Jypelin sisäisistä resursseista.
Definition: Content.cs:91
bool IsUpdated
Tarvitseeko olio päivittämistä. Kun perit oman luokkasi tästä luokasta, aseta tämä arvoon true,...
Kuva.
Definition: Image.cs:30
static Image Color(Image image, Color color)
Värittää kuvan.
Definition: Image.cs:1005
ValueType MaxValue
Mittarin suurin sallittu arvo. Kun mittari saavuttaa tämän arvon, laukeaa tapahtuma UpperLimit.
Definition: Meter.cs:177
ValueType Value
Mittarin arvo.
Definition: Meter.cs:129
Kappale joka noudattaa fysiikan lakeja, johon voi törmätä. Vaatii että käytössä on fysiikkapeli.
Definition: Collisions.cs:7
Vector Velocity
Nopeus.
Definition: Movement.cs:15
Suorakulmio.
Definition: Shapes.cs:322
Kuvio.
Definition: Shapes.cs:47
Suuntakulma (rajoitettu -180 ja 180 asteen välille) asteina ja radiaaneina. Tietoja kulmasta: http://...
Definition: Angle.cs:40
static Angle FromDegrees(double degree)
Luo kulman annettujen asteiden mukaan.
Definition: Angle.cs:324
double Radians
Palauttaa tai asettaa kulman radiaaneina.
Definition: Angle.cs:85
Väri.
Definition: Color.cs:13
Sisältää tiedon ajasta, joka on kulunut pelin alusta ja viime päivityksestä.
Definition: Time.cs:14
TimeSpan SinceLastUpdate
Aika joka on kulunut viime päivityksestä.
Definition: Time.cs:27
2D-vektori.
Definition: Vector.cs:67
Angle Angle
Kulma radiaaneina.
Definition: Vector.cs:372
double Magnitude
Vektorin pituus.
Definition: Vector.cs:345
static Vector FromLengthAndAngle(double length, double angle)
Luo vektorin pituuden ja kulman perusteella.
Definition: Vector.cs:114