source: 2014/23/TuukkaJ/ManaaniPage/ManaaniPage/ManaaniPage/ManaaniPage.cs @ 4877

Revision 4877, 7.1 KB checked in by anlakane, 8 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
9
10public class ManaaniPage : PhysicsGame
11{
12    AssaultRifle pelaajan1Ase;
13    const double nopeus = 200;
14    const double hyppyNopeus = 750;
15
16    PeliHahmo pelaaja;
17    PhysicsObject Vastustaja;
18    Image kuvagroundimage = LoadImage("groundimage");
19    Image kuvalava = LoadImage("Lava");
20    Image kuvapelaaja = LoadImage("Pelaaja");
21    Image kuvavastustaja = LoadImage("Vastustaja");
22    Image kuvaammus = LoadImage("Ammus");
23    Image kuvapaavastustaja = LoadImage("hyyppa");
24
25    public override void Begin()
26    {
27        // TODO Kuolemisen jälkeen alkaa uudestaan
28        // TODO Kaikki viholliset pitää tappaa jotta voittaa ja sen jälkeen pääsee toiselle tasolle
29        // TODO Uusia kenttiä
30        // TODO Viholliset ampumaan ( Erillainen vihollinen )
31        // TODO Tee alkuvalikko
32        // TODO Tee aijan otto kello
33        // TODO Tee high score lista
34        // TODO Lisää hpta pelaajalle
35        // TODO Kun tiput laavaan niin ottaa sekunnissa 3hp
36        // TODO Kun otat vahainkoa vihollisesta 1hp
37
38        Gravity = new Vector(0, -2000);
39        LuoKentta();
40        LisaaNappaimet();
41        Mouse.IsCursorVisible = true;
42        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko","Start game", "High Score", "Exit");
43        Add(alkuValikko);
44        Camera.Follow(pelaaja);
45        Camera.Zoom(3);
46        Level.Background.CreateGradient(Color.BloodRed, Color.Black);
47        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
48        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
49    }
50    void LuoKentta()
51    {
52        //1. Luetaan kuva uuteen ColorTileMappiin, kuvan nimen perässä ei .png-päätettä.
53        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("Untitled");
54
55        //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa.
56        ruudut.SetTileMethod(Color.Blue, LuoPelaaja);
57        ruudut.SetTileMethod(Color.Black, LuoTaso);
58        ruudut.SetTileMethod(Color.FromHexCode("FFFF07"), LuoVastustaja);
59        ruudut.SetTileMethod(Color.Red, LuoLava);
60        ruudut.SetTileMethod(Color.FromHexCode("00FF00"), LuoPaavastustaja);
61
62        //3. Execute luo kentän
63        //   Parametreina leveys ja korkeus
64        ruudut.Execute(20, 20);
65    }
66
67    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
68    {
69        pelaaja = new PeliHahmo(30, 30, 3);
70        pelaaja.Position = paikka;
71        pelaaja.Image = kuvapelaaja;
72        AddCollisionHandler(pelaaja, "lava", TormaaLavaan);
73        Add(pelaaja);
74        pelaajan1Ase = new AssaultRifle(30, 10);
75
76        //Ammusten määrä aluksi:
77        pelaajan1Ase.Ammo.Value = 1000;
78
79        //Mitä tapahtuu kun ammus osuu johonkin?
80        pelaajan1Ase.ProjectileCollision = AmmusOsui;
81
82        pelaaja.Add(pelaajan1Ase);
83
84    }
85
86    void LuoTaso(Vector paikka, double leveys, double korkeus)
87    {
88        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
89        taso.Position = paikka;
90        taso.Image = kuvagroundimage;
91        taso.CollisionIgnoreGroup = 2;
92        Add(taso);
93    }
94    void LuoVastustaja(Vector paikka, double leveys, double korkeus)
95    {
96        Vihu hemmo = new Vihu(leveys, korkeus);
97        hemmo.Position = paikka;
98        hemmo.Image = kuvavastustaja;
99        hemmo.CollisionIgnoreGroup = 1;
100        hemmo.CanRotate = false;
101        hemmo.Tag = "hemmo";
102        Add(hemmo);
103        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
104        tasoAivot.Speed = 100;
105        tasoAivot.TriesToJump = true;
106        tasoAivot.FallsOffPlatforms = true;
107
108        hemmo.Brain = tasoAivot;
109    }
110    void LuoLava(Vector paikka, double leveys, double korkeus)
111    {
112        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
113        taso.Position = paikka;
114        taso.Image = kuvalava;
115        taso.CollisionIgnoreGroup = 1;
116        taso.Tag = "lava";
117        Add(taso);
118    }
119    void LuoPaavastustaja(Vector paikka, double leveys, double korkeus)
120    {
121        Vihu hemmo = new Vihu(leveys, korkeus);
122        hemmo.Position = paikka;
123        hemmo.Image = kuvapaavastustaja;
124        hemmo.CollisionIgnoreGroup = 1;
125        hemmo.CanRotate = false;
126        hemmo.Tag = "hemmo";
127        Add(hemmo);
128    }
129    void LisaaNappaimet()
130    {
131        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
132
133        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja, -nopeus);
134        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja, nopeus);
135        Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja, hyppyNopeus);
136        Keyboard.Listen(Key.LeftShift, ButtonState.Down, AmmuAseella, "Ammu", pelaajan1Ase);
137        Mouse.ListenMovement(0.1, Tahtaa, "Tähtää aseella");
138
139        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
140
141        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja, -nopeus);
142        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja, nopeus);
143        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja, hyppyNopeus);
144
145        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
146    }
147    void Liikuta(PlatformCharacter hahmo, double nopeus)
148    {
149        hahmo.Walk(nopeus);
150    }
151
152    void Hyppaa(PlatformCharacter hahmo, double nopeus)
153    {
154        hahmo.Jump(nopeus);
155    }
156    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
157    {
158        if (kohde.Tag == "hemmo")
159        {
160            kohde.Destroy();
161        }
162        ammus.Destroy();
163    }
164    void TormaaLavaan(PhysicsObject pelaaja,PhysicsObject lava)
165        {
166            pelaaja.Destroy();
167        }
168    void AmmuAseella(AssaultRifle ase)
169    {
170        PhysicsObject ammus = ase.Shoot();
171
172        if (ammus != null)
173        {
174            ammus.Size *= 1;
175            ammus.Image = kuvaammus;
176            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
177        }
178    }
179    void Tahtaa(AnalogState hiirenLiike)
180    {
181        Vector suunta = (Mouse.PositionOnWorld - pelaajan1Ase.AbsolutePosition).Normalize();
182        pelaajan1Ase.Angle = suunta.Angle;
183    }
184}
185class Vihu : PlatformCharacter
186{
187    private IntMeter elamaLaskuri = new IntMeter(3, 0, 3);
188    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
189
190    public Vihu(double leveys, double korkeus)
191        : base(leveys, korkeus)
192    {
193        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
194    }
195}
196class PeliHahmo : PlatformCharacter
197{
198    public int Elamat { get; set; }
199
200    public PeliHahmo(double leveys, double korkeus, int elamia)
201        : base(leveys, korkeus)
202    {
203        Elamat = elamia;
204    }
205}
Note: See TracBrowser for help on using the repository browser.