source: 2015/27/IlmoP/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1.cs @ 6781

Revision 6781, 6.4 KB checked in by misakana, 6 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 Tasohyppelypeli1 : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("pelaaja");
18    Image patteriKuva = LoadImage("patteri");
19    Image Orkki = LoadImage("Orkki");
20    Image maalikuva = LoadImage("maali");
21    Image voittokuva = LoadImage("voitto");
22
23    SoundEffect maaliAani = LoadSoundEffect("maali");
24
25    public override void Begin()
26    {
27        ClearAll();
28        Gravity = new Vector(0, -500);
29
30        LuoKentta();
31        LisaaNappaimet();
32
33        Camera.Follow(pelaaja1);
34        Camera.ZoomFactor = 3.0;
35        Camera.StayInLevel = true;
36    }
37
38    void LuoKentta()
39    {
40        TileMap kentta = TileMap.FromLevelAsset("kentta1");
41        kentta.SetTileMethod('#', LisaaTaso);
42        kentta.SetTileMethod('*', LisaaPatteri);
43        kentta.SetTileMethod('P', LisaaPelaaja);
44        kentta.SetTileMethod('?', LisaaVihollinen);
45        kentta.SetTileMethod('M', LisaaMaali);
46        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
47        Level.CreateBorders();
48        Level.Background.CreateStars();
49    }
50
51    void LisaaTaso(Vector paikka, double leveys, double korkeus)
52    {
53        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
54        taso.Position = paikka;
55        taso.Color = Color.Blue;
56        Add(taso);
57    }
58
59    void LisaaMaali(Vector paikka, double leveys, double korkeus)
60    {
61        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
62        maali.Position = paikka;
63        maali.Color = Color.Red;
64        maali.Tag = "maali";
65        maali.Image = maalikuva;
66        Add(maali);
67    }
68    void LisaaPatteri(Vector paikka, double leveys, double korkeus)
69    {
70        PhysicsObject patteri = PhysicsObject.CreateStaticObject(leveys, korkeus);
71        patteri.IgnoresCollisionResponse = true;
72        patteri.Position = paikka;
73        patteri.Image = patteriKuva;
74        patteri.Tag = "patteri";
75        Add(patteri);
76    }
77
78    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
79    {
80        pelaaja1 = new PlatformCharacter(leveys, korkeus);
81        pelaaja1.Position = paikka;
82        pelaaja1.Mass = 4.0;
83        pelaaja1.Image = pelaajanKuva;
84        pelaaja1.Tag = "pelaaja";
85        AddCollisionHandler(pelaaja1, "patteri", TormaaPatteriin);
86        AddCollisionHandler(pelaaja1, "orkki", TormaaOrkkiin);
87        AddCollisionHandler(pelaaja1, "maali", TormaaMaaliin);
88        Add(pelaaja1);
89
90        pelaaja1.Weapon = new PlasmaCannon(30, 10);
91        pelaaja1.Weapon.Ammo.Value = 1000;
92        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
93        Mouse.ListenMovement(0.1, Tahtaa, "Tähtää aseella");
94
95    }
96
97    void AmmusOsui (PhysicsObject ammus, PhysicsObject kohde)
98    {
99        ammus.Destroy();
100        if (kohde.Tag.ToString()=="orkki")
101        {
102            kohde.Destroy();
103            SoundEffect a = LoadSoundEffect("");
104
105            ExplosionSystem rajahdys = new ExplosionSystem(LoadImage("osa"), 10);
106            rajahdys.Position = kohde.Position;
107            Add(rajahdys);
108            rajahdys.AddEffect(kohde.X, kohde.Y, 10);
109        }
110    }
111
112    void Tahtaa(AnalogState hiirenLiike)
113    {
114        Vector suunta = (Mouse.PositionOnWorld - pelaaja1.Weapon.AbsolutePosition).Normalize();
115        pelaaja1.Weapon.Angle = suunta.Angle;
116    }
117
118    void AmmuAseella(PlatformCharacter pelaaja)
119    {
120        PhysicsObject ammus = pelaaja.Weapon.Shoot();
121
122        if (ammus != null)
123        {
124            ammus.Size *= 1;
125            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
126        }
127    }
128
129    void TormaaOrkkiin(PhysicsObject a, PhysicsObject b)
130    {
131        if (a.Tag.Equals("pelaaja"))
132        {
133            a.Destroy(); 
134        }
135    }
136
137    void TormaaMaaliin(PhysicsObject a, PhysicsObject b)
138    {
139        if (a.Tag.Equals("pelaaja"))
140        {
141            a.Destroy();
142            GameObject voittoScreen = new GameObject(500, 500);
143            voittoScreen.Image = voittokuva;
144            voittoScreen.Position = b.Position;
145            Add(voittoScreen);
146        }
147    }
148
149    void LisaaNappaimet()
150    {
151        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
152        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
153        Keyboard.Listen(Key.R, ButtonState.Pressed, Begin, "Lopeta peli");
154
155        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
156        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
157        Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
158
159        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
160
161        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
162        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
163        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
164        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
165
166        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
167    }
168
169    void Liikuta(PlatformCharacter hahmo, double nopeus)
170    {
171        hahmo.Walk(nopeus);
172    }
173
174    void Hyppaa(PlatformCharacter hahmo, double nopeus)
175    {
176        hahmo.Jump(nopeus);
177    }
178
179    void TormaaPatteriin(PhysicsObject hahmo, PhysicsObject tahti)
180    {
181        MessageDisplay.Add("Keräsit patterin!");
182        tahti.Destroy();
183    }
184
185    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
186    {
187        PlatformCharacter orkki = new PlatformCharacter(40, 20);
188        orkki.Shape = Shape.Rectangle;
189        orkki.Image = (Orkki);
190        orkki.Position = paikka;
191        orkki.Tag = "orkki";
192        Add(orkki);
193
194        FollowerBrain seuraajaAivot = new FollowerBrain("pelaaja");
195        seuraajaAivot.Speed = 200;
196        seuraajaAivot.DistanceFar = 600;
197        seuraajaAivot.DistanceClose = 200;
198        orkki.Brain = seuraajaAivot;
199
200    }
201
202}
Note: See TracBrowser for help on using the repository browser.