source: 2016/25/PetteriR/hyppelyydd/hyppelyydd/hyppelyydd/hyppelyydd.cs @ 7490

Revision 7490, 5.3 KB checked in by koannak, 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 hyppelyydd : PhysicsGame
10{
11    const double nopeus = 400;
12    const double hyppyNopeus = 800;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pressa;
16    PlatformCharacter pollari;
17    Image pressanKuva = LoadImage("pressa");
18    Image pollarinKuva = LoadImage("pollari");
19    Image nippuKuva = LoadImage("nippu");
20    Image aseKuva = LoadImage("asee");
21
22    SoundEffect maaliAani = LoadSoundEffect("maali");
23
24    public override void Begin()
25    {
26        Gravity = new Vector(0, -1000);
27
28        LuoKentta();
29        LisaaNappaimet();
30
31        Camera.Follow(pressa,pollari);
32        //Camera.ZoomFactor = 1.2;
33       // Camera.StayInLevel = true;
34    }
35
36    void LuoKentta()
37    {
38        TileMap kentta = TileMap.FromLevelAsset("kentta1");
39        kentta.SetTileMethod('#', LisaaTaso);
40        kentta.SetTileMethod('*', LisaaNippu);
41        kentta.SetTileMethod('N', LisaaPressa);
42        kentta.SetTileMethod('M', LisaaPollari);
43        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
44        Level.CreateBorders();
45        Level.Background.CreateGradient(Color.Blue, Color.SkyBlue);
46    }
47    void LisaaPollari(Vector paikka, double leveys, double korkeus)
48    {
49         pollari = new PlatformCharacter(leveys, korkeus);
50        pollari.Position = paikka;
51        pollari.Mass = 4.0;
52        pollari.Image = pollarinKuva;
53        pollari.Tag = "pollari";
54        Add(pollari);
55
56
57        //pelaaja1 on PlatformCharacter-tyyppinen
58        pollari.Weapon = new AssaultRifle(30, 10);
59        pollari.Weapon.Image = aseKuva;
60        pollari.Weapon.Y = pollari.Weapon.Y - 10;
61        //Ammusten määrä aluksi:
62        pollari.Weapon.Ammo.Value = 1000;
63
64        //Mitä tapahtuu kun ammus osuu johonkin?
65        pollari.Weapon.ProjectileCollision = AmmusOsui;
66    }
67    void LisaaTaso(Vector paikka, double leveys, double korkeus)
68    {
69        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
70        taso.Position = paikka;
71        taso.Color = Color.Gray;
72        Add(taso);
73    }
74
75    void LisaaNippu(Vector paikka, double leveys, double korkeus)
76    {
77        PhysicsObject nippu = PhysicsObject.CreateStaticObject(leveys, korkeus);
78        nippu.IgnoresCollisionResponse = true;
79        nippu.Position = paikka;
80        nippu.Image = nippuKuva;
81        nippu.Tag = "nippu";
82        Add(nippu);
83    }
84
85    void LisaaPressa(Vector paikka, double leveys, double korkeus)
86    {
87        pressa = new PlatformCharacter(leveys, korkeus);
88        pressa.Position = paikka;
89        pressa.Mass = 4.0;
90        pressa.Image = pressanKuva;
91        AddCollisionHandler(pressa, "nippu", Tormaanippuun);
92        Add(pressa);
93
94     
95        //pelaaja1 on PlatformCharacter-tyyppinen
96        pressa.Weapon = new AssaultRifle(30, 10);
97        pressa.Weapon.Image = aseKuva;
98        pressa.Weapon.Y = pressa.Weapon.Y - 10;
99        //Ammusten määrä aluksi:
100        pressa.Weapon.Ammo.Value = 1000;
101
102        //Mitä tapahtuu kun ammus osuu johonkin?
103        pressa.Weapon.ProjectileCollision = AmmusOsui;
104    }
105    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
106    {
107        ammus.Destroy();
108        Explosion rajahdys = new Explosion(10);
109        rajahdys.Position = ammus.Position;
110        Add(rajahdys);
111    }
112    void LisaaNappaimet()
113    {
114        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
115        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
116
117        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pressa, -nopeus);
118        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pressa, nopeus);
119        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pressa, hyppyNopeus);
120        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pressa);
121
122        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pollari, -nopeus);
123        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pollari, nopeus);
124        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pollari, hyppyNopeus);
125        Keyboard.Listen(Key.Q, ButtonState.Down, AmmuAseella, "Ammu", pollari);
126
127        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
128    }
129
130    void AmmuAseella(PlatformCharacter pelaaja)
131    {
132        PhysicsObject ammus;
133        if (pelaaja.Tag.Equals("pollari")) ammus = pollari.Weapon.Shoot();
134        else ammus = pressa.Weapon.Shoot();
135
136        if (ammus != null)
137        {
138            //ammus.Size *= 3;
139          //  ammus.Image = ...
140            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
141        }
142    }
143    void Liikuta(PlatformCharacter pollari, double nopeus)
144    {
145        pollari.Walk(nopeus);
146    }
147
148    void Hyppaa(PlatformCharacter pressa, double nopeus)
149    {
150        pressa.Jump(nopeus);
151    }
152
153    void Tormaanippuun(PhysicsObject pressa, PhysicsObject nippu)
154    {
155        maaliAani.Play();
156        MessageDisplay.Add("Varastit Rahan!");
157        nippu.Destroy();
158    }
159    }
Note: See TracBrowser for help on using the repository browser.