Ignore:
Timestamp:
2017-01-28 14:52:25 (2 years ago)
Author:
sieerinn
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2016/koodauskerho/OttoK/peli2/peli2/peli2/peli2.cs

    r8375 r8396  
    77using Jypeli.Widgets; 
    88 
     9class Alus : PhysicsObject 
     10{ 
     11    private IntMeter elamaLaskuri = new IntMeter(10, 0, 20); 
     12    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } } 
     13 
     14    private GameObject alustuli; 
     15    public GameObject Alustuli { get { return alustuli; } } 
     16 
     17 
     18    public Alus(double leveys, double korkeus, Image alustulenkuva) 
     19        : base(leveys, korkeus) 
     20    { 
     21        elamaLaskuri.LowerLimit += delegate { this.Destroy(); }; 
     22 
     23        alustuli = new GameObject(10, 15); 
     24        alustuli.Image = alustulenkuva; 
     25        this.Add(alustuli); 
     26        alustuli.Position = new Vector(0, -35); 
     27        alustuli.IsVisible = false; 
     28    } 
     29} 
    930public class peli2 : PhysicsGame 
    1031{ 
    1132    Image oranssialuskuva = LoadImage("oranssialus"); 
    1233    Image vihreealuskuva = LoadImage("vihreealus"); 
     34    Image mustaluskuva = LoadImage("mustalus"); 
     35    Image alustulenkuva = LoadImage("alustuli"); 
     36    Image vihreeammuskuva = LoadImage("vihreepanos"); 
     37    Image oranssiammuskuva = LoadImage("oranssipanos"); 
     38    Image meteoriittikuva = LoadImage("meteoriitti"); 
    1339 
    1440    public override void Begin() 
    1541    { 
    1642        SmoothTextures = false; 
     43        Level.Size = new Vector(1900, 1000); 
    1744 
    18         PhysicsObject vihreealus = TeeAlus(100, 100, vihreealuskuva); 
     45        Alus vihreealus = TeeAlus(400, 0, vihreealuskuva, Screen.Right - 150, Color.LightGreen); 
     46        vihreealus.Tag = "vihreealus"; 
    1947 
    20         PhysicsObject oranssialus = TeeAlus(200, 200, oranssialuskuva); 
     48        Alus oranssialus = TeeAlus(-400, 0, oranssialuskuva, Screen.Left + 150, Color.Orange); 
     49        oranssialus.Tag = "oranssialus"; 
    2150 
    2251        PhoneBackButton.Listen(ConfirmExit, "Quit"); 
    2352        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Quit"); 
    2453        Keyboard.Listen(Key.Up, ButtonState.Down, Liiku, "Liiku", vihreealus, 800.0); 
     54        Keyboard.Listen(Key.Up, ButtonState.Released, Sammutatuli, null, vihreealus); 
    2555        Keyboard.Listen(Key.Right, ButtonState.Down, Kaanny, "Käänny", vihreealus, -8000.0); 
    2656        Keyboard.Listen(Key.Left, ButtonState.Down, Kaanny, "Käänny", vihreealus, 8000.0); 
     
    2959        Keyboard.Listen(Key.W, ButtonState.Down, Liiku, "Liiku", oranssialus, 800.0); 
    3060        Keyboard.Listen(Key.D, ButtonState.Down, Kaanny, "Käänny", oranssialus, -8000.0); 
     61        Keyboard.Listen(Key.W, ButtonState.Released, Sammutatuli, null, oranssialus); 
    3162        Keyboard.Listen(Key.A, ButtonState.Down, Kaanny, "Käänny", oranssialus, 8000.0); 
     63        Keyboard.Listen(Key.LeftControl, ButtonState.Pressed, ammu, "Ammu", oranssialus); 
     64 
     65        Timer meteorcreater = new Timer(); 
     66        meteorcreater.Interval = RandomGen.NextDouble(6, 16); 
     67        meteorcreater.Timeout += delegate 
     68        { 
     69            PhysicsObject meteoriitti = TeeMeteoriitti(100, 100); 
     70            meteoriitti.Velocity = (RandomGen.NextVector(-75, -75, 75, 75)); 
     71            meteoriitti.AngularVelocity = RandomGen.NextDouble(-2, 2); 
     72            meteorcreater.Interval = RandomGen.NextDouble(6, 14); 
     73        }; 
     74        meteorcreater.Start(); 
    3275 
    3376        Level.Background.Color = Color.Black; 
    3477        Level.Background.CreateStars(); 
     78        Timer ajastin = new Timer(); 
     79        ajastin.Interval = 0.1; 
     80        ajastin.Timeout += delegate 
     81        { 
     82            if (vihreealus.X < Level.Left) 
     83                vihreealus.X = Level.Right; 
     84            if (vihreealus.X > Level.Right) 
     85                vihreealus.X = Level.Left; 
     86            if (vihreealus.Y > Level.Top) 
     87                vihreealus.Y = Level.Bottom; 
     88            if (vihreealus.Y < Level.Bottom) 
     89                vihreealus.Y = Level.Top; 
     90 
     91            if (oranssialus.X < Level.Left) 
     92                oranssialus.X = Level.Right; 
     93            if (oranssialus.X > Level.Right) 
     94                oranssialus.X = Level.Left; 
     95            if (oranssialus.Y > Level.Top) 
     96                oranssialus.Y = Level.Bottom; 
     97            if (oranssialus.Y < Level.Bottom) 
     98                oranssialus.Y = Level.Top; 
     99        }; 
     100        ajastin.Start(); 
    35101    } 
    36102 
    37103    void ammu(PhysicsObject pelaaja) 
    38104    { 
    39         PhysicsObject ammus = new PhysicsObject(15, 15); 
     105        PhysicsObject ammus = new PhysicsObject(10, 7); 
     106        if (pelaaja.Tag.Equals("vihreealus")) 
     107        { 
     108            ammus.Image = vihreeammuskuva; 
     109        } 
     110        else 
     111        { 
     112            ammus.Image = oranssiammuskuva; 
     113        } 
    40114        ammus.Angle = pelaaja.Angle + Angle.FromDegrees(90); 
    41         ammus.Velocity = Vector.FromLengthAndAngle(100, pelaaja.Angle + Angle.FromDegrees(90)); 
     115        ammus.Velocity = Vector.FromLengthAndAngle(700, pelaaja.Angle + Angle.FromDegrees(90)); 
    42116        ammus.Position = pelaaja.Position + Vector.FromLengthAndAngle(pelaaja.Width * 0.75, pelaaja.Angle + Angle.FromDegrees(90)); 
     117        ammus.Tag = "ammus"; 
     118        ammus.LifetimeLeft = TimeSpan.FromSeconds(10); 
    43119        Add(ammus); 
    44120    } 
    45     PhysicsObject TeeAlus(double x, double y, Image aluskuva ) 
     121    Alus TeeAlus(double x, double y, Image aluskuva, double xpalkinpaikka, Color palkinvari) 
    46122    { 
    47         PhysicsObject alus = new PhysicsObject(60, 70); 
     123        Alus alus = new Alus(60, 70, alustulenkuva); 
    48124        alus.Position = new Vector(x, y); 
    49         alus.Shape = Shape.Rectangle; 
     125        alus.Shape = Shape.FromImage(mustaluskuva); 
    50126        alus.Image = aluskuva; 
    51127        alus.LinearDamping = 0.98; 
    52128        alus.AngularDamping = 0.98; 
    53129        Add(alus); 
     130        AddCollisionHandler(alus, "ammus", TormaaAmmukseen); 
     131        ProgressBar elamaPalkki = new ProgressBar(150, 20); 
     132        elamaPalkki.BarColor = palkinvari; 
     133        elamaPalkki.X = xpalkinpaikka; 
     134        elamaPalkki.Y = Screen.Top - 20; 
     135        elamaPalkki.BindTo(alus.ElamaLaskuri); 
     136        Add(elamaPalkki); 
    54137        return alus; 
    55138    } 
    56     void Liiku(PhysicsObject alus, double nopeus) 
     139    void Liiku(Alus alus, double nopeus) 
    57140    { 
    58141        alus.Push((alus.Angle + Angle.FromDegrees(90)).GetVector() * nopeus); 
     142        alus.Alustuli.IsVisible = true; 
     143    } 
     144    void Sammutatuli(Alus alus) 
     145    { 
     146        alus.Alustuli.IsVisible = false; 
    59147    } 
    60148    void Kaanny(PhysicsObject alus, double nopeus) 
     
    62150        alus.ApplyTorque(nopeus); 
    63151    } 
     152    PhysicsObject TeeMeteoriitti(double leveys, double korkeus) 
     153    { 
     154        PhysicsObject meteoriitti = new PhysicsObject(leveys, korkeus); 
     155        meteoriitti.Mass = 100; 
     156        meteoriitti.Image = meteoriittikuva; 
     157        Add(meteoriitti); 
     158        return meteoriitti; 
     159    } 
     160    void TormaaAmmukseen(PhysicsObject alus, PhysicsObject ammus) 
     161    { 
     162 
     163        ammus.Destroy(); 
     164        ((Alus)alus).ElamaLaskuri.Value -= 1; 
     165        if (((Alus)alus).ElamaLaskuri.Value == ((Alus)alus).ElamaLaskuri.MinValue) 
     166        { 
     167            if (alus.Tag.Equals("vihreealus")) 
     168            { 
     169                Keyboard.Disable(Key.RightControl); 
     170            } 
     171            if (alus.Tag.Equals("oranssialus")) 
     172            { 
     173                Keyboard.Disable(Key.LeftControl); 
     174            } 
     175        } 
     176    } 
    64177} 
Note: See TracChangeset for help on using the changeset viewer.