source: 2014/koodauskerho/38/JuusoP/Haaahaaa/Haaahaaa/Haaahaaa/Haaahaaa.cs @ 5779

Revision 5779, 6.1 KB checked in by sieerinn, 5 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 Haaahaaa : PhysicsGame
10{
11    const double nopeus = 100000;
12
13    const double hyppyNopeus = 400;
14    const int RUUDUN_KOKO = 40;
15
16    PlatformCharacter pelaaja1;
17
18    Image pelaajanKuva = LoadImage("lintu");
19    Image[] pelaajanHyppykuvat = LoadImages("lapsy", "lintu");
20    Image pelaajanKuolemakuva = LoadImage("kuollut");
21    Image vihollisenKuva = LoadImage("vihollinen");
22
23    Image tahtiKuva = LoadImage("tahti");
24
25    SoundEffect maaliAani = LoadSoundEffect("maali");
26    bool peliKaynnissa = false;
27    Timer liikutusajastin;
28
29    public override void Begin()
30    {
31       
32
33        Gravity = new Vector(0, -1000);
34
35        LuoKentta();
36        LisaaNappaimet();
37
38        Camera.Follow(pelaaja1);
39        Camera.ZoomFactor = 1.2;
40        Camera.StayInLevel = true;
41        Camera.FollowOffset = new Vector(Screen.Width / 2.5 - RUUDUN_KOKO, 0.0);
42
43        liikutusajastin = new Timer();
44        liikutusajastin.Interval = 0.01;
45        liikutusajastin.Timeout += SiirraPelaajaaOikeammalle;
46        liikutusajastin.Start();
47        peliKaynnissa = true;
48
49    }
50    void SiirraPelaajaaOikeammalle()
51    {
52        pelaaja1.Push(new Vector(nopeus, 0.0));
53
54    }
55
56    void LuoKentta()
57    {
58        TileMap kentta = TileMap.FromLevelAsset("kentta1");
59        kentta.SetTileMethod('#', LisaaTaso);
60        kentta.SetTileMethod('*', LisaaTahti);
61        kentta.SetTileMethod('L', LisaaPelaaja);
62        kentta.SetTileMethod('V', LisaaVihollinen);
63
64        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
65        //Level.CreateBorders();
66        Level.CreateLeftBorder();
67        Level.CreateTopBorder();
68        Level.CreateBottomBorder();
69        PhysicsObject oikeaReuna = Level.CreateRightBorder();
70        oikeaReuna.Tag = "oikea";
71
72
73
74        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
75    }
76
77    void LisaaTaso(Vector paikka, double leveys, double korkeus)
78    {
79        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
80        taso.Position = paikka;
81        taso.Color = Color.Green;
82        taso.Tag = "seina";
83
84        Add(taso);
85    }
86
87    void LisaaTahti(Vector paikka, double leveys, double korkeus)
88    {
89        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
90        tahti.IgnoresCollisionResponse = true;
91        tahti.Position = paikka;
92        tahti.Image = tahtiKuva;
93        tahti.Tag = "tahti";
94        Add(tahti);
95    }
96
97    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
98    {
99        pelaaja1 = new PlatformCharacter(leveys, korkeus);
100        pelaaja1.Position = paikka;
101        pelaaja1.Mass = 4.0;
102        pelaaja1.Image = pelaajanKuva;
103        pelaaja1.AnimJump = new Animation(pelaajanHyppykuvat);
104        pelaaja1.AnimFall = new Animation(pelaajanKuva);
105        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
106        AddCollisionHandler(pelaaja1, "seina", Tormaakuolettavaan);
107        AddCollisionHandler(pelaaja1, "vihu", Tormaakuolettavaan);
108        AddCollisionHandler(pelaaja1, "oikea", TormaaOikeaanReunaan);
109
110   
111
112
113        Add(pelaaja1);
114    }
115    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
116    {
117        PhysicsObject vihollinen = new PhysicsObject(leveys, korkeus);
118        vihollinen.Position = paikka;
119        vihollinen.IgnoresGravity = true;
120        vihollinen.CanRotate = false;
121        vihollinen.IgnoresCollisionResponse = true;
122        // Asetetaan vihollinen liikkumaan ylös-alas:
123        vihollinen.Oscillate(new Vector(0, 1), korkeus * 4, 2);
124        vihollinen.Image = vihollisenKuva;
125        vihollinen.Tag = "vihu";
126
127        Add(vihollinen);
128
129
130    }
131
132    void Tormaakuolettavaan(PhysicsObject tormaaja, PhysicsObject kohde)
133        {
134            if (peliKaynnissa)// Asetetaan pelaajan normaali kuva kuolemiskuvaksi:
135                pelaaja1.Image = pelaajanKuolemakuva;
136
137            // Asetetaan pelaajan animaatiot kuolemisen animaatioksi (voi sisältää useammankin kuvan):
138            Animation kuolemisanimaatio = new Animation(pelaajanKuolemakuva);
139            pelaaja1.AnimFall = kuolemisanimaatio;
140            pelaaja1.AnimJump = kuolemisanimaatio;
141
142    {
143        MessageDisplay.Add("Kuolit! :(");
144        PoistaPelaamisnappaimet();
145
146        liikutusajastin.Stop();
147        peliKaynnissa = false;
148    }
149
150
151        }
152
153    void LisaaNappaimet()
154    {
155        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
156        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
157
158
159        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
160        Keyboard.Listen(Key.J, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
161        Keyboard.Listen(Key.K, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
162
163        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
164
165
166        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
167
168        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
169    }
170
171    void Liikuta(PlatformCharacter hahmo, double nopeus)
172    {
173        hahmo.Walk(nopeus);
174    }
175
176    void Hyppaa(PlatformCharacter hahmo, double nopeus)
177    {
178        hahmo.ForceJump(nopeus);
179    }
180
181    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
182    {
183        maaliAani.Play();
184        MessageDisplay.Add("Keräsit tähden!");
185        tahti.Destroy();
186    }
187    void TormaaOikeaanReunaan(PhysicsObject tormaaja, PhysicsObject kohde)
188    {
189        Gravity = Vector.Zero; // Pelaaja ei enää putoa alas
190
191
192        StopAll(); // Pysäyttää kaikki oliot, mm. vihollisten liikkeen
193
194
195        PoistaPelaamisnappaimet();
196        // Poistaa pelinäppäimen käytöstä
197
198        MessageDisplay.Add("Pääsit kentän läpi!");
199    }
200    void PoistaPelaamisnappaimet()
201    {
202        Keyboard.Disable(Key.Up);
203    }
204
205
206}
207
208     
209 
Note: See TracBrowser for help on using the repository browser.