source: 2012/26/PetroI/HiiriEtsiiKakkua/HiiriEtsiiKakkua/HiiriEtsiiKakkua/HiiriEtsiiKakkua.cs @ 3332

Revision 3332, 6.3 KB checked in by pelakaik, 7 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class HiiriEtsiiKakkua : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 1000;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter2 pelaaja1;
16
17    Image pelaajanKuva = LoadImage("hiiri");
18    Image tahtiKuva = LoadImage("tahti");
19    Image ruohoKuva = LoadImage("ruoho");
20
21    SoundEffect maaliAani = LoadSoundEffect("maali");
22   
23    int kenttaNro = 1;
24
25    List<Vector> pisteet = new List<Vector>();
26
27    public override void Begin()
28    {
29        SeuraavaKentta(kenttaNro);
30    }
31
32    void SeuraavaKentta(int kentanNro)
33    {
34        ClearAll();
35
36        Gravity = new Vector(0, -1000);
37        pelaaja1 = new PlatformCharacter2(RUUDUN_KOKO, RUUDUN_KOKO);
38        if (kentanNro == 1) LuoKentta("kentta1");
39        else if (kentanNro == 2) LuoKentta("kentta2");
40        else if (kentanNro == 3) LuoKentta("kentta3");
41        else if (kentanNro == 4) LuoKentta("kentta4");
42        else if (kentanNro == 5) LuoKentta("kentta5");
43        else if (kentanNro > 6) Exit();
44        LisaaNappaimet();
45        Camera.Follow(pelaaja1);
46        Camera.ZoomFactor = 1.2;
47        Camera.StayInLevel = true;
48    }
49
50    void LuoKentta(string kenttaNimi)
51    {
52
53        TileMap kentta = TileMap.FromLevelAsset(kenttaNimi);
54       
55        kentta.SetTileMethod('#', LisaaTaso);
56        kentta.SetTileMethod('\\', LuoMakiAlas);
57        kentta.SetTileMethod('/', LuoMakiYlos);
58        kentta.SetTileMethod('*', LisaaTahti);
59        kentta.SetTileMethod('N', LisaaPelaaja);
60        kentta.SetTileMethod('M', LisaaMaali);
61        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
62        Level.CreateBorders();
63     
64
65        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
66    }
67
68    void LisaaTaso(Vector paikka, double leveys, double korkeus)
69    {
70        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
71        taso.Position = paikka;
72        taso.Color = Color.Green;
73        taso.Image = ruohoKuva;
74        taso.CollisionIgnoreGroup = 1;
75        Add(taso);
76    }
77
78    void LisaaMaali(Vector paikka, double leveys, double korkeus)
79    {
80        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
81        maali.Position = paikka;
82        maali.Color = Color.Red;
83        Timer.SingleShot(1, delegate
84        {
85            AddCollisionHandler(maali, pelaaja1, delegate
86            {
87                MessageDisplay.Add("MAALISSA!! JEE :--)");
88                Timer.SingleShot(2.0, delegate
89                {
90                    kenttaNro++;
91                    SeuraavaKentta(kenttaNro);
92                });
93            });
94        });
95        Add(maali);
96    }
97
98    void LuoMakiAlas(Vector paikka, double leveys, double korkeus)
99    {
100        PhysicsObject maki = PhysicsObject.CreateStaticObject(leveys*2.0, korkeus, Shape.Rectangle, new CollisionShapeParameters { DistanceGridSpacing = 2, MaxVertexDistance = 2 });//, Shape.Triangle);
101        //PhysicsTemplates.ApplyRampLeft(maki, 40);
102        maki.Angle -= Angle.FromDegrees(45);
103        maki.Position = paikka;
104       
105        maki.Color = Color.Green;
106        Add(maki);
107    }
108
109    void LuoMakiYlos(Vector paikka, double leveys, double korkeus)
110    {
111        PhysicsObject maki = PhysicsObject.CreateStaticObject(leveys * 2, korkeus / 2, Shape.Rectangle, new CollisionShapeParameters { DistanceGridSpacing = 2, MaxVertexDistance = 2 });//, Shape.Triangle);
112        maki.Angle += Angle.FromDegrees(45);
113        maki.Position = paikka;
114        maki.Color = Color.Green;
115        Add(maki);
116    }
117
118    void LisaaTahti(Vector paikka, double leveys, double korkeus)
119    {
120        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
121        tahti.IgnoresCollisionResponse = true;
122        tahti.Position = paikka;
123        tahti.Image = tahtiKuva;
124        tahti.Tag = "tahti";
125        Add(tahti);
126    }
127
128    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
129    {
130        pelaaja1 = new PlatformCharacter2(leveys, korkeus);
131        pelaaja1.Shape = Shape.Circle;
132        //pelaaja1.RotateImage = false;
133        pelaaja1.Position = paikka;
134        pelaaja1.Mass = 4.0;
135        pelaaja1.RightWalkingAnimation = pelaajanKuva;
136        pelaaja1.LeftWalkingAnimation = Image.Mirror(pelaajanKuva);
137        pelaaja1.RightIdleAnimation = pelaajanKuva;
138        pelaaja1.LeftIdleAnimation = Image.Mirror(pelaajanKuva);
139        pelaaja1.CanRotate = false;
140        pelaaja1.Acceleration = 4500;
141        pelaaja1.MaxVelocity = 700;
142        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
143        Add(pelaaja1);
144    }
145
146    void LisaaNappaimet()
147    {
148        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
149        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
150        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
151
152        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, Direction.Left);
153        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, Direction.Right);
154        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
155
156        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
157
158        //ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
159        //ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
160        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
161
162        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
163    }
164
165    void Liikuta(PlatformCharacter2 hahmo, Direction suunta)
166    {
167        hahmo.Walk(suunta);
168    }
169
170    void Hyppaa(PlatformCharacter2 hahmo, double nopeus)
171    {
172        hahmo.Jump(nopeus);
173    }
174
175    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
176    {
177        maaliAani.Play();
178        MessageDisplay.Add("Keräsit tähden!");
179        tahti.Destroy();
180    }
181}
Note: See TracBrowser for help on using the repository browser.