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

Revision 5625, 6.8 KB checked in by aajualal, 6 years ago (diff)

Bugs

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    private Image[] running = LoadImages("running1", "running2");
25    private Image[] standinganimation = LoadImages("shootinganimation");
26    private Image[] shootinganimation = LoadImages("shootinganimation");
27    private Image[] jumpinganimation = LoadImages("jumpinganimation");
28    private Image[] lifelost = LoadImages("LifeLost");
29    private Image[] damage = LoadImages("Damage");
30    const double nopeus = 200;
31    const double hyppyNopeus = 750;
32    const int RUUDUN_KOKO = 40;
33   PlasmaCannon pelaajan1Ase;
34   DoubleMeter health;
35   
36
37    PlatformCharacter pelaaja1;
38    bool invincible = false;
39
40    Image pelaajanKuva = LoadImage("Standinganimation");
41    Image tahtiKuva = LoadImage("stumper(Enemy)");
42
43    SoundEffect maaliAani = LoadSoundEffect("maali");
44
45    public override void Begin()
46    {
47        SmoothTextures = false;
48        AloitaPeli();
49    }
50
51    void AloitaPeli()
52    {
53        ClearAll();
54        Gravity = new Vector(0, -1000);
55
56        LuoKentta();
57        LisaaNappaimet();
58        LuoPistelaskuri();
59
60        Camera.Follow(pelaaja1);
61        Camera.ZoomFactor = 1.2;
62        Camera.StayInLevel = true;
63    }
64
65    void LuoKentta()
66    {
67        TileMap kentta = TileMap.FromLevelAsset("kentta1");
68        kentta.SetTileMethod('#', LisaaTaso);
69        kentta.SetTileMethod('*', Lisaastumper);
70        kentta.SetTileMethod('N', LisaaPelaaja);
71        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
72        Level.CreateBorders();
73        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
74    }
75
76    void LisaaTaso(Vector paikka, double leveys, double korkeus)
77    {
78        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
79        taso.Position = paikka;
80        taso.Color = Color.Green;
81        Add(taso);
82    }
83
84    void Lisaastumper(Vector paikka, double leveys, double korkeus)
85    {
86        Vihu stumper = new Vihu(leveys-4, korkeus-4);
87        stumper.IgnoresCollisionResponse = false;
88        stumper.Position = paikka;
89        stumper.Image = tahtiKuva;
90        stumper.Tag = "stumper";
91        Add(stumper);
92        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
93        tasoAivot.Speed = 200;
94
95        stumper.Brain = tasoAivot;
96
97    }
98
99    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
100    {
101        pelaaja1 = new PlatformCharacter(leveys*0.5, korkeus);
102        pelaaja1.Position = paikka;
103        pelaaja1.Mass = 4.0;
104        pelaaja1.Image = pelaajanKuva;
105        AddCollisionHandler(pelaaja1, "stumper", TormaaTahteen);
106        Add(pelaaja1);
107        pelaaja1.AnimWalk = new Animation(running, running);
108        pelaaja1.AnimIdle = new Animation(shootinganimation);
109        pelaaja1.AnimJump = new Animation(jumpinganimation);
110        pelaaja1.AnimFall = new Animation(jumpinganimation);
111       
112        pelaajan1Ase = new PlasmaCannon(1.0, 1.0);
113        pelaajan1Ase.InfiniteAmmo = true;
114        pelaajan1Ase.ProjectileCollision += AmmusOsuu;
115        pelaaja1.Weapon = pelaajan1Ase;
116    }
117
118    void AmmusOsuu(PhysicsObject ammus, PhysicsObject kohde)
119    {
120        ammus.Destroy();
121
122        if (kohde.Tag == "stumper")
123        {
124            (kohde as Vihu).ElamaLaskuri.Value--;
125        }
126    }
127
128    void LisaaNappaimet()
129    {
130        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
131        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
132
133        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
134        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
135        Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
136        Keyboard.Listen(Key. C, ButtonState.Pressed, Ammu, "Ampuu", pelaajan1Ase);
137
138
139        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
140
141        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
142        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
143        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
144
145        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
146    }
147
148    void Liikuta(PlatformCharacter hahmo, double nopeus)
149    {
150        hahmo.Walk(nopeus);
151    }
152
153    void Hyppaa(PlatformCharacter hahmo, double nopeus)
154    {
155        hahmo.Jump(nopeus);
156    }
157
158    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject stumper)
159    {
160        if (!invincible)
161        {
162            maaliAani.Play();
163            MessageDisplay.Add("Ouch!");
164            health.Value -= 2;
165        }
166        //stumper.Destroy();
167    }
168
169    void Ammu(PlasmaCannon Ase)
170    {
171        Ase.Shoot();
172        pelaaja1.Animation = new Animation(shootinganimation);
173        pelaaja1.Animation.Start();
174    }
175
176    void LuoPistelaskuri()
177    {
178        health = new DoubleMeter(10);
179        health.MaxValue = 15;
180        health.MinValue = 0;
181        health.LowerLimit += PelaajaHaviaa;
182       
183        health.Changed += delegate
184        {
185            Animation anim = new Animation(damage);
186            anim.FPS = 6.0;
187            pelaaja1.PlayAnimation(anim);
188            invincible = true;
189            Timer.SingleShot(1, delegate { invincible = false; });
190        };
191       
192        ProgressBar healthMeter = new ProgressBar(150, 20);
193        healthMeter.X = Screen.Left + 150;
194        healthMeter.Y = Screen.Top - 100;
195        healthMeter.BindTo(health);
196        Add(healthMeter);
197       
198        healthMeter.Angle = Angle.RightAngle;
199        healthMeter.Color = Color.Transparent;
200        healthMeter.BarColor = Color.Red;
201        healthMeter.BorderColor = Color.Black;
202
203
204       
205    }
206    void PelaajaHaviaa()
207    {
208        MessageDisplay.Add("Life Lost...");
209        pelaaja1.Destroy();
210        GameObject kuoli = new GameObject(pelaaja1.Width, pelaaja1.Height);
211        kuoli.Image = lifelost[0];
212        kuoli.Position = pelaaja1.Position;
213        Add(kuoli);
214
215        Timer.SingleShot(2, kuoli.Destroy);
216        Timer.SingleShot(5, AloitaPeli);
217    }
218}
Note: See TracBrowser for help on using the repository browser.