source: 2015/24/AleksiS/CandyLand/CandyLand/CandyLand/CandyLand.cs @ 5978

Revision 5978, 5.2 KB checked in by laaljoso, 6 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 CandyLand : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    PlatformCharacter vihollinen;
17
18    Image pelaajanKuva = LoadImage("tikku-ukko");
19    Image KarkinKuva = LoadImage("YellowCandy");
20    Image vihollisenKuva = LoadImage("CandyThief");
21
22    SoundEffect maaliAani = LoadSoundEffect("maali");
23    Label pisteNaytto;
24
25    public override void Begin()
26    {
27        MultiSelectWindow alkuValikko = new MultiSelectWindow("Candy Land", "Pelaa!", "Lopeta");
28        Add(alkuValikko);
29
30        ClearAll();
31        Gravity = new Vector(0, -1000);
32
33        LuoPisteLaskuri();
34
35        LuoKentta();
36        LisaaNappaimet();
37
38        Camera.Follow(pelaaja1);
39        Camera.ZoomFactor = 1.2;
40        Camera.StayInLevel = true;
41    }
42
43    void LuoKentta()
44    {
45        TileMap kentta = TileMap.FromLevelAsset("kentta1");
46        kentta.SetTileMethod('#', LisaaTaso);
47        kentta.SetTileMethod('*', LisaaTahti);
48        kentta.SetTileMethod('N', LisaaPelaaja);
49        kentta.SetTileMethod('V', LisaaVihollinen);
50        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
51        Level.CreateBorders();
52        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
53    }
54   
55    IntMeter pisteLaskuri;
56
57    void LuoPisteLaskuri()
58    {
59        pisteLaskuri = new IntMeter(0,0,0);
60
61        pisteNaytto = new Label();
62        pisteNaytto.X = Screen.Left + 150;
63        pisteNaytto.Y = Screen.Top - 100;
64        pisteNaytto.TextColor = Color.Black;
65        pisteNaytto.Color = Color.White;
66        pisteNaytto.Title = "Karkit";
67       
68
69
70        pisteNaytto.BindTo(pisteLaskuri);
71        Add(pisteNaytto);
72
73    }
74    void LisaaTaso(Vector paikka, double leveys, double korkeus)
75    {
76        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
77        taso.Position = paikka;
78        taso.Color = Color.Green;
79        Add(taso);
80    }
81
82    void LisaaTahti(Vector paikka, double leveys, double korkeus)
83    {
84        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
85        tahti.IgnoresCollisionResponse = true;
86        tahti.Position = paikka;
87        tahti.Image = KarkinKuva;
88        tahti.Tag = "tahti";
89        Add(tahti);
90        pisteLaskuri.MaxValue++;
91        pisteNaytto.IntFormatString = " {0:D1}/" + pisteLaskuri.MaxValue;
92    }
93
94    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
95    {
96        pelaaja1 = new PlatformCharacter(leveys, korkeus);
97        pelaaja1.Position = paikka;
98        pelaaja1.Mass = 4.0;
99        pelaaja1.Image = pelaajanKuva;
100        pelaaja1.Tag = "pelaaja";
101        AddCollisionHandler(pelaaja1, "tahti", KeraaKarkki);
102        AddCollisionHandler(pelaaja1, "vihollinen", delegate(PhysicsObject A, PhysicsObject B)
103        {
104            Begin();
105        });
106        Add(pelaaja1);
107
108    }
109
110    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
111    {
112        vihollinen = new PlatformCharacter(leveys, korkeus);
113        vihollinen.Position = paikka;
114        vihollinen.Mass = 4.0;
115        vihollinen.Image = vihollisenKuva;
116        vihollinen.Shape = Shape.FromImage(vihollisenKuva);
117        vihollinen.Tag = "vihollinen";
118        vihollinen.IgnoresGravity = true;
119        Add(vihollinen);
120
121        FollowerBrain aivot = new FollowerBrain("pelaaja");
122        vihollinen.Brain = aivot;
123       
124    }
125
126    void LisaaNappaimet()
127    {
128        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
129        Keyboard.Listen(Key.P, ButtonState.Pressed, TauotaPeli, "Tauko");
130        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
131
132        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
133        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
134        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
135
136        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
137
138        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
139        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
140        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
141
142        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
143    }
144    void TauotaPeli()
145    {
146        MessageDisplay.Add("Peli tauolla");
147        Pause();
148    }
149
150    void Liikuta(PlatformCharacter hahmo, double nopeus)
151    {
152        hahmo.Walk(nopeus);
153    }
154
155    void Hyppaa(PlatformCharacter hahmo, double nopeus)
156    {
157        hahmo.Jump(nopeus);
158    }
159
160    void KeraaKarkki(PhysicsObject hahmo, PhysicsObject tahti)
161    {
162        maaliAani.Play();
163        MessageDisplay.Add("Keräsit karkin!");
164        tahti.Destroy();
165        pisteLaskuri.Value += 1;
166
167    }
168}
Note: See TracBrowser for help on using the repository browser.