source: 2011/23/mikmatla/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1/Peli.cs @ 1748

Revision 1748, 4.7 KB checked in by joaamaka, 9 years ago (diff)

Uusi peli

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    const double nopeus = 200;
12    const double hyppyNopeus = 10000;
13    const int RUUDUN_KOKO = 40;
14
15    List<Label> ValikonKohdat;
16
17    PlatformCharacter pelaaja1;
18
19    Image pelaajanKuva = LoadImage("Ukkeli");
20    Image tahtiKuva = LoadImage("Kolikko");
21
22    SoundEffect maaliAani = LoadSoundEffect("maali");
23
24    public override void Begin()
25    {
26        Valikko();
27    }
28
29    void Aloota()
30    {
31        ClearAll();
32
33        Gravity = new Vector(0, -1000);
34
35        luoKentta();
36        lisaaNappaimet();
37
38        Camera.Follow(pelaaja1);
39        Camera.ZoomFactor = 1.2;
40        Camera.StayInLevel = true;
41    }
42
43    void Lopeta()
44    {
45        Exit();
46    }
47
48    void Valikko()
49    {
50        ClearAll();
51        Level.BackgroundColor = Color.DarkGreen;
52        ValikonKohdat = new List<Label>();
53
54        Label kohta1 = new Label("Aloita uus peli");
55        kohta1.Position = new Vector(0, 50);
56        kohta1.TextColor = Color.Wheat;
57        ValikonKohdat.Add(kohta1);
58
59        Label kohta2 = new Label("Lopeta");
60        kohta2.Position = new Vector(0, -30);
61        kohta2.TextColor = Color.Wheat;
62        ValikonKohdat.Add(kohta2);
63
64        foreach (Label Valikonkohta in ValikonKohdat)
65            Add(Valikonkohta);
66
67        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, Aloota, null);
68        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Lopeta, null);
69
70        Mouse.IsCursorVisible = true;
71        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
72        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Lopeta, "");
73    }
74
75    void ValikossaLiikkuminen(AnalogState hiirenTila)
76    {
77        foreach (Label kohta in ValikonKohdat)
78        {
79            if (Mouse.IsCursorOn(kohta))
80            {
81                kohta.TextColor = Color.YellowGreen;
82            }
83            else
84            {
85                kohta.TextColor = Color.Wheat;
86            }
87        }
88    }
89
90    void luoKentta()
91    {
92        TileMap kentta = TileMap.FromFile("kentta1.txt");
93        kentta['#'] = lisaaTaso;
94        kentta['*'] = lisaaTahti;
95        kentta['N'] = lisaaPelaaja;
96        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
97        Level.CreateBorders();
98        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
99    }
100
101    PhysicsObject lisaaTaso()
102    {
103        PhysicsObject taso = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO + 20);
104        taso.Shape = Shape.Rectangle;
105        taso.Angle = RandomGen.NextAngle();
106        taso.Color = RandomGen.NextColor();
107        return taso;
108    }
109
110    PhysicsObject lisaaTahti()
111    {
112        PhysicsObject tahti = new PhysicsObject(20, 20);
113        tahti.Mass = 4.0;
114        tahti.Angle = RandomGen.NextAngle();
115        tahti.Shape = Shape.Circle;
116        tahti.Image = tahtiKuva;
117        tahti.Tag = "Kolikko";
118        return tahti;
119    }
120
121    PlatformCharacter lisaaPelaaja()
122    {
123        pelaaja1 = new PlatformCharacter(35, 50);
124        pelaaja1.Mass = 4.0;
125        pelaaja1.Shape = Shape.Triangle;
126        pelaaja1.Image = pelaajanKuva;
127        AddCollisionHandler(pelaaja1, osuTahteen);
128        return pelaaja1;
129    }
130
131    void lisaaNappaimet()
132    {
133        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
134        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Poistu valikkoon");
135
136        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
137        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
138        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
139
140        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
141
142        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
143        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
144        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
145    }
146
147    void liikuta(PlatformCharacter hahmo, double nopeus)
148    {
149        hahmo.Walk(nopeus);
150    }
151
152    void hyppaa(PlatformCharacter hahmo, double nopeus)
153    {
154        hahmo.Jump(nopeus);
155    }
156
157    void osuTahteen(PhysicsObject hahmo, PhysicsObject kohde)
158    {
159        if (kohde.Tag.ToString() == "Kolikko")
160        {
161            maaliAani.Play();
162            kohde.Destroy();
163        }
164    }
165}
Note: See TracBrowser for help on using the repository browser.