source: 2016/24/HenriH/PerunanIhmeellisetSeikkailut/PerunanIhmeellisetSeikkailut/PerunanIhmeellisetSeikkailut/PerunanIhmeellisetSeikkailut.cs @ 7338

Revision 7338, 5.9 KB checked in by karkaite, 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 PerunanIhmeellisetSeikkailut : 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("peruna");
18    Image tahtiKuva = LoadImage("tahti");
19    Image HodariKuva = LoadImage("hodari");
20    Image TykkiKuva = LoadImage("tykki");
21
22    SoundEffect maaliAani = LoadSoundEffect("maali");
23    int scrollausnopeus = -5;
24    bool peliPaattynyt = false;
25
26    List<GameObject> taustakuvat;
27    Timer taustaAjastin = new Timer();
28    GameObject ekaTaustakuva;
29    public override void Begin()
30    {
31        Gravity = new Vector(0, -1000);
32
33        LuoKentta();
34        LisaaNappaimet();
35
36        Camera.Follow(pelaaja1);
37        Camera.ZoomFactor = 1.2;
38        Camera.StayInLevel = true;
39    }
40
41    void LuoKentta()
42    {
43        TileMap kentta = TileMap.FromLevelAsset("kentta1");
44        kentta.SetTileMethod('#', LisaaTaso);
45        kentta.SetTileMethod('*', LisaaTahti);
46        kentta.SetTileMethod('N', LisaaPelaaja);
47        kentta.SetTileMethod('H', LisaaHodari);
48        kentta.SetTileMethod('T', LisaaTykki);
49        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
50   
51        Level.CreateBorders();
52        Level.Background.CreateGradient(Color.Black, Color.White);
53    }
54
55    void LisaaTaso(Vector paikka, double leveys, double korkeus)
56    {
57        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
58        taso.Position = paikka;
59        taso.Color = Color.AshGray;
60        Add(taso);
61    }
62    void LisaaTykki(Vector paikka, double leveys, double korkeus)
63    {
64        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
65
66        tahti.Position = paikka;
67        tahti.Image = TykkiKuva;
68        tahti.Tag = "tykki";
69        Add(tahti);
70
71    }
72void LisaaHodari(Vector paikka, double leveys, double korkeus)
73    {
74        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
75       
76        tahti.Position = paikka;
77        tahti.Image = HodariKuva;
78        tahti.Tag = "hodari";
79        Add(tahti);
80
81
82    }
83    void LisaaTahti(Vector paikka, double leveys, double korkeus)
84    {
85        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
86        tahti.IgnoresCollisionResponse = true;
87        tahti.Position = paikka;
88        tahti.Image = tahtiKuva;
89        tahti.Tag = "tahti";
90        Add(tahti);
91    }
92
93    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
94    {
95        pelaaja1 = new PlatformCharacter(leveys, korkeus);
96        pelaaja1.Position = paikka;
97        pelaaja1.Mass = 4.0;
98        pelaaja1.Image = pelaajanKuva;
99        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
100        Add(pelaaja1);
101    }
102
103    void LisaaNappaimet()
104    {
105        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
106        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
107
108        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
109        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
110        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
111
112        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
113
114        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
115        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
116        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
117
118        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
119    }
120
121    void Liikuta(PlatformCharacter hahmo, double nopeus)
122    {
123        hahmo.Walk(nopeus);
124    }
125
126    void Hyppaa(PlatformCharacter hahmo, double nopeus)
127    {
128        hahmo.Jump(nopeus);
129    }
130
131    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
132    {
133        maaliAani.Play();
134        MessageDisplay.Add("Keräsit tähden!");
135        tahti.Destroy();
136    }
137    void LuoTaustakuvat()
138    {
139        taustaAjastin = new Timer();
140        taustaAjastin.Interval = 0.01;   // tällä voit myös säätää nopeutta
141        taustaAjastin.Timeout += LiikutaTaustaa;
142        taustaAjastin.Start();
143
144        taustakuvat = new List<GameObject>();
145        LisaaTaustakuva("kuva1", 300, 300);
146        LisaaTaustakuva("kuva2", 300, 300);
147        LisaaTaustakuva("kuva3", 300, 300);
148        LisaaTaustakuva("kuva4", 300, 300);
149    }
150
151    void LisaaTaustakuva(string nimi, double leveys, double korkeus)
152    {
153        GameObject olio = new GameObject(leveys, korkeus);
154        olio.Image = LoadImage(nimi);
155        olio.X = 0;
156        Add(olio);
157
158        if (taustakuvat.Count > 0)
159        {
160            olio.Top = taustakuvat[taustakuvat.Count - 1].Bottom;
161            if (scrollausnopeus >= 0) ekaTaustakuva = olio;
162        }
163        else
164        {
165            olio.Top = Level.Top;
166            if (scrollausnopeus < 0) ekaTaustakuva = olio;
167        }
168
169        taustakuvat.Add(olio);
170    }
171
172    void LiikutaTaustaa()
173    {
174        foreach (GameObject taustakuva in taustakuvat)
175        {
176            taustakuva.Y += scrollausnopeus;
177
178            if (scrollausnopeus < 0 && taustakuva.Top < Level.Bottom)
179            {
180                taustakuva.Bottom = ekaTaustakuva.Top;
181                ekaTaustakuva = taustakuva;
182            }
183            else if (scrollausnopeus > 0 && taustakuva.Bottom > Level.Top)
184            {
185                taustakuva.Top = ekaTaustakuva.Bottom;
186                ekaTaustakuva = taustakuva;
187            }
188        }
189    }
190
191}
Note: See TracBrowser for help on using the repository browser.