Jypeli  9
The simple game programming library
Automobile.cs
Siirry tämän tiedoston dokumentaatioon.
1 using System;
2 
3 
4 namespace 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;
39  SpeedMeter.MaxValue = topspeed;
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;
74  BrakeDeceleration = 200;
76  if ( commonImage == null )
77  commonImage = Game.LoadImageFromResources( "Auto.png" );
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  {
171  SpeedMeter.Value -= dt * Acceleration;
172  }
173 
174  base.Update( time );
175  }
176  }
177 }
AdvanceMath.MathHelper.Min
static Scalar Min(params Scalar[] vals)
Definition: MathHelper.cs:242
Jypeli.Assets.Automobile.Maneuverability
Angle Maneuverability
Ohjattavuus, eli kulma jonka auto voi korkeintaan kääntyä sekunnissa.
Definition: Automobile.cs:58
Jypeli.DoubleMeter
Mittari, joka mittaa double-tyyppisiä arvoja. Sidottavissa näyttöihin, kuten ValueDisplay ja BarGa...
Definition: DoubleMeter.cs:11
Jypeli.Assets.Automobile.Automobile
Automobile(double width, double height)
Alustaa uuden auton.
Definition: Automobile.cs:68
Jypeli.Game.Time
static Time Time
Peliaika. Sisältää tiedon siitä, kuinka kauan peliä on pelattu (Time.SinceStartOfGame) ja kuinka kaua...
Definition: Time.cs:25
Jypeli.Assets.Automobile.Accelerate
void Accelerate(double time)
Kiihdyttää.
Definition: Automobile.cs:86
Jypeli.Assets.Automobile.Speed
double Speed
Auton moottorin nopeus. Huomaa, että ei vastaa aina Velocity-ominaisuuden arvoa.
Definition: Automobile.cs:26
AdvanceMath.MathHelper
Definition: MathHelper.cs:38
Jypeli.Image.Color
static Image Color(Image image, Color color)
Värittää kuvan.
Definition: Image.cs:991
Jypeli.Rectangle
Suorakulmio.
Definition: Shapes.cs:318
Jypeli.Shape
Kuvio.
Definition: Shapes.cs:47
Jypeli.Angle.Radians
double Radians
Palauttaa tai asettaa kulman radiaaneina.
Definition: Angle.cs:85
Jypeli.Assets.Automobile.topspeed
double topspeed
Definition: Automobile.cs:13
Jypeli.Assets.Automobile.SpeedMeter
DoubleMeter SpeedMeter
Nopeusmittari, joka mittaa auton nopeuden (moottorin nopeus). Huomaa, että ei vastaa aina Velocity-om...
Definition: Automobile.cs:19
Jypeli.Assets.Automobile.pendingAcceleration
double pendingAcceleration
Definition: Automobile.cs:60
Jypeli.Assets.Automobile.pendingDeceleration
double pendingDeceleration
Definition: Automobile.cs:61
Jypeli.Assets.Automobile.Acceleration
new double Acceleration
Auton kiihtyvyys, eli kuinka monta yksikköä korkeintaan nopeutta voidaan lisätä sekunnissa kiihdyttäm...
Definition: Automobile.cs:47
Jypeli.Time
Sisältää tiedon ajasta, joka on kulunut pelin alusta ja viime päivityksestä.
Definition: Time.cs:14
Jypeli.Assets.Automobile.Turn
void Turn(Angle angle, double time)
Kääntyy niin paljon kuin auton ohjattavuus sallii.
Definition: Automobile.cs:129
Jypeli.Assets.Automobile.Brake
void Brake()
Jarruttaa.
Definition: Automobile.cs:119
Jypeli.PhysicsObject.Velocity
Vector Velocity
Nopeus.
Definition: Movement.cs:15
Jypeli.Game.LoadImageFromResources
static Image LoadImageFromResources(string name)
Lataa kuvan Jypelin sisäisistä resursseista.
Definition: Content.cs:84
Jypeli.Vector.Angle
Angle Angle
Kulma radiaaneina.
Definition: Vector.cs:346
Jypeli.Assets.Automobile
Auto.
Definition: Automobile.cs:10
Jypeli.Time.SinceLastUpdate
TimeSpan SinceLastUpdate
Aika joka on kulunut viime päivityksestä.
Definition: Time.cs:24
Jypeli.Assets.Automobile.TopSpeed
double TopSpeed
Suurin nopeus, johon auto voi kiihdyttää.
Definition: Automobile.cs:34
Jypeli.Color
Väri.
Definition: Color.cs:13
Jypeli.Assets.Automobile.Reverse
void Reverse()
Kiihdyttää takaperin.
Definition: Automobile.cs:111
Jypeli.Vector.FromLengthAndAngle
static Vector FromLengthAndAngle(double length, double angle)
Luo vektorin pituuden ja kulman perusteella.
Definition: Vector.cs:106
Jypeli.Image
Kuva.
Definition: Image.cs:29
Jypeli.Vector.Magnitude
double Magnitude
Vektorin pituus.
Definition: Vector.cs:319
Jypeli.Vector
2D-vektori.
Definition: Vector.cs:59
System
Definition: CFFauxAttributes.cs:29
Jypeli.Assets.Automobile.Brake
void Brake(double time)
Jarruttaa.
Definition: Automobile.cs:95
Jypeli.PhysicsObject
Definition: Collisions.cs:6
Jypeli.Assets.Automobile.BrakeDeceleration
double BrakeDeceleration
Jarrujen hidastavuus, eli kuinka monta yksikköä korkeintaan nopeutta voidaan vähentää sekunnissa jarr...
Definition: Automobile.cs:53
Jypeli.Angle.FromDegrees
static Angle FromDegrees(double degree)
Luo kulman annettujen asteiden mukaan.
Definition: Angle.cs:324
Jypeli.Assets
Definition: Automobile.cs:5
Jypeli.Game
Definition: Content.cs:46
Jypeli.Assets.Automobile.Accelerate
void Accelerate()
Kiihdyttää.
Definition: Automobile.cs:103
AdvanceMath
Definition: Clamped.cs:36
Jypeli.Assets.Automobile.Update
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
Jypeli.Angle
Suuntakulma (rajoitettu -180 ja 180 asteen välille) asteina ja radiaaneina. Tietoja kulmasta: http://...
Definition: Angle.cs:40
Jypeli.Assets.Automobile.commonImage
static Image commonImage
Definition: Automobile.cs:11