source: 2015/27/JouniP/JouninTasoloikka/JouninTasoloikka/JouninTasoloikka/JouninTasoloikka.cs @ 6719

Revision 6719, 5.4 KB checked in by jotapoti, 7 years ago (diff)

Lisätty tähteen törmäämiseen erilaisia räjähdysefektejä. Osa kommentoituina koodissa.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class JouninTasoloikka : 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("kukka");
18    Image tahtiKuva = LoadImage("tahti");
19    Image pahiksenKuva = LoadImage("pahatyyppi");
20    Image rajahdyskuva = LoadImage("rajahdys");
21
22    SoundEffect maaliAani = LoadSoundEffect("maali");
23    SoundEffect kuolemisenAani = LoadSoundEffect("kuolema");
24    SoundEffect hyppaamisenAani = LoadSoundEffect("hyppy");
25   
26
27
28    public override void Begin()
29    {
30        //SetWindowSize(800, 600);
31        Window.Width = 800;
32        Window.Height = 600;
33        //IsFullScreen = true;
34
35        SmoothTextures = false;
36
37        Gravity = new Vector(0, -1000);
38
39        LuoKentta();
40        LisaaNappaimet();
41
42        Camera.Follow(pelaaja1);
43        Camera.ZoomFactor = 1.2;
44        Camera.StayInLevel = true;
45    }
46
47    void Hyppaa(PlatformCharacter hahmo, double nopeus)
48    {
49        hyppaamisenAani.Play();
50        hahmo.Jump(nopeus);
51    }
52
53    void LuoKentta()
54    {
55        TileMap kentta = TileMap.FromLevelAsset("kentta1");
56        kentta.SetTileMethod('#', LisaaTaso);
57        kentta.SetTileMethod('*', LisaaTahti);
58        kentta.SetTileMethod('k', LisaaPelaaja);
59        kentta.SetTileMethod('V', LisaaVihollinen);
60        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
61        Level.CreateBorders();
62        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
63    }
64
65    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
66    {
67        PlatformCharacter vihu = new PlatformCharacter(leveys, korkeus);
68        vihu.Position = paikka;
69        vihu.Color = Color.Black;
70        vihu.Image = pahiksenKuva;
71        vihu.Tag = "pahis";
72        Add(vihu);
73
74        PlatformWandererBrain vaelteluaivot = new PlatformWandererBrain();
75        vaelteluaivot.FallsOffPlatforms = true;
76        vaelteluaivot.JumpSpeed = 400.0;
77        vaelteluaivot.Speed = 150.0;
78        vaelteluaivot.TriesToJump = true;
79       
80        vihu.Brain = vaelteluaivot;
81        vihu.Brain.Active = true;
82    }
83
84    void LisaaTaso(Vector paikka, double leveys, double korkeus)
85    {
86        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
87        taso.Position = paikka;
88        taso.Color = Color.Green;
89        Add(taso);
90    }
91
92    void LisaaTahti(Vector paikka, double leveys, double korkeus)
93    {
94        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
95        tahti.IgnoresCollisionResponse = true;
96        tahti.Position = paikka;
97        tahti.Image = tahtiKuva;
98        tahti.Tag = "tahti";
99        Add(tahti);
100    }
101
102    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
103    {
104        pelaaja1 = new PlatformCharacter(leveys, korkeus);
105        pelaaja1.Position = paikka;
106        pelaaja1.Mass = 4.0;
107        pelaaja1.Image = pelaajanKuva;
108        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
109        AddCollisionHandler(pelaaja1, "pahis", TormaaVihuun);
110        Add(pelaaja1);
111    }
112
113    void LisaaNappaimet()
114    {
115        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
116        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
117
118        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
119        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
120        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
121
122        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
123
124        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
125        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
126        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
127
128        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
129    }
130
131    void Liikuta(PlatformCharacter hahmo, double nopeus)
132    {
133        hahmo.Walk(nopeus);
134    }
135
136    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
137    {
138        // TODO Vaihda ääniefekti sille, kun hahmo törmää kerättävään tähteen
139        maaliAani.Play();
140        MessageDisplay.Add("Keräsit tähden!");
141        tahti.Destroy();
142
143        //Explosion rajahdys = new Explosion(40.0);
144        //rajahdys.Position = tahti.Position;
145        //rajahdys.Image = rajahdyskuva;
146        //Add(rajahdys);
147
148        ExplosionSystem raj = new ExplosionSystem(tahtiKuva, 1);
149        Add(raj);
150        double x = tahti.X;
151        double y = tahti.Y;
152        int pMaara = 50;
153        // "Käynnistetään" räjähdys
154        raj.AddEffect(x, y, pMaara);
155       
156
157        //Smoke savu = new Smoke(tahtiKuva, 20.0);
158        //savu.Position = tahti.Position;
159        //Add(savu);
160    }
161
162    void TormaaVihuun(PhysicsObject pelaaja, PhysicsObject vihu)
163    {
164        pelaaja.Destroy();
165        kuolemisenAani.Play();
166        MessageDisplay.Add("Aijai, nyt kuolit!");
167        Timer.SingleShot(3.0, Exit);
168    }
169
170}
Note: See TracBrowser for help on using the repository browser.