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

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