source: 2011/24/LauriK/Call of garden Modern carrotfare 2/Call of garden Modern carrotfare 2/Peli.cs @ 2002

Revision 2002, 6.6 KB checked in by lavevake, 10 years ago (diff)

Aloitin Call of garden Modern carrotfare 2:n.

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 porkkana;
16    PlatformCharacter tomaatti;
17
18    Image[] pelaajanKuva = LoadImages("porkkana");
19    Image[] pelaajanKuvaPeilattu;
20
21    Image pelaajanKuvaKuolleena = LoadImage("rip");
22
23    Image[] vihollisenKuva = LoadImages("tomaatti");
24    Image[] vihollisenKuvaPeilattu;
25
26    public override void Begin()
27    {
28        pelaajanKuvaPeilattu = Image.Mirror(pelaajanKuva);
29        vihollisenKuvaPeilattu = Image.Mirror(vihollisenKuva);
30        Gravity = new Vector(0, -1000);
31
32        luoKentta();
33        lisaaNappaimet();
34
35        Camera.Follow(porkkana);
36        Camera.ZoomFactor = 1.2;
37        Camera.StayInLevel = true;
38    }
39
40    void luoKentta()
41    {
42        TileMap kentta = TileMap.FromFile("kentta1.txt");
43        kentta['#'] = lisaaTaso;
44        kentta['N'] = lisaaPelaaja;
45        kentta['E'] = lisaaTomaatti;
46        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
47        Level.CreateBorders();
48    }
49    PhysicsObject lisaaTaso()
50    {
51        PhysicsObject taso = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
52        taso.Color = Color.Green;
53        return taso;
54    }
55
56    PlatformCharacter lisaaPelaaja()
57    {
58        porkkana = new PlatformCharacter(40, 40);
59        porkkana.Mass = 4.0;
60
61        porkkana.Weapon = new AssaultRifle(40, 20);
62        porkkana.Weapon.Ammo.Value = 500;
63        porkkana.Weapon.Y = -10;
64        porkkana.Weapon.X = 0;
65        porkkana.Weapon.ProjectileCollision = AmmusOsui;
66
67        porkkana.RightWalkingAnimation = new Animation(pelaajanKuva);
68        porkkana.LeftWalkingAnimation = new Animation(pelaajanKuvaPeilattu);
69        return porkkana;
70    }
71
72    PlatformCharacter lisaaTomaatti()
73    {
74        tomaatti = new PlatformCharacter(40, 40);
75        tomaatti.Mass = 4.0;
76
77        FollowerBrain SeuraajanAivot = new FollowerBrain();
78        tomaatti.Brain = SeuraajanAivot;
79        SeuraajanAivot.Target = porkkana;
80        SeuraajanAivot.Speed = 300;
81        SeuraajanAivot.TargetFollowDistance = 1000;
82        SeuraajanAivot.TargetCloseDistance = 50;
83        SeuraajanAivot.StopWhenTargetClose = false;
84        SeuraajanAivot.TargetClose += MitaTapahtuuKunOllaanLahella;
85
86        tomaatti.RightWalkingAnimation = new Animation(vihollisenKuva);
87        tomaatti.LeftWalkingAnimation = new Animation(vihollisenKuvaPeilattu);
88        return tomaatti;
89
90    }
91
92    void lisaaNappaimet()
93    {
94        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
95        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
96
97        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", porkkana, -nopeus);
98        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu vasemmalle", porkkana, nopeus);
99        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", porkkana, hyppyNopeus);
100
101        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu rynnäkkökiväärillä");
102        Keyboard.Listen(Key.W, ButtonState.Down, TahtaaYlos, "Tähtää ylös rynnäkkökiväärillä");
103        Keyboard.Listen(Key.S, ButtonState.Down, TahtaaAlas, "Tähtää alas rynnäkkökiväärillä");
104
105        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
106
107        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", porkkana, -nopeus);
108        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", porkkana, nopeus);
109        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", porkkana, hyppyNopeus);
110    }
111
112    void liikuta(PlatformCharacter hahmo, double nopeus)
113    {
114        hahmo.Walk(nopeus);
115    }
116
117    void hyppaa(PlatformCharacter hahmo, double nopeus)
118    {
119        hahmo.Jump(nopeus);
120    }
121
122    void AmmuAseella()
123    {
124        PhysicsObject ammus = porkkana.Weapon.Shoot();
125
126
127        if (ammus != null)
128        {
129            ammus.Size *= 5;
130            ammus.MaximumLifetime = TimeSpan.FromSeconds(1.0);
131        }
132    }
133    void TahtaaYlos()
134    {
135        if (porkkana.FacingDirection == Direction.Right)
136        {
137            porkkana.Weapon.Angle += Angle.FromDegrees(5);
138        }
139        if (porkkana.FacingDirection == Direction.Left)
140        {
141            porkkana.Weapon.Angle += Angle.FromDegrees(-5);
142        }
143
144
145    }
146    void TahtaaAlas()
147    {
148        if (porkkana.FacingDirection == Direction.Right)
149        {
150            porkkana.Weapon.Angle += Angle.FromDegrees(-5);
151        }
152        if (porkkana.FacingDirection == Direction.Left)
153        {
154            porkkana.Weapon.Angle += Angle.FromDegrees(5);
155        }
156    }
157    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
158    {
159
160        if (kohde == tomaatti)
161        {
162            ammus.Destroy();
163            kohde.Brain = null;
164            kohde.IgnoresCollisionResponse = true;
165            //kohde.Destroy();
166        }
167        if (kohde == porkkana)
168        {
169            ammus.Destroy();
170            tomaatti.Brain = null;
171            kohde.IgnoresCollisionResponse = true;
172            LopetaPeli();
173
174        }
175
176    }
177    void TomaattiOsui(PlatformCharacter tomaatti, PhysicsObject kohde)
178    {
179        if (kohde == porkkana)
180        {
181           
182
183        }
184    }
185   
186   
187   
188    void LopetaPeli()
189    {
190        porkkana.Stop();
191
192        Label lopetus = new Label();
193        lopetus.Position = Screen.Center;
194        lopetus.TextColor = Color.Red;
195        lopetus.Font = Font.DefaultLarge;
196        Add(lopetus);
197        lopetus.Text = "                                           Game over.\n" +
198        "Jos haluat aloittaa alusta, paina enter. Jos taas haluat lopettaa, paina Esc.";
199       
200        ClearControls();
201       
202        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
203        Keyboard.Listen(Key.Enter, ButtonState.Pressed, Begin, null);
204
205        ControllerOne.Listen(Button.A, ButtonState.Down, Exit, "Poistu pelistä");
206        ControllerOne.Listen(Button.B, ButtonState.Down, Begin, null);
207    }
208    void MitaTapahtuuKunOllaanLahella(object SeuraajanAivot, EventArgs e)
209    {
210        tomaatti.Stop();
211        tomaatti.Brain.Active = false;
212        porkkana.Image = pelaajanKuvaKuolleena;
213        LopetaPeli();
214    }
215
216}         
217   
218
Note: See TracBrowser for help on using the repository browser.