source: 2010/27/Aajokahe/Nurinams adventure/Peli.cs @ 1377

Revision 1377, 6.1 KB checked in by aajokahe, 13 years ago (diff)

Nurinam ninja pelistä puuttuu vaan loputtamasti tulvivat vihulaiset.

Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5
6
7class Tasohyppely : PhysicsGame
8{
9    const double nopeus = 200;
10    const double hyppyVoima = 4000;
11    DoubleMeter voimaMittari;
12
13    IntMeter pisteLaskuri;
14    IntMeter pisteLaskuri2;
15
16    PlatformCharacter pelaaja1;
17    PlatformCharacter vihollinen;
18
19    //pyssy = new AssaultRifle(70, 20);
20
21    protected override void Begin()
22    {
23        Gravity = new Vector(0, -1000);
24
25        luoKentta();
26        lisaaNappaimet();
27        vihollinen=LuoVihollinen();
28        LuoLaskuri();
29        LuoHPBar();
30
31        Camera.Follow(pelaaja1);
32        Camera.ZoomFactor = 2.0;
33        Camera.StayInLevel = true;
34        MessageDisplay.Add("sotalordin miehet ovat löytäneet sinun piilopaikkasi ja rynnivät sitä päin kiväärit tanassa. Sinun täytyy puolustaa piilopaikkaasi.");
35
36    }
37
38    void luoKentta()
39    {
40        Level.CreateBorders();
41        Level.Background.CreateGradient(Color.Black, Color.Red);
42
43        lisaaTaso(-500, -300);
44
45
46        lisaaPelaajat();
47    }
48
49    void lisaaTaso(double x, double y)
50    {
51        PhysicsObject taso = PhysicsObject.CreateStaticObject(250, 250);
52        taso.Color = Color.Red;
53        taso.X = x;
54        taso.Y = y;
55        Add(taso);
56        taso.Tag = "talo";
57
58    }
59
60    void lisaaPelaajat()
61    {
62        pelaaja1 = new PlatformCharacter (40, 40);
63        pelaaja1.Mass = 4.0;
64        pelaaja1.Image = LoadImage("Nurinam ninja");
65        pelaaja1.X = -400;
66        pelaaja1.Y = -10;
67        AddCollisionHandler(pelaaja1 , KasittelePelaaja1Tormays);
68        Add(pelaaja1);
69
70       
71
72       
73    }
74
75    void lisaaNappaimet()
76    {
77        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
78        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
79
80        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
81        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
82        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
83
84        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
85
86        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
87        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
88        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
89    }
90
91    void liikuta(PlatformCharacter hahmo, double nopeus)
92    {
93        hahmo.Walk(nopeus);
94       
95    }
96
97    void hyppaa(PlatformCharacter hahmo, double voima)
98    {
99        hahmo.Jump(voima);
100    }
101    PlatformCharacter LuoVihollinen()
102   {
103       PlatformCharacter vihollinen = new PlatformCharacter(40, 40);
104       vihollinen.Shape = Shapes.Circle;
105       vihollinen.Image = LoadImage("Warrior");
106       vihollinen.Mass = 10.0;
107       Add(vihollinen);
108       vihollinen.Y = 0;
109       vihollinen. X= 300;
110       vihollinen.Tag = "vihollinen";
111       AddCollisionHandler(vihollinen, KasitteleVihollisenTormays);
112
113       AssaultRifle    pyssy = new AssaultRifle    (40, 5);
114       vihollinen.Weapon = pyssy ;
115
116
117
118       return vihollinen;
119     }
120   
121    void Ammu()
122    {
123        PhysicsObject ammus = vihollinen.Weapon.Shoot();
124        if (ammus != null)
125        {
126            ammus.Tag = "vihollisammus";
127        }
128
129    }
130
131   protected override void Update(Time time)
132   {
133       vihollinen.Walk(-70);
134       if ((pelaaja1.Y < vihollinen.Y + 10) && (pelaaja1.Y > vihollinen.Y - 10))
135       {
136           Ammu();
137       }
138       base.Update(time);
139       
140   }
141   void KasittelePelaaja1Tormays(PhysicsObject pelaaja1, PhysicsObject kohde)
142   {
143       if (kohde.Tag.ToString() == "vihollinen")
144       {
145           kohde.Destroy();
146           pisteLaskuri.Value++;
147           pisteLaskuri.Value += 1;
148           pisteLaskuri.Value = pisteLaskuri.Value + 1;
149       }
150       if (kohde.Tag.ToString() == "vihollisammus")
151       {
152           pelaaja1.Destroy();
153           
154       }
155   }
156   
157
158   void LuoLaskuri()
159   {
160       pisteLaskuri = new IntMeter(0);
161
162       Label pisteNaytto = new Label();
163       pisteNaytto.X = Screen.Left + 100;
164       pisteNaytto.Y = Screen.Top - 100;
165       pisteNaytto.TextColor = Color.Black;
166
167       pisteNaytto.BindTo(pisteLaskuri);
168       Add(pisteNaytto);
169
170       Label pisteTeksti = new Label("Pisteet: ");
171       pisteTeksti.X = Screen.Left + 50;
172       pisteTeksti.Y = Screen.Top - 100;
173       pisteTeksti.TextColor = Color.Black;
174       Add(pisteTeksti);
175
176
177
178   }
179
180   void LuoHPBar()
181   {
182       pisteLaskuri2 = new IntMeter(0);
183
184       Label pisteNaytto2 = new Label();
185       pisteNaytto2.X = Screen.Left  +250;
186       pisteNaytto2.Y = Screen.Top -100;
187       pisteNaytto2.TextColor = Color.Black;
188
189       pisteNaytto2.BindTo(pisteLaskuri2);
190       Add(pisteNaytto2);
191
192       Label pisteTeksti2 = new Label("Rakennus: ");
193       pisteTeksti2.X = Screen.Left + 190;
194       pisteTeksti2.Y = Screen.Top -100;
195       pisteTeksti2.TextColor = Color.Black;
196       Add(pisteTeksti2);
197
198
199
200       voimaMittari = new DoubleMeter(60);
201       voimaMittari.MaxValue = 60;
202       BarGauge voimaPalkki = new BarGauge(10, 150);
203       voimaPalkki.BindTo(voimaMittari);
204       Add(voimaPalkki);
205       voimaPalkki.X = (0.85 * Screen.LeftSafe);
206       voimaPalkki.Y = (0.05 * Screen.Height);
207       voimaPalkki.BarColor = Color.Aqua;
208       voimaPalkki.BorderColor = Color.Black;
209       voimaPalkki.Angle = Angle.Degrees(90);
210       voimaMittari.LowerLimit += new Meter<double>.OnLimitHandler(peliLoppuu);
211
212
213   }
214
215   void peliLoppuu(double value)
216   {
217       Exit();
218   }
219
220   void KasitteleVihollisenTormays(PhysicsObject Vihollinen, PhysicsObject kohde)
221   {
222       if (kohde.Tag.ToString() == "talo")
223       {
224           Vihollinen.X = Vihollinen.X + 50;
225           voimaMittari.Value--;
226       }
227   }
228
229}
Note: See TracBrowser for help on using the repository browser.