source: 2015/30/JuliaN/Hajottaa/Hajottaa/Hajottaa/Hajottaa.cs @ 6920

Revision 6920, 6.7 KB checked in by jupipana, 7 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 Hajottaa : PhysicsGame
10{
11    const double nopeus = 600;
12    const double hyppyNopeus = 850;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    int kenttaNro = 1;
17
18    Image piikkiKuva = LoadImage("Piikki");
19    Image tahtiKuva = LoadImage("Hiirus");
20    Image hahmoKuva = LoadImage("Sneik");
21    Image tasoKuva = LoadImage("GreenGradient");
22    Image taustaKuva = LoadImage("Lehtia");
23    Image maaliKuva = LoadImage("Maalii");
24    Image bossKuva = LoadImage("Asshat");
25
26    public override void Begin()
27    {
28        AloitaPeli();
29    }
30
31   
32   
33    void AloitaPeli()
34    {
35        ClearAll();
36        Gravity = new Vector(0, -1000);
37
38        if (kenttaNro == 1) LuoKentta("FinalKentta");
39        else if (kenttaNro == 2) LuoKentta("FinalKentta1");
40        else if (kenttaNro == 3) LuoKentta("FinalKentta2");
41        else if (kenttaNro > 3) Exit();
42
43        LisaaNappaimet();
44
45        Camera.Follow(pelaaja1);
46        Camera.ZoomFactor = 1.2;
47        Camera.StayInLevel = true;
48    }
49
50    void LuoKentta(string kenttaTiedostonNimi)
51    {
52        ColorTileMap kentta = ColorTileMap.FromLevelAsset(kenttaTiedostonNimi);
53        kentta.SetTileMethod(Color.Black, LisaaTaso);
54        kentta.SetTileMethod(Color.FromHexCode("FF00DC"), LisaaTahti);
55        kentta.SetTileMethod(Color.FromHexCode("4CFF00"), LisaaPelaaja);
56        kentta.SetTileMethod(Color.FromHexCode("FFD800"), LisaaPiikki);
57        kentta.SetTileMethod(Color.FromHexCode("0026FF"), LisaaMaali);
58        kentta.SetTileMethod(Color.FromHexCode("00FFFF"), LisaaVihollinen);
59
60        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
61        Level.CreateBorders();
62        Level.Background.Color = Color.Blue;
63        Level.Background.Image = taustaKuva;
64        Level.Background.TileToLevel();
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.Color = Color.Green;
73        taso.Image = tasoKuva;
74        Add(taso);
75    }
76
77    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
78    {
79        PlatformCharacter vihollinen = new PlatformCharacter(leveys, korkeus);
80        vihollinen.Tag = "boss";
81        vihollinen.Image = bossKuva;
82        vihollinen.Position = paikka;
83        vihollinen.FacingDirection = Direction.Left;
84        Add(vihollinen);
85        AddCollisionHandler(vihollinen, pelaaja1, VihollinenOsuu);
86       
87        AssaultRifle vihollisenAse = new AssaultRifle(30, 10);
88        vihollisenAse.Ammo.Value = 10000;
89        vihollisenAse.ProjectileCollision = AmmusOsui;
90        vihollinen.Weapon = vihollisenAse;
91
92
93        Timer ajastin = new Timer();
94        ajastin.Interval = 0.5;
95        ajastin.Timeout += delegate
96        {
97            if (!vihollinen.IsDestroyed)
98            {
99                vihollinen.Weapon.Shoot();
100            }
101        };
102        ajastin.Start();
103    }
104
105    void LisaaMaali(Vector paikka, double leveys, double korkeus)
106    {
107        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
108        maali.Tag = "maali";
109        maali.Image = maaliKuva;
110        maali.Position = paikka;
111        Add(maali);
112    }
113
114    void LisaaPiikki(Vector paikka, double leveys, double korkeus)
115    {
116        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
117        piikki.Color = Color.Blue;
118        piikki.Tag = "pahis";
119        piikki.Image = piikkiKuva;
120        piikki.Position = paikka;
121        Add(piikki);
122    }
123
124    void LisaaTahti(Vector paikka, double leveys, double korkeus)
125    {
126        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
127        tahti.IgnoresCollisionResponse = true;
128        tahti.Position = paikka;
129        tahti.Image = tahtiKuva;
130        tahti.Tag = "tahti";
131        Add(tahti);
132    }
133
134    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
135    {
136        pelaaja1 = new PlatformCharacter(leveys, korkeus);
137        pelaaja1.Position = paikka;
138        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
139        AddCollisionHandler(pelaaja1, "pahis", PelaajaOsuu);
140        AddCollisionHandler(pelaaja1, "ammo", PelaajaOsuu);
141        AddCollisionHandler(pelaaja1, "maali", TormasiMaaliin);
142        AddCollisionHandler(pelaaja1, "tahti", CollisionHandler.PlaySound("Eating"));
143        AddCollisionHandler(pelaaja1, "ammo", CollisionHandler.PlaySound("Hmm"));
144        AddCollisionHandler(pelaaja1, "pahis", CollisionHandler.PlaySound("Hmm"));
145        AddCollisionHandler(pelaaja1, "maali", CollisionHandler.PlaySound("Maaliaani"));
146        pelaaja1.Image = hahmoKuva;
147        pelaaja1.Tag = "hahmo";
148        Add(pelaaja1);
149    }
150   
151    void Liikuta(PlatformCharacter hahmo, double nopeus)
152    {
153        hahmo.Walk(nopeus);
154    }
155
156    void Hyppaa(PlatformCharacter hahmo, double nopeus)
157    {
158        hahmo.Jump(nopeus);
159    }
160    void LisaaNappaimet()
161    {
162        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
163        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
164
165        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
166        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
167        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
168    }
169
170    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
171    {
172        MessageDisplay.Add("Söit hiirun!");
173        tahti.Destroy();
174    }
175
176    void PelaajaOsuu(PhysicsObject pelaaja, PhysicsObject kohde)
177    {
178        AloitaPeli();
179        MessageDisplay.Add("Sinusta tehtiin käsilaukku");
180    }
181
182   void VihollinenOsuu(PhysicsObject vihollinen, PhysicsObject pelaaja1)
183    {
184        vihollinen.Destroy();
185        Explosion rajahdys = new Explosion(50);
186        rajahdys.Position = vihollinen.Position;
187        Add(rajahdys);
188    }
189
190    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
191    {
192        ammus.Destroy();
193        Explosion rajahdys = new Explosion(50);
194        rajahdys.Position = ammus.Position;
195        Add(rajahdys);
196        ammus.Tag = "ammo";
197    }
198
199   
200
201    void TormasiMaaliin(PhysicsObject pelaaja1, PhysicsObject maali)
202    {
203        //kasvatetaan kenttänumeroa yhdellä ja siirrytään seuraavaan kenttään:
204        kenttaNro++;
205        AloitaPeli();
206    }
207}
208
Note: See TracBrowser for help on using the repository browser.