source: 2016/30/HenriJ/qq/qq/qq/qq.cs @ 8260

Revision 8260, 6.0 KB checked in by heedjaak, 3 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 qq : PhysicsGame
10{
11    const double nopeus = 300;
12    const double hyppyNopeus = 1000;
13    const int RUUDUN_KOKO = 40;
14
15    Image seina = LoadImage("puuseina");
16    Image loota = LoadImage("Loota");
17    Image laatikko = LoadImage("Laatikko");
18    Image posahdus = LoadImage("bom");
19
20    PlatformCharacter pelaaja1;
21
22    Image pelaajanKuva = LoadImage("sankari");
23    Image tahtiKuva = LoadImage("tahti");
24
25    SoundEffect maaliAani = LoadSoundEffect("maali");
26
27    int Kenttanro = 1;
28
29    public override void Begin()
30    {
31        aloitapeli();
32    }
33    void aloitapeli()
34    {
35        ClearAll();
36
37        if (Kenttanro == 1) LuoKentta("kentta1");
38        else if (Kenttanro == 2) LuoKentta("kentta2");
39
40
41        Gravity = new Vector(0, -1000);
42
43        //LuoKentta("kentta1");
44        LisaaNappaimet();
45
46        Camera.Follow(pelaaja1);
47        Camera.ZoomFactor = 1.2;
48        Camera.StayInLevel = true;
49    }
50
51    void LuoKentta(string kentannimi)
52    {
53        TileMap kentta = TileMap.FromLevelAsset(kentannimi);
54        kentta.SetTileMethod('h', LisaaTaso2);
55        kentta.SetTileMethod('#', LisaaTaso);
56        kentta.SetTileMethod('y', LisaaTaso3);
57        kentta.SetTileMethod('t', LisaaLoota);
58        kentta.SetTileMethod('l', LisaaLoota2);
59        kentta.SetTileMethod('*', LisaaTahti);
60        kentta.SetTileMethod('N', LisaaPelaaja);
61        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
62        Level.CreateBorders();
63        Level.Background.CreateGradient(Color.DarkRed, Color.Black);
64    }
65
66    void LisaaTaso(Vector paikka, double leveys, double korkeus)
67    {
68        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
69        taso.Position = paikka;
70        taso.Color = Color.Green;
71        Add(taso);
72    }
73    void LisaaTaso2(Vector paikka, double leveys, double korkeus)
74    {
75        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
76        taso.Position = paikka;
77        taso.Image = seina;
78        Add(taso);
79    }
80    void LisaaTaso3(Vector paikka, double leveys, double korkeus)
81    {
82        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
83        taso.Position = paikka;
84        taso.Image = seina;
85        taso.Tag = "trap";
86        Add(taso);
87    }
88    void LisaaLoota(Vector paikka, double leveys, double korkeus)
89    {
90        PhysicsObject taso = new PhysicsObject(leveys, korkeus);
91        taso.Position = paikka;
92        taso.Image = loota;
93        taso.Tag = "tnt";
94        Add(taso);
95    }
96    void LisaaLoota2(Vector paikka, double leveys, double korkeus)
97    {
98        PhysicsObject taso = new PhysicsObject(leveys, korkeus);
99        taso.Position = paikka;
100        taso.Image = laatikko;
101        taso.CanRotate = false;
102        AddCollisionHandler(taso, "trap", Ansal);
103        Add(taso);
104    } 
105    void LisaaTahti(Vector paikka, double leveys, double korkeus)
106    {
107        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
108        tahti.IgnoresCollisionResponse = true;
109        tahti.Position = paikka;
110        tahti.Image = tahtiKuva;
111        tahti.Tag = "tahti";
112        Add(tahti);
113    }
114
115    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
116    {
117        pelaaja1 = new PlatformCharacter(leveys, korkeus + 20.0);
118        pelaaja1.Position = paikka;
119        pelaaja1.Mass = 4.0;
120        pelaaja1.Image = pelaajanKuva;
121        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
122        AddCollisionHandler(pelaaja1, "tnt", Blowup);
123        AddCollisionHandler(pelaaja1, "trap", Ansal);
124        Add(pelaaja1);
125    }
126    void Ansal(PhysicsObject pelaaja1, PhysicsObject trap)
127    {
128        Timer ajastin = new Timer();
129        ajastin.Interval = 0.25;
130        ajastin.Timeout += delegate { nytsekatoo(trap); };
131        ajastin.Start();
132       
133    }
134    void nytsekatoo(PhysicsObject trap)
135    {
136        trap.Destroy();
137    }
138
139    void Blowup(PhysicsObject pelaaja1, PhysicsObject tnt)
140    {
141       
142        int pMaxMaara = 400;
143        ExplosionSystem rajahdys = new ExplosionSystem(posahdus, pMaxMaara);
144        Add(rajahdys);
145        double x = tnt.X;
146        double y = tnt.Y;
147        int pMaara = 50;
148        rajahdys.AddEffect(x, y, pMaara);
149        pelaaja1.Destroy();
150        tnt.Destroy();
151        Timer ajastin = new Timer();
152        ajastin.Interval = 1.5;
153        ajastin.Timeout += aloitapeli;
154        ajastin.Start();
155    }
156
157    void LisaaNappaimet()
158    {
159        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
160        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
161
162        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
163        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
164        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
165        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
166        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
167        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
168        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
169
170        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
171    }
172
173    void Liikuta(PlatformCharacter hahmo, double nopeus)
174    {
175        hahmo.Walk(nopeus);
176    }
177
178    void Hyppaa(PlatformCharacter hahmo, double nopeus)
179    {
180        hahmo.Jump(nopeus);
181    }
182
183    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
184    {
185        maaliAani.Play();
186        MessageDisplay.Add("Keräsit tähden!");
187        tahti.Destroy();
188    }
189}
Note: See TracBrowser for help on using the repository browser.