source: 2011/26/JoelH/THPeli/THPeli/Peli.cs @ 2404

Revision 2404, 5.7 KB checked in by jokrhiet, 12 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 Peli : PhysicsGame
10{
11    IntMeter pisteLaskuri;
12    int pMaxMaara = 200;
13    ExplosionSystem rajahdys = new ExplosionSystem(LoadImage("explosio"), 500);
14   
15    List<Label> valikonKohdat;
16    const double nopeus = 300;
17    const double hyppyNopeus = 1000;
18    const int RUUDUN_KOKO = 41;
19    PlatformCharacter pelaaja1;
20
21    Image pelaajanKuva = LoadImage("norsu");
22    Image tahtiKuva = LoadImage("tahti");
23    Image piikkikuva = LoadImage("piikit");
24    Image norsuleft = LoadImage("norsuwalkingleft");
25    Image norsuIdle = LoadImage("norsuidle");
26    Image norsuRight = LoadImage("anothernorsu");
27    Image splashscreen = LoadImage("Knife's Edge");
28    Image exploosio = LoadImage("explosio");
29
30    public override void Begin()
31    {
32        Valikko();
33        ExplosionSystem rajahdys = new ExplosionSystem(LoadImage("explosio"), 50);
34
35        MediaPlayer.Play("Game Theme");
36        MediaPlayer.IsRepeating = true;
37    }
38
39    private void alotapeli()
40    {
41        ClearAll();
42        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Palaa valikkoon");
43
44        Gravity = new Vector(0, -800);
45
46        luoKentta();
47        lisaaNappaimet();
48        LuoLaskuri();
49        LuopisteLaskuri();
50
51
52        Camera.Follow(pelaaja1);
53        Camera.ZoomFactor = 3.0;
54        Camera.StayInLevel = true;
55    }
56
57
58        void Valikko()
59    {
60        ClearAll();
61        valikonKohdat = new List<Label>();
62
63        Level.BackgroundColor = Color.Black;
64        Level.Background.Image = splashscreen;
65        Level.BackgroundColor = Color.Black;
66        Label kohta1 = new Label("New Game");
67        kohta1.Position = new Vector(0, 40);
68        valikonKohdat.Add(kohta1);
69
70        Label kohta2 = new Label("Exit");
71        kohta2.Position = new Vector(0, -40);
72        valikonKohdat.Add(kohta2);
73
74        foreach (Label valikonKohta in valikonKohdat)
75        {
76            Add(valikonKohta);
77        }
78
79        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, alotapeli, null);
80        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Exit, null);
81       
82        Mouse.IsCursorVisible = true;
83        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
84        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "");
85    }
86
87    void ValikossaLiikkuminen(AnalogState hiirenTila)
88    {
89        foreach (Label kohta in valikonKohdat)
90        {
91            if (Mouse.IsCursorOn(kohta))
92            {
93                kohta.TextColor = Color.Green;
94            }
95            else
96            {
97                kohta.TextColor = Color.White;
98            }
99
100        }
101    }
102        void LuopisteLaskuri()
103    {
104        pisteLaskuri = new IntMeter(0);
105
106        Label pisteNaytto = new Label();
107        pisteNaytto.BindTo(pisteLaskuri);
108        pisteNaytto.X = Screen.Left + 50;
109        Add(pisteNaytto);
110    }
111
112    void LuoLaskuri()
113    {
114        Label pisteNaytto = new Label();
115        pisteNaytto.X = Screen.Left + 150;
116        pisteNaytto.TextColor = Color.Red;
117
118        Add(pisteNaytto);
119
120        Label pisteTeksti = new Label("pistettä");
121        pisteTeksti.X = Screen.Left +130;
122        pisteTeksti.TextColor = Color.Red;
123        Add(pisteTeksti);
124    }
125
126
127    void luoKentta()
128    {
129
130        TileMap kentta = TileMap.FromFile("kentta1.txt");
131        kentta['#'] = lisaaTaso;
132        kentta['*'] = lisaaTahti;
133        kentta['N'] = lisaaPelaaja;
134        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
135        Level.CreateBorders();
136        Level.Background.CreateGradient(Color.Black, Color.Pink);
137        IsMouseVisible = false;
138       
139    }
140
141    PhysicsObject lisaaTaso()
142    {
143        PhysicsObject taso = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
144        taso.Color = Color.Black;
145        return taso;
146    }
147
148    PhysicsObject lisaaTahti()
149    {
150        PhysicsObject tahti = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
151        tahti.Image = tahtiKuva;
152        tahti.Tag = "tahti";
153        return tahti;
154    }
155
156    PlatformCharacter lisaaPelaaja()
157    {
158        pelaaja1 = new PlatformCharacter(30, 40);
159        pelaaja1.Mass = 10.0;
160        pelaaja1.LeftWalkingAnimation = norsuleft;
161        pelaaja1.RightWalkingAnimation = norsuRight;
162        AddCollisionHandler(pelaaja1, osuTahteen);
163        return pelaaja1;
164    }
165
166
167
168    void lisaaNappaimet()
169    {
170
171        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
172        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
173        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
174
175        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
176
177    }
178
179    void liikuta(PlatformCharacter hahmo, double nopeus)
180    {
181        hahmo.Walk(nopeus);
182    }
183
184    void hyppaa(PlatformCharacter hahmo, double nopeus)
185    {
186        hahmo.Jump((nopeus)-400);
187    }
188
189    void osuTahteen(PhysicsObject hahmo, PhysicsObject kohde)
190    {
191        if (kohde.Tag.ToString() == "tahti")
192        {
193            Add(rajahdys);
194            int pMaara = 500000;
195            rajahdys.MaxScale = 3;
196            rajahdys.MinScale = 1;
197            rajahdys.MinLifetime = 0.1;
198            rajahdys.MaxLifetime = 0.5;
199            rajahdys.AddEffect( kohde.Position, pMaara );
200            pisteLaskuri.Value++;
201
202
203            kohde.Destroy();
204        }
205    }
206   
207
208}
Note: See TracBrowser for help on using the repository browser.