source: 2014/koodauskerho/38/FransM/Destroy/Destroy/Destroy/Destroy.cs @ 6277

Revision 6277, 5.5 KB checked in by frmaenpa, 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 Destroy : PhysicsGame
10{
11
12    bool osuiIhmiseen = false;
13
14    const double nopeus = 200;
15    const double hyppyNopeus = 750;
16    const int RUUDUN_KOKO = 40;
17
18    PlatformCharacter pelaaja1;
19
20    Image pelaajanKuva1 = LoadImage("norsu2");
21    Image tahtiKuva = LoadImage("tahti");
22    Image vihukuva = LoadImage("ihminenpaikallaan");
23    Image[] ukkelinKavely = LoadImages("norsu", "norsu3");
24    Image[] vihukavely = LoadImages("ihminen", "ihminen2");
25    Image tasoKuva = LoadImage("palikka");
26
27    SoundEffect maaliAani = LoadSoundEffect("maali");
28
29    public override void Begin()
30    {
31        Gravity = new Vector(0, -1000);
32
33        LuoKentta();
34        LisaaNappaimet();
35
36
37        SmoothTextures = false;
38        Camera.Follow(pelaaja1);
39        Camera.ZoomFactor = 1.2;
40        Camera.StayInLevel = true;
41    }
42
43    void LuoKentta()
44    {
45        TileMap kentta = TileMap.FromLevelAsset("palikka");
46        kentta.SetTileMethod('#', LisaaTaso);
47        kentta.SetTileMethod('*', LisaaTahti);
48        kentta.SetTileMethod('N', LisaaPelaaja);
49        kentta.SetTileMethod('I', LuoIhminen);
50
51        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
52        Level.CreateBorders();
53        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
54    }
55
56
57    void LuoIhminen(Vector paikka, double leveys, double korkeus)
58    { 
59    PlatformCharacter ihminen = new PlatformCharacter(40, 50 );
60    ihminen.Position = paikka;
61    ihminen.Shape = Shape.Rectangle;
62    Add( ihminen );
63    ihminen.Mass = 10.0;
64    ihminen.Image = vihukuva;
65
66    PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
67    tasoAivot.Speed = 100;
68
69    ihminen.Brain = tasoAivot;
70    ihminen.Tag = "ihminen";
71
72    ihminen.AnimWalk = new Animation(vihukavely);
73   
74    ihminen.AnimIdle = new Animation(vihukuva);
75    }
76
77    void LisaaTahti(Vector paikka, double leveys, double korkeus)
78    {
79        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
80        tahti.IgnoresCollisionResponse = true;
81        tahti.Position = paikka;
82        tahti.Image = tahtiKuva;
83        tahti.Tag = "tahti";
84        Add(tahti);
85    }
86 
87    void LisaaTaso(Vector paikka, double leveys, double korkeus)
88    {
89        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
90        taso.Position = paikka;
91        taso.Color = Color.Green;
92        Add(taso);
93    }
94
95    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
96    {
97        pelaaja1 = new PlatformCharacter(leveys, korkeus);
98        pelaaja1.Position = paikka;
99        pelaaja1.Mass = 4.0;
100        pelaaja1.Image = pelaajanKuva1;
101        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
102        Add(pelaaja1);
103        pelaaja1.IgnoresExplosions = true;
104        pelaaja1.AnimWalk = new Animation(ukkelinKavely);
105
106        pelaaja1.AnimIdle = new Animation(pelaajanKuva1);
107        pelaaja1.AnimWalk.FPS = 6;
108
109    }
110
111    void LisaaNappaimet()
112    {
113        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
114        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
115
116        Keyboard.Listen(Key.Down, ButtonState.Pressed, VedaSokkaIrti, "Vetää sokan irti", pelaaja1);
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 Hyppaa(PlatformCharacter hahmo, double nopeus)
137    {
138        hahmo.Jump(nopeus);
139    }
140
141    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
142    {
143        maaliAani.Play();
144        MessageDisplay.Add("Tämänhän voisi räjäyttää!");
145        tahti.Destroy();
146    }
147
148    void VedaSokkaIrti(PlatformCharacter hahmo)
149    {
150        MessageDisplay.Add("Aktivointi");
151        Timer.SingleShot(3.0, delegate { 
152            MessageDisplay.Add("Nyt se räjähti");
153            Explosion rajahdys = new Explosion(100);
154            rajahdys.Position = hahmo.Position + new Vector(0, 10);
155            rajahdys.AddShockwaveHandler("ihminen", PaineaaltoOsuu);
156            Add(rajahdys);
157            rajahdys.Speed = 100;
158            Timer.SingleShot(1.0, delegate
159            {
160                if (!osuiIhmiseen) hahmo.Destroy();
161                osuiIhmiseen = false;
162            });
163
164        });
165    }
166
167    void PaineaaltoOsuu(IPhysicsObject olio, Vector shokki)
168    {
169        olio.Destroy();
170        osuiIhmiseen = true;
171    }
172
173    void AloitaAlusta()
174    {
175        ClearAll();
176        LuoKentta();
177    }
178
179
180}
Note: See TracBrowser for help on using the repository browser.