source: 2012/09-22/JariK/Jimmy The Survivor!/Jimmy The Survivor!/Jimmy The Survivor!/Jimmy_The_Survivor_.cs @ 3925

Revision 3925, 6.3 KB checked in by sailniir, 7 years ago (diff)

Jimmy goes Boom!

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Jimmy_The_Survivor_ : PhysicsGame
10{
11
12    PhysicsObject Jimmy;
13    PlasmaCannon Jimmyase;
14    EasyHighScore topLista = new EasyHighScore();
15    Image JimmynKuva = LoadImage("Jimmy");
16    Image olionKuva = LoadImage("Vihollinen");
17    DoubleMeter elamaLaskuri;
18    Timer ajastin;
19    public override void Begin()
20    {
21
22        LuoElamaLaskuri();
23        LuoPistelaskuri();
24
25        IsMouseVisible = true;
26        MultiSelectWindow alkuValikko = new MultiSelectWindow
27     ("Jimmy The Survivor 0.6", "General: Lt Jimmy! Your task is to destroy the enemy forces from their factory. Go and try not to get killed! Click here to start", "Exit");
28                   
29        alkuValikko.AddItemHandler(0, AloitaPeli);               
30        alkuValikko.AddItemHandler(1, Exit);
31        alkuValikko.DefaultCancel = 2;
32        Add(alkuValikko);
33
34        Gravity = new Vector(0.0, -800.0);
35        Jimmy = new PhysicsObject(40, 40);
36        Jimmy.Shape = Shape.Ellipse;
37        Jimmy.Restitution = 1.0;
38        Jimmy.Mass = 10.0;
39        Add(Jimmy);
40        AddCollisionHandler(Jimmy, "Vihollinen", VihollinenTormasi); 
41        Jimmyase = new PlasmaCannon(30, 10);
42        Jimmy.Add(Jimmyase);
43        Jimmy.Image = JimmynKuva; 
44       
45        //Näppäimistö
46        Keyboard.Listen(Key.W, ButtonState.Pressed, LiikutaJimmya, null, new Vector(0, 999995));
47        Keyboard.Listen(Key.A, ButtonState.Down,
48        LiikutaJimmya, null, new Vector(-4600, 0));
49        Keyboard.Listen(Key.D, ButtonState.Down,
50        LiikutaJimmya, null, new Vector(4600, 0)); 
51        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
52        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", Jimmyase);
53        Mouse.ListenMovement(0.1, Tahtaa, "Tähtää aseella");
54        Keyboard.Listen(Key.P, ButtonState.Pressed, Pause, "Pysäyttää pelin");
55       
56        //Ohjain
57        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, LiikutaJimmya, null, new Vector(-4600, 0));
58        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, LiikutaJimmya, null, new Vector(4600, 0));
59        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, LiikutaJimmya, null, new Vector(0, 9999999));
60        ControllerOne.Listen(Button.A, ButtonState.Down, AmmuAseella, "Ammu", Jimmyase);
61        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.1, Tahtaa, "Tähtää aseella");   
62       
63        //Reunat
64        Surface alaReuna = Surface.CreateBottom(Level);
65        Add(alaReuna);
66        alaReuna.Color = Color.Black;
67        Surface yläreuna = Surface.CreateTop(Level);
68        Add(yläreuna);
69        yläreuna.Color = Color.Black;
70        Surface vasenreuna = Surface.CreateLeft(Level);
71        Add(vasenreuna);
72        vasenreuna.Color = Color.Black;
73        Surface oikeareuna = Surface.CreateRight(Level);
74        oikeareuna.Color = Color.Black;
75        Add(oikeareuna);
76     
77    }
78    void VihollinenTormasi(PhysicsObject Jimmy, PhysicsObject Vihollinen)
79    {     
80        elamaLaskuri.Value -= 1;
81    }
82    void AmmuAseella(PlasmaCannon ase)
83    {
84        PhysicsObject ammus = ase.Shoot();
85
86        if (ammus != null)
87        {
88            Jimmyase.Ammo.Value = 300;
89            AddCollisionHandler(ammus, "Vihollinen", Vihollinenkuolee);
90            AddCollisionHandler(ammus, "Vihollinen", CollisionHandler.ExplodeObject(100, true));
91        }
92
93        ase.FireRate = 10;
94    }
95    void AmmusOsui(PhysicsObject ammus, PhysicsObject Vihollinen)
96    {
97        ammus.Destroy();
98    }
99    void KaannaTykkia(Weapon tykki, Angle kulma)
100    {
101        tykki.Angle += kulma;
102    }
103
104    void Tahtaa(AnalogState hiirenLiike)
105    {
106
107        Vector suunta = (Mouse.PositionOnWorld - Jimmyase.AbsolutePosition).Normalize();
108        Jimmyase.Angle = suunta.Angle;
109    }
110    void Vihollinenkuolee(PhysicsObject ammus, PhysicsObject Vihollinen)
111    {
112        Vihollinen.Destroy();
113        pisteLaskuri.Value += 1;
114    }
115    void LisaaVihollisia()
116    {
117        ajastin = new Timer();
118        ajastin.Interval = 0.4;
119        ajastin.Timeout += LisaaVihollinen;
120        ajastin.Start();
121    }
122    void LisaaVihollinen()
123    {
124        PhysicsObject Vihollinen = new PhysicsObject(50, 50);
125        Vihollinen.Shape = Shape.Ellipse;
126        Vihollinen.Position = Level.GetRandomPosition();
127        Add(Vihollinen);
128        Vihollinen.Tag = "Vihollinen";
129        Vihollinen.Image = olionKuva; 
130   
131    }
132    void AloitaPeli()
133    { 
134        LisaaVihollisia();
135    }
136    void ParhaatPisteet()
137    { 
138    }
139
140    IntMeter pisteLaskuri;
141
142    void LuoPistelaskuri()
143    {
144        pisteLaskuri = new IntMeter(0);
145
146        Label pisteNaytto = new Label();
147        pisteNaytto.X = Screen.Left + 100;
148        pisteNaytto.Y = Screen.Top - 100;
149        pisteNaytto.TextColor = Color.Black;
150        pisteNaytto.Color = Color.White;
151
152        pisteNaytto.BindTo(pisteLaskuri);
153        Add(pisteNaytto);
154   
155    }
156    void PainettiinValikonNappia(int valinta)
157    {
158        switch (valinta)
159        {
160            case 0:
161                // AloitaPeli();
162                break;
163            case 1:
164                Exit();
165                break;
166        }
167
168    }
169    void LuoElamaLaskuri()
170    {
171        elamaLaskuri = new DoubleMeter(10);
172        elamaLaskuri.MaxValue = 10;
173        elamaLaskuri.LowerLimit += ElamaLoppui;
174       
175
176        ProgressBar elamaPalkki = new ProgressBar(150, 20);
177        elamaPalkki.X = Screen.Left + 150;
178        elamaPalkki.Y = Screen.Top - 20;
179        elamaPalkki.BindTo(elamaLaskuri);
180        Add(elamaPalkki);
181    }
182
183    void ElamaLoppui()
184    {
185        ClearGameObjects();
186        MessageDisplay.Add(" General: Lt Jimmy! Nooooooooooooooooooooo! ");
187        topLista.EnterAndShow(pisteLaskuri.Value);
188        topLista.HighScoreWindow.Closed += delegate { Exit(); };
189        ajastin.Stop();
190        MessageDisplay.MessageTime = new TimeSpan(0, 0, 60);
191    }
192   
193    void LiikutaJimmya(Vector vektori)
194    {
195        Jimmy.Push(vektori);
196    }
197   
198    void Tahtaaminen(AnalogState tatinTila) 
199    {
200        Jimmyase.Angle = tatinTila.StateVector.Angle;
201    }   
202}
Note: See TracBrowser for help on using the repository browser.