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

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