source: 2011/24/OttoH/stickOps/stickOps/stickOps/Peli.cs @ 2056

Revision 2056, 6.4 KB checked in by oteehann, 8 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Peli : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 1000;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    PlatformCharacter vastustaja1;
17    PlatformCharacter maali;
18
19    Image pelaajanKuva = LoadImage("tikku");
20    //Image heittajanKuvat;//LoadImages("tikku");
21    Image heittajanKuvatPeilattu;
22    Image vastustajanKuva = LoadImage("puukottaja");
23    Image vastustajanKuvaPeilattu;
24    Image maaliKuva = LoadImage("BOOM");
25
26
27    public override void Begin()
28    {
29        ClearAll();
30        heittajanKuvatPeilattu = Image.Mirror(pelaajanKuva);
31        //pelaaja1.LeftIdleAnimation = new Animation(heittajanKuvatPeilattu);
32        vastustajanKuvaPeilattu = Image.Mirror(vastustajanKuva);
33
34
35        Gravity = new Vector(0, -1050);
36
37        luoKentta();
38        lisaaNappaimet();
39
40        Camera.Follow(pelaaja1);
41        Camera.ZoomFactor = 1.2;
42        Camera.StayInLevel = true;
43    }
44
45    void luoKentta()
46    {
47        TileMap kentta = TileMap.FromFile("kentta1.txt");
48        kentta['#'] = lisaaTaso;
49        kentta['N'] = lisaaPelaaja;
50        kentta['W'] = lisaaVastustaja;
51        kentta['B'] = lisaaMaali;
52        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
53        Level.CreateBorders();
54        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
55
56        foreach (PhysicsObject vastustaja in vastustajat)
57        {
58            FollowerBrain aivo = (FollowerBrain)vastustaja.Brain;
59            aivo.Target = pelaaja1;
60        }
61    }
62
63    PhysicsObject lisaaMaali()
64    {
65        maali = new PlatformCharacter (120,100);
66        maali.Mass = 9000.0;
67        maali.Image = maaliKuva;
68        return maali;
69    }
70
71
72    PhysicsObject lisaaTaso()
73    {
74        PhysicsObject taso = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
75        taso.Color = Color.Green;
76        return taso;
77    }
78
79
80
81    PlatformCharacter lisaaPelaaja()
82    {
83        pelaaja1 = new PlatformCharacter(60, 60);
84        pelaaja1.Mass = 20.0;
85        pelaaja1.Image = pelaajanKuva;
86        pelaaja1.Weapon = new AssaultRifle(40, 20);
87        pelaaja1.Weapon.Ammo.Value = 5000000;
88        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
89        pelaaja1.Weapon.X = 0;
90        pelaaja1.Weapon.Y = -10;
91        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu");
92
93
94        pelaaja1.RightWalkingAnimation = new Animation(pelaajanKuva);
95        pelaaja1.LeftWalkingAnimation = new Animation(heittajanKuvatPeilattu);
96
97        return pelaaja1;
98    }
99
100   
101    void AmmuAseella()
102    {
103        PhysicsObject ammus = pelaaja1.Weapon.Shoot();
104
105        if (ammus != null)
106        {
107            ammus.Size *= 5;
108            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.3);
109            AddCollisionHandler(ammus, vastustaja1Kuoli);
110
111        }
112
113    }
114
115    void tahtaaylos()
116    {
117        if (pelaaja1.FacingDirection == Direction.Right)
118        {
119            pelaaja1.Weapon.Angle += Angle.FromDegrees(5.0);
120        }
121
122        if (pelaaja1.FacingDirection == Direction.Left)
123        {
124            pelaaja1.Weapon.Angle += Angle.FromDegrees(-5.0);
125        }
126    }
127
128    void tahtaaalas()
129    {
130        if (pelaaja1.FacingDirection == Direction.Right)
131        {
132            pelaaja1.Weapon.Angle += Angle.FromDegrees(-5.0);
133        }
134
135        if (pelaaja1.FacingDirection == Direction.Left)
136        {
137            pelaaja1.Weapon.Angle += Angle.FromDegrees(5.0);
138        }
139    }
140
141    void vastustaja1Kuoli(PhysicsObject ammus, PhysicsObject kohde)
142    {
143        if (kohde.Tag.ToString() == "vihu")
144        {
145            kohde.Destroy();
146        }
147    }
148
149    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
150    {
151        ammus.Destroy();
152        Explosion rajahdys = new Explosion(10);
153        rajahdys.Position = ammus.Position;
154        Add(rajahdys);
155    }
156
157
158    List<PhysicsObject> vastustajat = new List<PhysicsObject>();
159
160    PlatformCharacter lisaaVastustaja()
161    {
162        vastustaja1 = new PlatformCharacter(60, 60);
163        vastustaja1.Mass = 10.0;
164        vastustaja1.Image = vastustajanKuva;
165        vastustaja1.RightWalkingAnimation = new Animation(vastustajanKuvaPeilattu);
166        vastustaja1.LeftWalkingAnimation = new Animation(vastustajanKuva);
167        vastustaja1.Tag = "vihu";
168        vastustajat.Add(vastustaja1);
169
170        FollowerBrain seuraajanAivot = new FollowerBrain();
171        seuraajanAivot.Speed = 150;
172        seuraajanAivot.TargetFollowDistance = 600;
173        seuraajanAivot.TargetCloseDistance = 200;
174        vastustaja1.Brain = seuraajanAivot;
175
176        AddCollisionHandler(vastustaja1, KasitteleVastustajanTormaus);
177
178        return vastustaja1;
179
180    }
181
182    void KasitteleVastustajanTormaus(PhysicsObject vastustaja1, PhysicsObject kohde)
183    {
184        if (kohde == pelaaja1)
185        {
186            pelaaja1.Destroy();
187            Begin();
188
189        }
190    }
191
192   
193       
194   
195
196    void lisaaNappaimet()
197    {
198        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
199        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
200
201        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
202        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
203        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
204
205        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
206
207        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
208        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
209        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
210        Keyboard.Listen(Key.W, ButtonState.Down, tahtaaylos, "Säädä aseen kulmaa");
211        Keyboard.Listen(Key.S, ButtonState.Down, tahtaaalas, "Säädä aseen kulmaa");
212    }
213
214    void liikuta(PlatformCharacter hahmo, double nopeus)
215    {
216        hahmo.Walk(nopeus);
217    }
218
219    void hyppaa(PlatformCharacter hahmo, double nopeus)
220    {
221        hahmo.Jump(nopeus);
222    }
223}
Note: See TracBrowser for help on using the repository browser.