source: 2014/koodauskerho/38/ViljamiV/LäpsyLintu/LäpsyLintu/LäpsyLintu/LäpsyLintu.cs @ 5759

Revision 5759, 5.4 KB checked in by sieerinn, 8 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 LäpsyLintu : PhysicsGame
10{
11    const double nopeus = 15000;
12    const double hyppyNopeus = 500;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("ukko2");
18    Image[] pelaajanHyppykuvat = LoadImages("ukko","ukko3");
19    Image pelaajanKuolemakuva = LoadImage("kuollut");
20    Image tasonkuva = LoadImage("palikka");
21
22
23    Image tahtiKuva = LoadImage("massipussi");
24
25    SoundEffect maaliAani = LoadSoundEffect("maali");
26
27    bool peliKaynnissa = false;
28    Timer liikutusajastin;
29
30
31    public override void Begin()
32    {
33        Gravity = new Vector(0, -1000);
34        SmoothTextures = false;
35        LuoKentta();
36        LisaaNappaimet();
37
38        Camera.Follow(pelaaja1);
39        Camera.ZoomFactor = 1.8;
40        Camera.StayInLevel = true;
41        liikutusajastin = new Timer();
42
43        liikutusajastin.Interval = 0.01;
44        liikutusajastin.Timeout += SiirraPelaajaaOikeammalle;
45        liikutusajastin.Start();
46        peliKaynnissa = true;
47
48
49    }
50
51    void SiirraPelaajaaOikeammalle()
52    {
53        pelaaja1.Push(new Vector(nopeus, 0.0));
54
55    }
56
57    void TormaaTasoon(PhysicsObject tormaaja, PhysicsObject kohde)
58    {
59        if (peliKaynnissa)
60        {
61            // Asetetaan pelaajan normaali kuva kuolemiskuvaksi:
62            pelaaja1.Image = pelaajanKuolemakuva;
63
64            // Asetetaan pelaajan animaatiot kuolemisen animaatioksi (voi sisältää useammankin kuvan):
65            Animation kuolemisanimaatio = new Animation(pelaajanKuolemakuva);
66            pelaaja1.AnimFall = kuolemisanimaatio;
67            pelaaja1.AnimJump = kuolemisanimaatio;
68            pelaaja1.AngularVelocity = -500;
69            Timer pyorimisenhidastuslaskuri = new Timer();
70            pyorimisenhidastuslaskuri.Interval = 2.0;
71            pyorimisenhidastuslaskuri.Timeout += HidastaPyorimista;
72            pyorimisenhidastuslaskuri.Start();
73            MessageDisplay.Add("Kuolit!");
74            Keyboard.Disable(Key.Up);
75            liikutusajastin.Stop();
76            peliKaynnissa = false;
77        }
78    }
79
80    void HidastaPyorimista()
81    {
82
83       
84        if (pelaaja1.AngularVelocity < 0)
85        {
86            pelaaja1.AngularVelocity += 100;
87        }
88
89    }
90
91
92
93    void LuoKentta()
94    {
95        TileMap kentta = TileMap.FromLevelAsset("kentta1");
96        kentta.SetTileMethod('#', LisaaTaso);
97        kentta.SetTileMethod('*', LisaaTahti);
98        kentta.SetTileMethod('N', LisaaPelaaja);
99        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
100        Level.CreateBorders();
101        Level.Background.CreateGradient(Color.Red, Color.Black);
102    }
103
104    void LisaaTaso(Vector paikka, double leveys, double korkeus)
105    {
106        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
107        taso.Position = paikka;
108        taso.Color = Color.Green;
109        taso.Image = tasonkuva;
110        taso.Tag = "seina";
111        Add(taso);
112    }
113
114    void LisaaTahti(Vector paikka, double leveys, double korkeus)
115    {
116        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
117        tahti.IgnoresCollisionResponse = true;
118        tahti.Position = paikka;
119        tahti.Image = tahtiKuva;
120        tahti.Tag = "tahti";
121        Add(tahti);
122    }
123
124    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
125    {
126        pelaaja1 = new PlatformCharacter(leveys, korkeus);
127        pelaaja1.Position = paikka;
128        pelaaja1.Mass = 4.0;
129        pelaaja1.Image = pelaajanKuva;
130        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
131        AddCollisionHandler(pelaaja1, "seina", TormaaTasoon);
132       
133        Keyboard.Disable(Key.Up);
134        Add(pelaaja1);
135        pelaaja1.AnimJump = new Animation(pelaajanHyppykuvat);
136        pelaaja1.AnimJump.FPS = 5;
137        pelaaja1.AnimFall = new Animation(pelaajanKuva);
138
139    }
140
141
142    void LisaaNappaimet()
143    {
144        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
145        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
146
147        //Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
148        // Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
149        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
150
151        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
152
153        //ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
154        //ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
155        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
156
157        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
158    }
159
160    void Liikuta(PlatformCharacter hahmo, double nopeus)
161    {
162        hahmo.Walk(nopeus);
163    }
164
165    void Hyppaa(PlatformCharacter hahmo, double nopeus)
166    {
167        pelaaja1.ForceJump(nopeus);
168
169    }
170
171    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
172    {
173        maaliAani.Play();
174        MessageDisplay.Add("Rahaa!");
175        tahti.Destroy();
176    }
177}
Note: See TracBrowser for help on using the repository browser.