source: 2014/koodauskerho/38/FransM/Skyofgardens/Skyofgardens/Skyofgardens/Skyofgardens.cs @ 5772

Revision 5772, 7.8 KB checked in by sieerinn, 7 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 Skyofgardens : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PhysicsObject pelaaja1;
16
17    private Image[] ukkelinKavely = LoadImages("kavely", "kavely2");
18    private Image[] örkkikavely = LoadImages("örkkikuva1", "örkkikuva2");
19    Image pelaajanKuva = LoadImage("paikalla"); 
20    Image tahtiKuva = LoadImage("tahti");
21    Image taustaKuva = LoadImage("taivas");
22    Image BlockiKuva2 = LoadImage("Blocki2");
23    Image BlockiKuva = LoadImage("Blocki");
24    Image TappavaKuva = LoadImage("Tappava");
25    Image Pelaaja1attackKuva = LoadImage("Pelaaja1attack");
26    Image ÖrkkikuvaKuva1 = LoadImage("Örkkikuva1");
27    Image ÖrkkikuvaKuva2 = LoadImage("Örkkikuva2");
28    Image SeinaKuva = LoadImage("Seina");
29
30    SoundEffect maaliAani = LoadSoundEffect("maali");
31
32    DoubleMeter elamaLaskuri;
33
34    public override void Begin()
35    {
36        //Gravity = new Vector(0, -1000);
37
38        LuoKentta();
39        LisaaNappaimet();
40        Level.Background.Image = taustaKuva;
41
42
43        Camera.Follow(pelaaja1);
44        Camera.ZoomFactor = 1.2;
45        Camera.StayInLevel = true;
46    }
47
48    void LuoKentta()
49    {
50        TileMap kentta = TileMap.FromLevelAsset("kentta1");
51        kentta.SetTileMethod('#', LisaaTaso);
52        kentta.SetTileMethod('B', LisaaBlocki);
53        kentta.SetTileMethod('*', LisaaTahti);
54        kentta.SetTileMethod('N', LisaaPelaaja);
55        kentta.SetTileMethod('O', LisaaÖrkkikuva);
56
57        kentta.SetTileMethod('.', LisaaKarttapala, BlockiKuva2);
58        kentta.SetTileMethod('I', LisaaKarttapalaOsuu, SeinaKuva);
59
60        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
61        Level.CreateBorders();
62        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
63        //LisaaÖrkkikuva();
64        LuoElamaLaskuri();
65    }
66
67    void LisaaKarttapala(Vector paikka, double leveys, double korkeus, Image kuva)
68    {
69        GameObject pala = new GameObject(leveys, korkeus);
70        pala.Position = paikka;
71        pala.Image = kuva;
72        Add(pala, -1);
73    }
74
75    void LisaaKarttapalaOsuu(Vector paikka, double leveys, double korkeus, Image kuva)
76    {
77        PhysicsObject pala = PhysicsObject.CreateStaticObject(leveys, korkeus);
78        pala.Position = paikka;
79        pala.Image = kuva;
80        Add(pala, -1);
81    }
82
83    void LisaaTappava(PhysicsObject hahmo)
84    {
85        PhysicsObject Tappava = new PhysicsObject(20,20);
86        Tappava.Image = TappavaKuva;
87        Tappava.Position = pelaaja1.Position;
88        Tappava.CanRotate = false;
89        Tappava.LifetimeLeft = TimeSpan.FromSeconds(1);
90        Add(Tappava);
91
92        Animation lyo = new Animation(Pelaaja1attackKuva);
93        lyo.FPS = 1;
94       
95        //pelaaja1.PlayAnimation(lyo);
96
97        Timer ajastin = new Timer();
98        ajastin.Interval = 0.01;
99        ajastin.Timeout += delegate
100        {
101            //Tappava.Position = pelaaja1.Position + new Vector(0, -10) + pelaaja1.FacingDirection.GetVector() * 24;
102        };
103        ajastin.Start();
104    } 
105
106    void LisaaBlocki(Vector paikka, double leveys, double korkeus)
107    {
108        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
109        taso.Position = paikka;
110        taso.Image = BlockiKuva;
111        Add(taso);
112    }
113
114    void LisaaTaso(Vector paikka, double leveys, double korkeus)
115    {
116        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
117        taso.Position = paikka;
118        taso.Image = BlockiKuva2;
119        Add(taso);
120    }
121
122    void LisaaTahti(Vector paikka, double leveys, double korkeus)
123    {
124        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
125        tahti.IgnoresCollisionResponse = true;
126        tahti.Position = paikka;
127        tahti.Image = tahtiKuva;
128        tahti.Tag = "tahti";
129        Add(tahti);
130    }
131
132    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
133    {
134        pelaaja1 = new PhysicsObject(leveys, korkeus);
135        pelaaja1.Position = paikka;
136        pelaaja1.Mass = 4.0;
137        pelaaja1.Image = pelaajanKuva;
138        pelaaja1.CanRotate = false;
139        pelaaja1.LinearDamping = 0.8;
140        //pelaaja1.AnimWalk = new Animation(ukkelinKavely);
141        //pelaaja1.AnimWalk.FPS = 5;
142        pelaaja1.Size = new Vector(35, 50);
143        //pelaaja1.AnimIdle = new Animation(pelaajanKuva);
144        Add(pelaaja1);
145        AddCollisionHandler(pelaaja1, "örkki", PelaajaOsuu);
146
147
148    }
149
150    void PelaajaOsuu(PhysicsObject pelaaja, PhysicsObject kohde)
151    {
152        elamaLaskuri.Value--;
153
154        if (elamaLaskuri.Value <= 0)
155            pelaaja.Destroy();
156    }
157
158    void PelaajaParantuu(PhysicsObject pelaaja, PhysicsObject kohde)
159    {
160        elamaLaskuri.Value++;
161    }
162
163
164    void LisaaNappaimet()
165    {
166        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
167        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
168
169        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, new Vector(-1, 0));
170        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, new Vector(1, 0));
171        Keyboard.Listen(Key.Up, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, new Vector(0, 1));
172        Keyboard.Listen(Key.Down, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, new Vector(0, -1));
173
174        //Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
175
176        Keyboard.Listen(Key.Space, ButtonState.Pressed, LisaaTappava, "tappaa", pelaaja1);
177
178        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
179
180        //ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
181        //ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
182        //ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
183
184        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
185    }
186
187    void Liikuta(PhysicsObject hahmo, Vector suunta)
188    {
189        //hahmo.Walk(nopeus);
190        hahmo.Push(suunta * 2000);
191    }
192
193    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
194    {
195        maaliAani.Play();
196        MessageDisplay.Add("Keräsit tähden!");
197        tahti.Destroy();
198    }
199
200    void LisaaÖrkkikuva(Vector paikka, double leveys, double korkeus)
201    {
202        PhysicsObject örkkikuva = new PhysicsObject(20.0, 20.0);
203
204        örkkikuva.Position = paikka;
205
206        Add(örkkikuva);
207
208       
209        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(200);
210
211        satunnaisAivot.ChangeMovementSeconds = 3;
212        örkkikuva.Mass = 5.0;
213        örkkikuva.Brain = satunnaisAivot;
214        örkkikuva.Image = ÖrkkikuvaKuva1;
215       
216        //örkkikuva.AnimWalk = new Animation(örkkikavely);
217       
218        //örkkikuva.Destroy();
219        //Remove(örkkikuva);
220       
221        örkkikuva.Tag = "örkki";
222       
223
224    }
225
226    void LuoElamaLaskuri()
227    {
228        elamaLaskuri = new DoubleMeter(10);
229        elamaLaskuri.MaxValue = 10;
230        elamaLaskuri.LowerLimit += ElamaLoppui;
231
232        ProgressBar elamaPalkki = new ProgressBar(150, 20);
233        elamaPalkki.X = Screen.Left + 150;
234        elamaPalkki.Y = Screen.Top - 20;
235        elamaPalkki.BindTo(elamaLaskuri);
236        Add(elamaPalkki);
237    }
238
239    void ElamaLoppui()
240    {
241        MessageDisplay.Add("Elämät loppuivat, voi voi.");
242    }
243
244
245}
Note: See TracBrowser for help on using the repository browser.