source: 2010/23/elalylon/Ball Wars/Peli.cs @ 669

Revision 669, 8.3 KB checked in by paaaanro, 11 years ago (diff)

Tein aseet tekemään damagea ja lisäsin tähtäimen.

Line 
1using System;
2using Jypeli;
3using Jypeli.ScreenObjects;
4using Jypeli.Assets;
5
6
7namespace Ball_Wars
8{
9    class Tasohyppely : PhysicsGame
10    {
11        const double nopeus = 200;
12        const double hyppyVoima = 8000;
13        int enemyHitpoints = 10;
14        int pelaajaHitpoints = 10;
15        Vector enemyshootvector;
16        Vector tahtaa;
17        Vector vasemmalle = new Vector(-200, 0);
18        Vector oikealle = new Vector(200, 0);
19
20        GameObject tahtain;
21        IntMeter pisteLaskuri;
22        ValueDisplay pisteNaytto;
23        ValueDisplay ammoNaytto;
24        PlatformCharacter pelaaja1;
25        PlatformCharacter vihollinen;
26        AssaultRifle m16;
27        AssaultRifle Glock;
28
29
30        protected override void Begin()
31        {
32            Level.Width = 2000;
33            Level.Height = 1000;
34
35            // Luodaan pistelaskuri
36            pisteLaskuri = new IntMeter(0);
37
38            //Luodaan tähtäin
39            //tahtain = new PhysicsObject(30, 30, Shapes.Circle);
40            tahtain = new GameObject(30, 30, Shapes.Circle);
41            tahtain.Image = LoadImage("Tahtain");
42            Add(tahtain);
43            //tahtain.
44            //tahtain.IgnoresCollisionResponse = true;
45            //Add(tahtain);
46
47            // luodaan pistelaskunäyttö
48            pisteNaytto = new ValueDisplay();
49            pisteNaytto.Text = "Pisteitä: ";
50            pisteNaytto.X = Screen.RightSafe - 250;
51            pisteNaytto.Y = Screen.TopSafe - 50;
52            pisteNaytto.BindTo(pisteLaskuri);
53            Add(pisteNaytto);    // lisätään peliin
54
55            ammoNaytto = new ValueDisplay();
56            ammoNaytto.X = Screen.RightSafe - 250;
57            ammoNaytto.Y = Screen.TopSafe - 50;
58            Add(ammoNaytto);
59
60
61            // Ajastin, jonka avulla ajastetaan vihollisen toiminta,
62            // mm. ampuminen säännöllisin väliajoin
63            Timer aly = new Timer();
64            aly.Interval = 0.01; // 0.1 sekuntia
65            aly.Trigger += enemyshoot;
66            aly.Trigger += enemymove;
67            Add(aly);
68            aly.Start();
69
70            // Zoomataan lähemmäksi
71            Camera.ZoomFactor = 2.0;
72
73            Camera.StayInLevel = true;
74
75            luoKentta();
76
77        }
78
79        void enemyshoot(Timer t)
80        {enemyshootvector = pelaaja1.Position - vihollinen.Position;
81            vihollinen.Weapon.Angle = enemyshootvector.Angle;
82            if (pelaaja1.Position.X < vihollinen.Position.X)
83            {
84                vihollinen.Image = LoadImage("enemy2");
85                Glock.Image = LoadImage("Glock 17_2");
86            }
87            if (pelaaja1.Position.X < vihollinen.Position.X)
88            {
89                vihollinen.Image = LoadImage("enemy");
90                Glock.Image = LoadImage("Glock 17");
91            }
92            Glock.Use();
93        }
94        void enemymove(Timer t)
95        {
96
97            if (pelaaja1.Position.X < (vihollinen.Position.X - 300))
98            {
99                vihollinen.Hit(vasemmalle);
100                return;
101            }
102            else if (pelaaja1.Position.X > (vihollinen.Position.X + 300))
103            {
104                vihollinen.Hit(oikealle);
105                return;
106            }
107        }
108
109
110
111        void luoKentta()
112        {
113            Level.CreateBorders();
114            Level.Background.CreateGradient(Color.Blue, Color.Red);
115            Gravity = new Vector(0, -1000);
116
117
118            lisaaTaso(-200, -400);
119            lisaaTaso(0, -300);
120            lisaaTaso(-450, -300);
121
122            lisaaPelaajat();
123            LuoVihollinen();
124            Camera.Follow(pelaaja1);
125            lisaaNappaimet();
126        }
127
128        void lisaaTaso(double x, double y)
129        {
130            PhysicsObject taso = PhysicsObject.CreateStaticObject(100, 30);
131            taso.Color = Color.Gray;
132            taso.X = x;
133            taso.Tag = "taso";
134            taso.Y = y;
135            Add(taso);
136
137        }
138
139        void lisaaPelaajat()
140        {
141            pelaaja1 = new PlatformCharacter(50, 50);
142            pelaaja1.Mass = 10.0;
143            pelaaja1.Image = LoadImage("Hero");
144            pelaaja1.X = 0;
145            pelaaja1.Y = Level.Bottom + 120;
146            pelaaja1.Tag = "pelaaja1";
147            Add(pelaaja1);
148
149            m16 = new AssaultRifle(100, 30);
150            m16.Ammo.Value = 60;
151            pelaaja1.Add(m16);
152            m16.Image = LoadImage("m16_levea");
153            m16.TimeBetweenUse = new TimeSpan(1500000);
154            m16.BulletCollision = LuotiOsuu;
155
156            // TODO: Panokset lentämään suorempaan
157        }
158        void LuotiOsuu(PhysicsObject ammus, PhysicsObject kohde)
159        {
160            if (kohde.Tag.ToString() == "vihollinen")
161            {
162                enemyHitpoints -= 1;
163                if (enemyHitpoints == 0)
164                {
165                    Explosion PAM = new Explosion(100);
166                    PAM.Force = 100;
167                    PAM.MaxRadius = 100;
168                    PAM.Position = vihollinen.Position;
169                    Add(PAM);
170                    pisteLaskuri.Value += 10;
171                    vihollinen.Destroy();
172                }
173            }
174
175            if (kohde.Tag.ToString() != "pelaaja1")
176            {
177                ammus.Destroy();
178            }
179        }
180            void LuotiOsuux(PhysicsObject ammus, PhysicsObject kohde)
181        {
182            if (kohde.Tag.ToString() == "pelaaja1")
183            {
184                pelaajaHitpoints -= 1;
185                if (pelaajaHitpoints == 0)
186                {
187                    Explosion PAM = new Explosion(100);
188                    PAM.Force = 100;
189                    PAM.MaxRadius = 150;
190                    PAM.Position = pelaaja1.Position;
191                    Add(PAM);
192                    pelaaja1.Destroy();
193                }
194            }
195
196            if (kohde.Tag.ToString() != "vihollinen")
197            {
198                ammus.Destroy();
199            }
200           
201        }
202
203        void LuoVihollinen()
204        {
205            vihollinen = new PlatformCharacter(50, 50);
206            vihollinen.Mass = 10.0;
207            vihollinen.Image = LoadImage("enemy");
208            vihollinen.X = 200;
209            vihollinen.Y = Level.Bottom + 120;
210            vihollinen.Tag = "vihollinen";
211            Add(vihollinen);
212
213            Glock = new AssaultRifle(100, 30);
214            Glock.Ammo.Value = 14;
215            pelaaja1.Weapon = m16;
216            Glock.Image = LoadImage("Glock 17");
217            Glock.TimeBetweenUse = new TimeSpan(3000000);
218            vihollinen.Weapon = Glock;
219            Glock.BulletCollision = LuotiOsuux;
220
221        }
222        void lisaaNappaimet()
223        {
224            Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
225            Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
226
227            Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
228            Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
229            Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
230            Mouse.Listen(MouseButton.Left, ButtonState.Down, shoot, "ammu");
231            Mouse.ListenMovement(0.0, tahtax_, null); // 0.0 tarkottaa että hiirtä ei tarvi liikuttaa, että aliohjelmaa tahtax_ kutsutaan
232        }
233
234        void tahtax_(AnalogState tila)
235        {
236
237            tahtain.Position = Mouse.PositionOnWorld;
238            if (tahtain.Position.X < pelaaja1.Position.X)
239            {
240                pelaaja1.Image = LoadImage("Hero2");
241                m16.Image = LoadImage("m16_levea2");
242            }
243            else if (tahtain.Position.X > pelaaja1.Position.X)
244            {
245                pelaaja1.Image = LoadImage("Hero");
246                m16.Image = LoadImage("m16_levea");
247            }
248            tahtaa = Mouse.PositionOnWorld - pelaaja1.Position;
249            m16.Angle = tahtaa.Angle;
250        }
251
252        void shoot()
253        {
254            m16.Use();
255        }
256
257        void liikuta(PlatformCharacter hahmo, double nopeus)
258        {
259            hahmo.Walk(nopeus);
260        }
261
262        void hyppaa(PlatformCharacter hahmo, double voima)
263        {
264            hahmo.Jump(voima);
265        }
266    }
267}
Note: See TracBrowser for help on using the repository browser.