source: 2012/10-20/AkiP/GemGrabberFinal/GemGrabberFinal/GemGrabberFinal/GemGrabberFinal.cs @ 3913

Revision 3913, 6.9 KB checked in by jypeleht, 9 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 GemGrabberFinal : PhysicsGame
10{
11    const double nopeus = 300;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14    const double kuulanopeus = 900;
15
16    PlatformCharacter pelaaja1;
17    PhysicsObject pallo;
18    PhysicsStructure pallonkiinnitys;
19
20    IntMeter pisteetGrabbed;
21    IntMeter pisteetTotal;
22
23    Image pelaajanKuva = LoadImage("Grabber");
24    Image tahtiKuva = LoadImage("Gem");
25    //Image palloYksi = LoadImage("EnergyBallFinal1");
26    //Image palloKaksi = LoadImage("EnergyBallFinal2");
27    //Image palloKolme = LoadImage("EnergyBallFinal3");
28    //Image palloNeljä = LoadImage("EnergyBallFinal4");
29    //Image palloViisi = LoadImage("EnergyBallFinal5");
30
31    private Image[] pallonHehku = LoadImages("EnergyBallFinal1", "EnergyBallFinal2", "EnergyBallFinal3", "EnergyBallFinal4", "EnergyBallFinal5");
32    private Image[] jalokiviKiilto = LoadImages("GemShineFinal1(1)", "GemShineFinal2(1)", "GemShineFinal3(1)", "GemShineFinal4(1)");
33
34    SoundEffect maaliAani = LoadSoundEffect("maali");
35
36    public override void Begin()
37    {
38        Gravity = new Vector(0, -900);
39
40        LuoKentta();
41        LisaaNappaimet();
42        LisaaLaskurit();
43
44        Camera.Follow(pelaaja1);
45        Camera.ZoomFactor = 1.2;
46        Camera.StayInLevel = true;
47    }
48
49    void LuoKentta()
50    {
51        TileMap kentta = TileMap.FromLevelAsset("kentta1");
52        kentta.SetTileMethod('#', LisaaTaso);
53        kentta.SetTileMethod('*', LisaaTahti);
54        kentta.SetTileMethod('N', LisaaPelaaja);
55        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
56        Level.CreateBorders();
57        //Level.Background.CreateGradient(Color.SkyBlue, Color.Black);
58        Level.Background.CreateStars();
59    }
60
61    void LisaaTaso(Vector paikka, double leveys, double korkeus)
62    {
63        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
64        taso.Position = paikka;
65        taso.Color = Color.Brown;
66        taso.Tag = "maa";
67        taso.IsVisible = true;
68        Add(taso);
69    }
70
71    void LisaaPallo(Vector paikka, double leveys, double korkeus)
72    {
73        pallo = new PhysicsObject(leveys, korkeus);
74        pallo.Shape = Shape.Circle;
75        pallo.Position = paikka;
76        //pallo.Image = palloYksi;
77        pallo.Animation = new Animation(pallonHehku);
78        pallo.Animation.Start();
79        pallo.Tag = "pallo";
80        pallo.Restitution = 1.0;
81        pallo.KineticFriction = 0.0;
82        pallo.CanRotate = true;
83        //pallo.MomentOfInertia = Double.PositiveInfinity;
84        pallonkiinnitys = new PhysicsStructure(pallo, pelaaja1);
85        AddCollisionHandler(pallo, "tahti", TormaaTahteen);
86        AddCollisionHandler(pallo, "maa", NollaaGrabbed);
87        Add(pallonkiinnitys);
88    }
89
90    void LisaaTahti(Vector paikka, double leveys, double korkeus)
91    {
92        PhysicsObject tahti = PhysicsObject.CreateStaticObject(1.3 * leveys, 1.3 * korkeus);
93        tahti.IgnoresCollisionResponse = true;
94        tahti.Position = paikka;
95        tahti.Image = tahtiKuva;
96        //tahti.Animation = new Animation(jalokiviKiilto);
97        tahti.Animation.Start();
98        tahti.Tag = "tahti";
99        Add(tahti);
100    }
101
102    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
103    {
104        pelaaja1 = new PlatformCharacter(1.5 * leveys, 1.5 * korkeus);
105        pelaaja1.Position = paikka;
106        pelaaja1.Mass = 4.0;
107        pelaaja1.Restitution = 0.0;
108        pelaaja1.KineticFriction = 0.0;
109        pelaaja1.Image = pelaajanKuva;
110        Add(pelaaja1);
111        LisaaPallo(new Vector(paikka.X, paikka.Y + 40), 40.0, 40.0);
112    }
113
114    void LisaaLaskurit()
115    {
116        pisteetGrabbed = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Bottom + 40.0);
117        pisteetTotal = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Bottom + 40.0);
118    }
119
120    IntMeter LuoPisteLaskuri(double x, double y)
121    {
122        IntMeter laskuri = new IntMeter(0);
123        laskuri.MaxValue = 48;
124
125        Label naytto = new Label();
126        naytto.BindTo(laskuri);
127        naytto.X = x;
128        naytto.Y = y;
129        naytto.TextColor = Color.Black;
130        //naytto.BorderColor = Level.BackgroundColor;
131        //naytto.Color = Level.BackgroundColor;
132        Add(naytto);
133
134        return laskuri;
135    }
136
137    void LisaaNappaimet()
138    {
139        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
140        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
141
142        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
143        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
144        //Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
145        Keyboard.Listen(Key.Space, ButtonState.Pressed, Ammu, "Laukaise kuula", pallo, kuulanopeus);
146
147
148        //ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
149
150        //ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
151        //ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
152        //ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
153        //ControllerOne.Listen(Button.A, ButtonState.Pressed, Ammu, "Laukaise kuula", pallo, kuulanopeus);
154
155        //PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
156    }
157
158    void Liikuta(PlatformCharacter hahmo, double nopeus)
159    {
160        hahmo.Walk(nopeus);
161    }
162
163    void Ammu(PhysicsObject pallo, double nopeus)
164    {
165        pallo.Hit(new Vector(0, nopeus));
166        pallonkiinnitys.Remove(pallo);
167        AddCollisionHandler(pelaaja1, "pallo", PalloTormaaPelaajaan);
168        Keyboard.Disable(Key.Space);
169        ControllerOne.Disable(Button.A);
170    }
171
172    void Hyppaa(PlatformCharacter hahmo, double nopeus)
173    {
174        hahmo.Jump(nopeus);
175    }
176
177    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
178    {
179        pisteetGrabbed.Value += 1;
180        maaliAani.Play();
181        MessageDisplay.Add("Keräsit jalokiven!");
182        tahti.Destroy();
183    }
184
185    void NollaaGrabbed(PhysicsObject kuula, PhysicsObject maapala)
186    {
187        MessageDisplay.Add("Menetit jalokiven!");
188        pallo.Position = pelaaja1.Position;
189        pallo.Y = pallo.Y + 40;
190    }
191
192    void PalloTormaaPelaajaan(PhysicsObject hahmo, PhysicsObject kuula)
193    {
194        pallo.Velocity = new Vector(pallo.Velocity.X, 0);
195        pallo.Hit(new Vector(0, kuulanopeus));
196        pisteetTotal.Value += pisteetGrabbed;
197        pisteetGrabbed.Value = 0;
198    }
199}
Note: See TracBrowser for help on using the repository browser.