source: 2017/31/LeoM/_/_/_/_.cs @ 9312

Revision 9312, 7.4 KB checked in by npo17_89, 2 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 _ : PhysicsGame
10{
11    AssaultRifle pelaajan1Ase;
12
13
14    const double nopeus = 200;
15    const double hyppyNopeus = 750;
16    const int RUUDUN_KOKO = 20;
17
18    PlatformCharacter pelaaja1;
19    Image palikankuva = LoadImage("palikka");
20    Image ammuksenkuva = LoadImage("ammus");
21    Image pelaajanKuva = LoadImage("kissa");
22    Image tahtiKuva = LoadImage("tahti");
23    Image pizzaKuva = LoadImage("pizza");
24    Image vihukuva = LoadImage("auto");
25    SoundEffect maaliAani = LoadSoundEffect("maali");
26    private PlatformCharacter vihu;
27
28    public override void Begin()
29    {
30
31   
32
33        AloitaPeli();
34    }
35    void AloitaPeli()
36    {
37        ClearAll();
38        Gravity = new Vector(0, -1000);
39
40        LuoKentta();
41        LisaaNappaimet();
42
43        Camera.Follow(pelaaja1);
44        Camera.ZoomFactor = 3.5;
45        Camera.StayInLevel = true;
46    }
47    void LuoKentta()
48    {
49        TileMap kentta = TileMap.FromLevelAsset("kentta1");
50        kentta.SetTileMethod('#', LisaaTaso);
51        kentta.SetTileMethod('*', LisaaTahti);
52        kentta.SetTileMethod('n', LisaaPelaaja);
53        kentta.SetTileMethod('p', LisaaPizza);
54        kentta.SetTileMethod('v', LisaaVihu);
55        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
56        Level.CreateBorders();
57        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
58    }
59
60    void LisaaTaso(Vector paikka, double leveys, double korkeus)
61    {
62        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
63        taso.Position = paikka;
64        taso.Image = palikankuva;
65        Add(taso);
66    }
67
68    void LisaaTahti(Vector paikka, double leveys, double korkeus)
69    {
70        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
71        tahti.IgnoresCollisionResponse = true;
72        tahti.Position = paikka;
73        tahti.Image = tahtiKuva;
74        tahti.Tag = "tahti";
75        Add(tahti);
76    }
77    void LisaaPizza(Vector paikka, double leveys, double korkeus)
78    {
79        PhysicsObject pizza = PhysicsObject.CreateStaticObject(leveys, korkeus);
80        pizza.IgnoresCollisionResponse = true;
81        pizza.Position = paikka;
82        pizza.Image = pizzaKuva;
83        pizza.Tag = "pizza";
84        Add(pizza);
85    }
86
87
88
89
90    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
91    {
92        pelaaja1 = new PlatformCharacter(leveys, korkeus);
93        pelaaja1.Position = paikka;
94        pelaaja1.Mass = 4.0;
95        pelaaja1.Image = pelaajanKuva;
96        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
97        AddCollisionHandler(pelaaja1, "pizza", TormaaPizzaan);
98       
99        Add(pelaaja1);
100        pelaajan1Ase = new AssaultRifle(30, 10);
101        pelaaja1.Weapon = pelaajan1Ase;
102        pelaajan1Ase.Ammo.Value = 100;
103        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
104        pelaajan1Ase.IsVisible = false;
105    }
106    void LisaaVihu(Vector paikka, double leveys, double korkeus)
107    {
108        vihu = new PlatformCharacter(leveys, korkeus);
109        vihu.Position = paikka;
110        vihu.Mass = 4.0;
111        vihu.Image = vihukuva;
112        AddCollisionHandler(vihu, pelaaja1);
113        vihu.Tag = "vihu";
114        vihu.IgnoresCollisionResponse = false;
115        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
116        tasoAivot.Speed = 100;
117        tasoAivot.JumpSpeed = 700;
118        tasoAivot.TriesToJump = true;
119        vihu.Brain = tasoAivot;
120        Add(vihu);
121   
122    }
123
124    private void AddCollisionHandler(PlatformCharacter vihu, PlatformCharacter pelaaja1)
125    {
126       
127    }
128
129    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
130    {
131        ammus.Destroy();
132        if (kohde.Tag == "vihu")
133        {
134            kohde.Destroy();
135            Explosion rajahdys = new Explosion(50);
136            rajahdys.Position = kohde.Position;
137            Add(rajahdys);
138        }
139    }
140
141    void AmmuAseella(PlatformCharacter pelaaja)
142    {
143        PhysicsObject ammus = pelaaja.Weapon.Shoot();
144
145        if (ammus != null)
146        {
147            //ammus.Size *= 3;
148            ammus.Image = ammuksenkuva;
149            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
150        }
151    }
152
153        void LisaaNappaimet()
154    {
155        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
156        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
157
158        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
159        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
160        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
161
162        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
163
164        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
165        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
166        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
167
168        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
169
170        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
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
190    void TormaaPizzaan(PhysicsObject hahmo, PhysicsObject pizza)
191    {
192
193        MessageDisplay.Add("söit pizzan!");
194     
195        Timer.SingleShot(2, AloitaAlusta);
196
197    }
198   
199   
200
201
202    void AloitaAlusta()
203    {
204        Mouse.IsCursorVisible = true;
205        ClearAll(); // Tyhjennetään kenttä kaikista peliolioista
206        List<Label> valikonKohdat;
207        valikonKohdat = new List<Label>(); // Alustetaan lista, johon valikon kohdat tulevat
208
209        Label kohta1 = new Label("Aloita uusi peli");  // Luodaan uusi Label-olio, joka toimii uuden pelin aloituskohtana
210        kohta1.Position = new Vector(0, 40);  // Asetetaan valikon ensimmäinen kohta hieman kentän keskikohdan yläpuolelle
211        valikonKohdat.Add(kohta1);  // Lisätään luotu valikon kohta listaan jossa kohtia säilytetään
212
213        Label kohta3 = new Label("Lopeta peli");
214        kohta3.Position = new Vector(0, -40);
215        valikonKohdat.Add(kohta3);
216        // Lisätään kaikki luodut kohdat peliin foreach-silmukalla
217        foreach (Label valikonKohta in valikonKohdat)
218
219            Add(valikonKohta);
220        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
221        Mouse.ListenOn(kohta3, MouseButton.Left, ButtonState.Pressed, Exit, null);
222
223
224        foreach (Label kohta in valikonKohdat)
225        {
226            if (Mouse.IsCursorOn(kohta))
227            {
228                kohta.TextColor = Color.Red;
229            }
230            else
231            {
232                kohta.TextColor = Color.Black;
233            }
234
235
236        }
237   
238   
239
240       
241    }
242}
Note: See TracBrowser for help on using the repository browser.