source: 2015/30/SamuelL/jotain/jotain/jotain/jotain.cs @ 6938

Revision 6938, 6.8 KB checked in by misakana, 4 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 jotain : 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("pelaajakuva");
18    Image pelaajaputoaa = LoadImage("pelaajaputoaa");
19    Image tahtiKuva = LoadImage("tahti");
20    Image Taustakuva = LoadImage("tausta 1");
21    Image kasvi1 = LoadImage("tausta - kasvi 1");
22    Image kasvi2 = LoadImage("tausta - kasvit 2");
23    Image taustaruoho = LoadImage("tausta ruoho");
24    Image tuli = LoadImage("tulikuva");
25    Image Pimeyskuva = LoadImage("pimeys");
26    Image valokuva = LoadImage("valokuva");
27    Image Luola = LoadImage("luola");
28    int kenttänumero = 1;
29
30    Animation kävely;
31
32    SoundEffect maaliAani = LoadSoundEffect("maali");
33    SoundEffect TuliPalo = LoadSoundEffect("tuli");
34
35    public override void Begin()
36    {
37        AloitaKentta();
38
39    }
40
41    void LuoKentta()
42    {
43        TileMap kentta = TileMap.FromLevelAsset("kentta"+kenttänumero);
44        kentta.SetTileMethod('#', LisaaTaso);
45        kentta.SetTileMethod('*', LisaaTahti);
46        kentta.SetTileMethod('N', LisaaPelaaja);
47        kentta.SetTileMethod('k', LisaaKasvi, kasvi1, 1);
48        kentta.SetTileMethod('K', LisaaKasvi, kasvi2, -1);
49        kentta.SetTileMethod('r', Lisaaruoho, taustaruoho, 1);
50        kentta.SetTileMethod('T', Lisaatuli);
51        kentta.SetTileMethod('V', LisaaVaihto);
52        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
53        kentta.Optimize('#');
54        Level.CreateBorders();
55        if (kenttänumero == 1)
56        {
57            Level.Background.Image = Taustakuva;
58        }
59        else if (kenttänumero == 2)
60        {
61            Level.Background.Image = Luola;
62        }
63        Level.Background.FitToLevel();
64
65
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.IsVisible = true;
73        Add(taso);
74        taso.Color = Color.Black;
75    }
76    void LisaaKasvi(Vector paikka, double leveys, double korkeus,Image kuva,int taso)
77    {
78        GameObject kasvi = new GameObject(leveys*1.5,korkeus*3);
79        kasvi.Position = paikka + new Vector (0, 0);
80        Add(kasvi,taso);
81        kasvi.Image = kuva;
82
83        GameObject valo = new GameObject(100, 100);
84        valo.Image = valokuva;
85        valo.Position = paikka;
86        valo.Y += 50;
87        Add(valo, 3);
88    }
89
90    void Lisaaruoho(Vector paikka, double leveys, double korkeus,Image kuva,int taso)
91    {
92        GameObject ruoho = new GameObject(leveys,korkeus);
93        ruoho.Position = paikka + new Vector ();
94        Add(ruoho,taso);
95        ruoho.Image = kuva;
96
97    }
98
99    void LisaaTahti(Vector paikka, double leveys, double korkeus)
100    {
101        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
102        tahti.IgnoresCollisionResponse = true;
103        tahti.Position = paikka;
104        tahti.Image = tahtiKuva;
105        tahti.Tag = "tahti";
106        Add(tahti);
107    }
108
109    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
110    {
111        pelaaja1 = new PlatformCharacter(leveys*1.5, korkeus*1.5);
112        pelaaja1.Position = paikka;
113        pelaaja1.Mass = 4.0;
114        pelaaja1.Image = pelaajanKuva;
115        pelaaja1.AnimWalk = kävely;
116        pelaaja1.AnimIdle = new Animation(pelaajanKuva);
117        pelaaja1.AnimFall = new Animation(pelaajaputoaa);
118        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
119        Add(pelaaja1);
120        AddCollisionHandler(pelaaja1, "vaihto", tormaavaihtoon);
121
122        GameObject pimeys = new GameObject(2700, 2700);
123        pimeys.Image = Pimeyskuva;
124        Add(pimeys,2);
125        Timer ajastin = new Timer();
126        ajastin.Interval = 0.05;
127        ajastin.Timeout += delegate
128        {
129            pimeys.Position = pelaaja1.Position;
130        };
131        ajastin.Start();
132    }
133
134    void LisaaNappaimet()
135    {
136        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
137        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
138
139        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
140        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
141        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
142
143        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
144
145        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
146        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
147        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
148
149        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
150    }
151
152    void Liikuta(PlatformCharacter hahmo, double nopeus)
153    {
154        hahmo.Walk(nopeus);
155    }
156
157    void Hyppaa(PlatformCharacter hahmo, double nopeus)
158    {
159        hahmo.Jump(nopeus);
160    }
161
162    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
163    {
164        maaliAani.Play();
165        MessageDisplay.Add("Keräsit tähden!");
166        tahti.Destroy();
167    }
168
169    void Lisaatuli(Vector paikka, double leveys, double korkeus)
170    {
171
172        Flame liekki = new Flame(tuli);
173        liekki.MinLifetime = 0.1;
174        liekki.MaxLifetime = 0.5;
175        liekki.MinScale = 10;
176        liekki.MaxScale = 30;
177        liekki.Position = paikka;
178        Add(liekki);
179
180        Timer ajastin = new Timer();
181        ajastin.Interval = 0.05;
182        ajastin.Timeout += delegate
183        {
184            liekki.Position = paikka + RandomGen.NextVector(0, 30);
185        };
186        ajastin.Start();
187    }
188
189    void LisaaVaihto(Vector paikka, double leveys, double korkeus)
190    {
191        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
192        taso.Position = paikka;
193        taso.IsVisible = false;
194        Add(taso);
195        taso.Tag = "vaihto";
196    }
197    void VaihdaKenttaa()
198    {
199        kenttänumero++;
200        AloitaKentta();
201    }
202
203    void AloitaKentta()
204    {
205        ClearAll();
206        kävely = LoadAnimation("pelaaja");
207        Gravity = new Vector(0, -1000);
208
209        LuoKentta();
210        LisaaNappaimet();
211
212        Camera.Follow(pelaaja1);
213        Camera.ZoomFactor = 1.2;
214        Camera.StayInLevel = true;
215    }
216    void tormaavaihtoon(PhysicsObject pelaaja,PhysicsObject vaihto)
217    {
218        VaihdaKenttaa();
219
220
221
222    }
223}
Note: See TracBrowser for help on using the repository browser.