source: 2014/koodauskerho/38/FransM/Rölli/Rölli/Rölli/Rölli.cs @ 5817

Revision 5817, 5.0 KB checked in by sieerinn, 5 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 Rölli : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("norsu");
18    Image tahtiKuva = LoadImage("tahti");
19
20    Image kranaattiKuva = LoadImage("Kranaatti");
21    Image sepelihammastiikeriKuva = LoadImage("Sepelihammastiikeri");
22
23    SoundEffect maaliAani = LoadSoundEffect("maali");
24
25
26    public override void Begin()
27    {
28        Gravity = new Vector(0, -1000);
29
30        LuoKentta();
31        LisaaNappaimet();
32
33        Camera.Follow(pelaaja1);
34        Camera.ZoomFactor = 1.2;
35        Camera.StayInLevel = true;
36    }
37
38    void LuoKentta()
39    {
40        TileMap kentta = TileMap.FromLevelAsset("kentta1");
41        kentta.SetTileMethod('#', LisaaTaso);
42        kentta.SetTileMethod('*', LisaaTahti);
43        kentta.SetTileMethod('N', LisaaPelaaja);
44        kentta.SetTileMethod('V', LisaaVihu);
45
46        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
47        Level.CreateBorders();
48        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
49    }
50
51    void LisaaVihu(Vector paikka, double leveys, double korkeus)
52    {
53        PlatformCharacter vihu = new PlatformCharacter(leveys, korkeus);
54
55        vihu.Position = paikka;
56        vihu.Tag = "vihu";
57        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
58        tasoAivot.Speed = 1000;
59        vihu.Brain = tasoAivot;
60        vihu.Image = sepelihammastiikeriKuva;
61        Add(vihu);
62    }
63
64    void LisaaTaso(Vector paikka, double leveys, double korkeus)
65    {
66        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
67        taso.Position = paikka;
68        taso.Color = Color.Green;
69        taso.Tag = "taso";
70        Add(taso);
71    }
72
73    void LisaaTahti(Vector paikka, double leveys, double korkeus)
74    {
75        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
76        tahti.IgnoresCollisionResponse = true;
77        tahti.Position = paikka;
78        tahti.Image = tahtiKuva;
79        tahti.Tag = "tahti";
80        Add(tahti);
81    }
82
83    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
84    {
85        pelaaja1 = new PlatformCharacter(leveys, korkeus * 1.5);
86        pelaaja1.Position = paikka;
87        pelaaja1.Mass = 4.0;
88        pelaaja1.Image = pelaajanKuva;
89        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
90        Add(pelaaja1); 
91    }
92
93
94    void LisaaNappaimet()
95    {
96        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
97        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
98
99        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
100        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
101        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
102
103        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
104
105        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
106        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
107        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
108
109        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
110
111        Keyboard.Listen(Key.F, ButtonState.Pressed, HeitaKranaatti, "Heittää kranaatti", pelaaja1);
112    }
113
114    void Liikuta(PlatformCharacter hahmo, double nopeus)
115    {
116        hahmo.Walk(nopeus);
117    }
118
119
120    private Image[] ukkelinKavely = LoadImages("uk2anoik1", "uk2anoik2", "uk2anoik3");
121
122
123    void Hyppaa(PlatformCharacter hahmo, double nopeus)
124    {
125        hahmo.Jump(nopeus);
126    }
127
128    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
129    {
130        maaliAani.Play();
131        MessageDisplay.Add("TÄMÄHÄN TUNTUU MUKAVALTA... JÄHI JÄHI!");
132        tahti.Destroy();
133    }
134
135    //Grenade kranaatti = new Grenade(4.0);
136    void HeitaKranaatti(PlatformCharacter pelaaja)
137    {
138        Grenade kranu = new Grenade(10.25);
139        kranu.Image = kranaattiKuva;
140        pelaaja.Throw(kranu, Angle.FromDegrees(30), 10000);
141        kranu.Explosion.ShockwaveReachesObject += KranaattiOsui;
142        kranu.Explosion.AddShockwaveHandler("vihollinen", KranaattiOsui);
143
144    }
145
146    void KranaattiOsui(IPhysicsObject rajahdyksenKohde, Vector v)
147    {
148        if (rajahdyksenKohde.Tag != "taso")
149        {
150            rajahdyksenKohde.Destroy();
151        }
152    }
153
154    public class Peli : PhysicsGame
155{
156    private Animation ukkelinKavely;
157
158    public override void Begin()
159    {
160         ukkelinKavely = LoadAnimation("norsu");
161
162        {
163
164
165        }
166
167   
Note: See TracBrowser for help on using the repository browser.