source: 2014/30/AarniAR/AdventureOfStarKid/AdventureOfStarKid/AdventureOfStarKid/AdventureOfStarKid.cs @ 5646

Revision 5646, 8.2 KB checked in by aajualal, 6 years ago (diff)

fail

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9class Vihu : PlatformCharacter
10{
11    private IntMeter elamaLaskuri = new IntMeter(10, 0, 10);
12    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
13
14    public Vihu(double leveys, double korkeus)
15        : base(leveys, korkeus)
16    {
17        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
18    }
19}
20
21
22public class AdventureOfStarKid : PhysicsGame
23{
24    int kenttaNro = 1;
25    private Image[] running = LoadImages("running1", "running2");
26    private Image[] standinganimation = LoadImages("shootinganimation");
27    private Image[] shootinganimation = LoadImages("shootinganimation");
28    private Image[] jumpinganimation = LoadImages("jumpinganimation");
29    private Image[] lifelost = LoadImages("LifeLost");
30    private Image[] damage = LoadImages("Damage");
31    private Image OneUP = LoadImage("1UP");
32    private Image Healing = LoadImage("Healing");
33    const double nopeus = 200;
34    const double hyppyNopeus = 750;
35    const int RUUDUN_KOKO = 40;
36    PlasmaCannon pelaajan1Ase;
37    DoubleMeter health;
38
39
40    PlatformCharacter pelaaja1;
41    bool invincible = false;
42
43    Image pelaajanKuva = LoadImage("Standinganimation");
44    Image tahtiKuva = LoadImage("stumper(Enemy)");
45
46    SoundEffect maaliAani = LoadSoundEffect("maali");
47
48    public override void Begin()
49    {
50        SmoothTextures = false;
51        AloitaPeli();
52    }
53
54    void AloitaPeli()
55    {
56        ClearAll();
57       
58
59        SeuraavaKentta();
60        LisaaNappaimet();
61       
62    }
63
64    void LuoKentta(string kenttaTiedostonNimi)
65    {
66        TileMap kentta = TileMap.FromLevelAsset(kenttaTiedostonNimi);
67        kentta.SetTileMethod('#', LisaaTaso);
68        kentta.SetTileMethod('*', Lisaastumper);
69        kentta.SetTileMethod('N', LisaaPelaaja);
70        kentta.SetTileMethod('1', Lisaa1UP);
71        kentta.SetTileMethod('H', LisaaHealing);
72        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
73        Level.CreateBorders();
74        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
75    }
76    void Lisaa1UP(Vector paikka, double leveys, double korkeus)
77    {
78        AddItem(paikka, leveys, korkeus, OneUP, "1UP");
79    }
80    void LisaaHealing(Vector paikka, double leveys, double korkeus)
81    {
82        AddItem(paikka, leveys, korkeus, Healing, "Heal");
83
84    }
85
86    void AddItem(Vector paikka, double leveys, double korkeus, Image Kuva, String tagi)
87    {
88        PhysicsObject Item = new PhysicsObject(leveys, korkeus);
89        Item.Position = paikka;
90        Add(Item);
91        Item.Image = Kuva;
92        Item.Tag = tagi;
93    }
94
95    void LisaaTaso(Vector paikka, double leveys, double korkeus)
96    {
97        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
98        taso.Position = paikka;
99        taso.Color = Color.Green;
100        Add(taso);
101    }
102
103    void Lisaastumper(Vector paikka, double leveys, double korkeus)
104    {
105        Vihu stumper = new Vihu(leveys - 4, korkeus - 4);
106        stumper.IgnoresCollisionResponse = false;
107        stumper.Position = paikka;
108        stumper.Image = tahtiKuva;
109        stumper.Tag = "stumper";
110        Add(stumper);
111        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
112        tasoAivot.Speed = 100;
113
114        stumper.Brain = tasoAivot;
115
116    }
117
118    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
119    {
120        pelaaja1 = new PlatformCharacter(leveys * 0.5, korkeus);
121        pelaaja1.Position = paikka;
122        pelaaja1.Mass = 4.0;
123        pelaaja1.Image = pelaajanKuva;
124        AddCollisionHandler(pelaaja1, "stumper", TormaaTahteen);
125        Add(pelaaja1);
126        AddCollisionHandler(pelaaja1, "1UP", tormaaOneUP);
127        AddCollisionHandler(pelaaja1, "Heal", tormaaHealingiin);
128        pelaaja1.AnimWalk = new Animation(running);
129        pelaaja1.AnimIdle = new Animation(shootinganimation);
130        pelaaja1.AnimJump = new Animation(jumpinganimation);
131        pelaaja1.AnimFall = new Animation(jumpinganimation);
132
133        pelaajan1Ase = new PlasmaCannon(1.0, 1.0);
134        pelaajan1Ase.InfiniteAmmo = true;
135        pelaajan1Ase.ProjectileCollision += AmmusOsuu;
136        pelaaja1.Weapon = pelaajan1Ase;
137    }
138
139    void AmmusOsuu(PhysicsObject ammus, PhysicsObject kohde)
140    {
141        ammus.Destroy();
142
143        if (kohde.Tag == "stumper")
144        {
145            (kohde as Vihu).ElamaLaskuri.Value--;
146        }
147    }
148
149    void LisaaNappaimet()
150    {
151        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
152        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
153
154        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
155        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
156        Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
157        Keyboard.Listen(Key.C, ButtonState.Pressed, Ammu, "Ampuu", pelaajan1Ase);
158
159
160        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
161
162        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
163        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
164        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
165
166        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
167    }
168
169    void Liikuta(PlatformCharacter hahmo, double nopeus)
170    {
171        hahmo.Walk(nopeus);
172    }
173
174    void Hyppaa(PlatformCharacter hahmo, double nopeus)
175    {
176        hahmo.Jump(nopeus);
177    }
178
179    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject stumper)
180    {
181        if (!invincible)
182        {
183            maaliAani.Play();
184            MessageDisplay.Add("Ouch!");
185            health.Value -= 2;
186        }
187        //stumper.Destroy();
188    }
189
190    void Ammu(PlasmaCannon Ase)
191    {
192        Ase.Shoot();
193        pelaaja1.Animation = new Animation(shootinganimation);
194        pelaaja1.Animation.Start();
195    }
196
197    void LuoPistelaskuri()
198    {
199        health = new DoubleMeter(10);
200        health.MaxValue = 15;
201        health.MinValue = 0;
202        health.LowerLimit += PelaajaHaviaa;
203
204        health.Changed += delegate
205        {
206            Animation anim = new Animation(damage);
207            anim.FPS = 6.0;
208            pelaaja1.PlayAnimation(anim);
209            invincible = true;
210            Timer.SingleShot(1, delegate { invincible = false; });
211        };
212
213        ProgressBar healthMeter = new ProgressBar(150, 20);
214        healthMeter.X = Screen.Left + 150;
215        healthMeter.Y = Screen.Top - 100;
216        healthMeter.BindTo(health);
217        Add(healthMeter);
218
219        healthMeter.Angle = Angle.RightAngle;
220        healthMeter.Color = Color.Transparent;
221        healthMeter.BarColor = Color.Red;
222        healthMeter.BorderColor = Color.Black;
223
224
225
226    }
227    void PelaajaHaviaa()
228    {
229        MessageDisplay.Add("Life Lost...");
230        pelaaja1.Destroy();
231        GameObject kuoli = new GameObject(pelaaja1.Width, pelaaja1.Height);
232        kuoli.Image = lifelost[0];
233        kuoli.Position = pelaaja1.Position;
234        Add(kuoli);
235
236        Timer.SingleShot(2, kuoli.Destroy);
237        Timer.SingleShot(5, AloitaPeli);
238    }
239    void tormaaOneUP(PhysicsObject pelaaja1, PhysicsObject OneUP)
240    {
241        health.Value = health.MaxValue;
242        OneUP.Destroy();
243    }
244    void tormaaHealingiin(PhysicsObject pelaaja1, PhysicsObject Healing)
245    {
246        health.Value += 3;
247        Healing.Destroy();
248
249    }
250    void SeuraavaKentta()
251    {
252        ClearAll();
253        Gravity = new Vector(0, -1000);
254        if (kenttaNro == 1) LuoKentta("kentta1");
255        else if (kenttaNro == 2) LuoKentta("kentta2");
256        else if (kenttaNro == 3) LuoKentta("kentta3");
257        else if (kenttaNro > 3) Exit();
258
259        LisaaNappaimet();
260        LuoPistelaskuri();
261
262        Camera.Follow(pelaaja1);
263        Camera.ZoomFactor = 1.2;
264        Camera.StayInLevel = true;
265    }
266}
Note: See TracBrowser for help on using the repository browser.