source: 2014/30/ToukoA/AssassinsOfNight/AssassinsOfNight/AssassinsOfNight/AssassinsOfNight.cs @ 5594

Revision 5594, 10.2 KB checked in by toolala, 9 years ago (diff)

Kaikkee kivaa

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class AssassinsOfNight : PhysicsGame
10{
11    const double nopeus = 350;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14    PlatformCharacter pelaaja1;
15    PhysicsObject pahis;
16    PhysicsObject toinenFakeTaso;
17    bool kenttaLapi = false;
18    bool tapettuJo = false;
19    List<Label> valikonKohdat;
20    Image kohteenKuva = LoadImage("kohde");
21    Image pelaajanKuva = LoadImage("puukkomies");
22    Image tahtiKuva = LoadImage("tahti");
23    Image pelaajaPuukottaaKuva = LoadImage("puukkomiespuukottaa");
24    SoundEffect maaliAani = LoadSoundEffect("maali");
25
26    IntMeter pisteLaskuri;
27
28    public override void Begin()
29    {
30        Valikko();
31    }
32    void LuoKentta2()
33    {
34        ClearAll();
35        TileMap kentta = TileMap.FromLevelAsset("kentta2");
36        kentta.SetTileMethod('#', LisaaTaso);
37        kentta.SetTileMethod('*', LisaaTahti);
38        kentta.SetTileMethod('K', LisaaKohde);
39        kentta.SetTileMethod('N', LisaaPelaaja);
40        kentta.SetTileMethod('%', LisaaFakeTaso);
41        kentta.SetTileMethod('&', LisaaTappoTrigger);
42        kentta.SetTileMethod('/', LisaaToinenFakeTaso);
43        kentta.SetTileMethod('!', LisaaVoitto1);
44        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
45        Level.CreateBorders();
46        Level.Background.CreateGradient(Color.White, Color.Blue);
47
48        LuoPisteLaskuri();
49
50        Gravity = new Vector(0, -1000);
51        Camera.Follow(pelaaja1);
52        Camera.ZoomFactor = 1.2;
53        Camera.StayInLevel = true;
54        Mouse.IsCursorVisible = false;
55    }
56    void LuoKentta()
57    {
58        ClearAll();
59        TileMap kentta = TileMap.FromLevelAsset("kentta1");
60        kentta.SetTileMethod('#', LisaaTaso);
61        kentta.SetTileMethod('*', LisaaTahti);
62        kentta.SetTileMethod('K', LisaaKohde);
63        kentta.SetTileMethod('N', LisaaPelaaja);
64        kentta.SetTileMethod('%', LisaaFakeTaso);
65        kentta.SetTileMethod('&', LisaaTappoTrigger);
66        kentta.SetTileMethod('/', LisaaToinenFakeTaso);
67        kentta.SetTileMethod('!', LisaaVoitto1);
68        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
69        Level.CreateBorders();
70        Level.Background.CreateGradient(Color.White, Color.Blue);
71
72        LuoPisteLaskuri();
73
74        Gravity = new Vector(0, -1000);
75        Camera.Follow(pelaaja1);
76        Camera.ZoomFactor = 1.2;
77        Camera.StayInLevel = true;
78        Mouse.IsCursorVisible = false;
79    }
80    void LuoPisteLaskuri()
81    {
82        pisteLaskuri = new IntMeter(0);
83        Label pisteNaytto = new Label();
84        pisteNaytto.X = Screen.Left + 100;
85        pisteNaytto.Y = Screen.Top - 100;
86        pisteNaytto.TextColor = Color.Blue;
87        pisteNaytto.Color = Color.White;
88        pisteNaytto.BindTo(pisteLaskuri);
89        Add(pisteNaytto);
90    }
91    void LisaaVoitto1(Vector paikka, double leveys, double korkeus)
92    {
93        PhysicsObject voittoTrigger1 = PhysicsObject.CreateStaticObject(leveys, korkeus);
94        voittoTrigger1.IgnoresCollisionResponse = true;
95        voittoTrigger1.Tag = "voittoTrigger1";
96        voittoTrigger1.Position = paikka;
97        voittoTrigger1.Color = Color.Gold;
98        Add(voittoTrigger1);
99    }
100    void LisaaTaso(Vector paikka, double leveys, double korkeus)
101    {
102        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
103        taso.Position = paikka;
104        taso.Color = Color.Green;
105        Add(taso);
106    }
107    void LisaaTappoTrigger(Vector paikka, double leveys, double korkeus)
108    {
109        PhysicsObject tappoTrigger = PhysicsObject.CreateStaticObject(leveys, korkeus);
110        tappoTrigger.IgnoresCollisionResponse = true;
111        tappoTrigger.Tag = "tappoTrigger";
112        tappoTrigger.Position = paikka;
113        tappoTrigger.Color = Color.Green;
114        Add(tappoTrigger);
115    }
116    void LisaaFakeTaso(Vector paikka, double leveys, double korkeus)
117    {
118        PhysicsObject fakeTaso = PhysicsObject.CreateStaticObject(leveys, korkeus);
119        fakeTaso.IgnoresCollisionResponse = true;
120        fakeTaso.Position = paikka;
121        fakeTaso.Color = Color.Green;
122        Add(fakeTaso); ;
123    }
124    void LisaaToinenFakeTaso(Vector paikka, double leveys, double korkeus)
125    {
126        toinenFakeTaso = PhysicsObject.CreateStaticObject(leveys, korkeus);
127        toinenFakeTaso.IgnoresCollisionResponse = true;
128        toinenFakeTaso.Position = paikka;
129        toinenFakeTaso.Color = Color.Gold;
130        Add(toinenFakeTaso); ;
131    }
132    void LisaaTahti(Vector paikka, double leveys, double korkeus)
133    {
134        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
135        tahti.IgnoresCollisionResponse = true;
136        tahti.Position = paikka;
137        tahti.Image = tahtiKuva;
138        tahti.Tag = "tahti";
139        Add(tahti);
140    }
141    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
142    {
143        pelaaja1 = new PlatformCharacter(leveys, korkeus);
144        Keyboard.Listen(Key.Space, ButtonState.Pressed, Puukota, "Pelaaja1 puukottaa", pelaaja1);
145        pelaaja1.Position = paikka;
146        pelaaja1.Mass = 4.0;
147        pelaaja1.Image = pelaajanKuva;
148        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
149        AddCollisionHandler(pelaaja1, "tappoTrigger", TappoTrigger);
150        AddCollisionHandler(pelaaja1, "voittoTrigger1", voittoTrigger1);
151        Add(pelaaja1);
152    }
153    void voittoTrigger1(PhysicsObject pelaaja1, PhysicsObject voittoTrigger1)
154    {
155       if (kenttaLapi == true)
156        {
157            MessageDisplay.Add("Testi");
158            maaliAani.Play();
159            LuoKentta2();
160        }
161    }
162    void Puukota(PlatformCharacter pelaaja1)
163    {
164        pelaaja1.Image = pelaajaPuukottaaKuva;
165        if(Vector.Distance(pelaaja1.Position, pahis.Position) < 50)
166        {
167            TappoPuukolla(pelaaja1, pahis);
168        }
169        Timer ajastin = new Timer();
170        ajastin.Interval = 1.0;
171        ajastin.Timeout += ressaaPelaaja;
172        ajastin.Start();
173    }
174    void ressaaPelaaja()
175    {
176        pelaaja1.Image = pelaajanKuva;
177    }
178    void TappoPuukolla(PhysicsObject pelaaja1, PhysicsObject pahis)
179    {
180        if (tapettuJo == true) return;
181            MessageDisplay.Add("Onnistuit murhaamaan kohteen!");
182            pisteLaskuri.Value += 1;
183            tapettuJo = true;
184            pahis.Destroy();
185    }
186    void LisaaKohde(Vector paikka, double leveys, double korkeus)
187    {
188        pahis = new PhysicsObject(leveys, korkeus);
189        pahis.Position = paikka;
190        pahis.Mass = 4.0;
191        pahis.Tag = "pahis";
192        pahis.Image = kohteenKuva;
193        Add(pahis);
194    }
195    void LisaaNappaimet()
196    {
197        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
198        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
199
200        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
201        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
202        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
203
204        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
205
206        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
207        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
208
209        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
210    }
211    void Liikuta(PlatformCharacter hahmo, double nopeus)
212    {
213        hahmo.Walk(nopeus);
214    }
215    void Hyppaa(PlatformCharacter hahmo, double nopeus)
216    {
217        hahmo.Jump(nopeus);
218    }
219    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
220    {
221        maaliAani.Play();
222        MessageDisplay.Add("Keräsit pisteen!");
223        tahti.Destroy();
224    }
225    void TappoTrigger(PhysicsObject pelaaja1, PhysicsObject tappoTrigger)
226    {
227        if (kenttaLapi == true) return;
228        maaliAani.Play();
229        MessageDisplay.Add("Tapoit hyvin salavihkaisesti kohteen!");
230        kenttaLapi = true;
231        pahis.Destroy();
232    }
233    void Valikko()
234    {
235        ClearAll(); // Tyhjennetään kenttä kaikista peliolioista
236
237        valikonKohdat = new List<Label>(); // Alustetaan lista, johon valikon kohdat tulevat
238
239        Label kohta1 = new Label("Aloita peli");  // Luodaan uusi Label-olio, joka toimii uuden pelin aloituskohtana
240        kohta1.Position = new Vector(0, 40);  // Asetetaan valikon ensimmäinen kohta hieman kentän keskikohdan yläpuolelle
241        valikonKohdat.Add(kohta1);  // Lisätään luotu valikon kohta listaan jossa kohtia säilytetään
242        Label kohta2 = new Label("Parhaat Pisteet");
243        kohta2.Position = new Vector(0, 0);
244        valikonKohdat.Add(kohta2);
245        Label kohta3 = new Label("Lopeta peli");
246        kohta3.Position = new Vector(0, -40);
247        valikonKohdat.Add(kohta3);
248
249        // Lisätään kaikki luodut kohdat peliin foreach-silmukalla
250        foreach (Label valikonKohta in valikonKohdat)
251        {
252            Mouse.IsCursorVisible = true;
253            Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
254            Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, ParhaatPisteet, null);
255            Mouse.ListenOn(kohta3, MouseButton.Left, ButtonState.Pressed, LopetaPeli, null);
256            Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
257
258
259            Add(valikonKohta);
260        }
261    }
262    void ValikossaLiikkuminen(AnalogState hiirenTila)
263    {
264        foreach (Label kohta in valikonKohdat)
265        {
266            if (Mouse.IsCursorOn(kohta))
267            {
268                kohta.TextColor = Color.Red;
269            }
270            else
271            {
272                kohta.TextColor = Color.Black;
273            }
274
275        }
276    }
277    void AloitaPeli()
278    {
279        LuoKentta();
280        LisaaNappaimet();
281    }
282    void ParhaatPisteet()
283    {
284        //...
285    }
286    void LopetaPeli()
287    {
288       Exit();
289    }
290}
Note: See TracBrowser for help on using the repository browser.