source: 2014/30/AkseliK/BunniesVsHunters/BunniesVsHunters/BunniesVsHunters/BunniesVsHunters.cs @ 10337

Revision 5662, 6.7 KB checked in by sieerinn, 6 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 BunniesVsHunters : PhysicsGame
10{
11    DoubleMeter elamalaskuri;
12    Image taustakuva = LoadImage("puu");
13    const double nopeus = 100;
14    const double hyppyNopeus = 450;
15    const int RUUDUN_KOKO = 40;
16    PlatformCharacter pelaaja1;
17   
18
19    Image pelaajanKuva = LoadImage("thehero");
20    Image tahtiKuva = LoadImage("tahti");
21    Image viholliskuva = LoadImage("vihollinen");
22    Image[] vihollisKavely = LoadImages("kavely1","kavely2");
23    Image[] pupukavely = LoadImages("janiskavely1","janiskavely2","janiskavely3");
24    Image[] pupuseisoo = LoadImages("janiskavely3");
25    Image luotikuva = LoadImage("luoti");
26    Image plokkikuva = LoadImage("plokki");
27    SoundEffect maaliAani = LoadSoundEffect("maali");
28    SoundEffect kuolemisAani = LoadSoundEffect("kuolo");
29
30    public override void Begin()
31    {
32        Gravity = new Vector(0, -1000);
33        SmoothTextures = false;
34        LuoKentta();
35        LisaaNappaimet();
36        LuoElamaLaskuri();
37
38        Camera.Follow(pelaaja1);
39        Camera.ZoomFactor = 1.2;
40        Camera.StayInLevel = true;
41    }
42
43    void LuoKentta()
44    {
45        TileMap kentta = TileMap.FromLevelAsset("kentta1");
46        kentta.SetTileMethod('#', LisaaTaso);
47        kentta.SetTileMethod('*', LisaaTahti);
48        kentta.SetTileMethod('N', LisaaPelaaja);
49        kentta.SetTileMethod('v', LisaaVihollinen);
50        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
51        Level.CreateBorders();
52       
53        //Level.Background.CreateGradient(Color.White, Color.SkyBlue);
54        Level.Background.Image = taustakuva;
55        Level.Background.FitToLevel();
56        Level.Background.TextureWrapSize = new Vector(10, 1);
57        //Level.Background.ScaleToLevelFull();
58        //Level.Background.TextureFillsShape = true;
59        //Level.Background.TileToLevel();
60    }
61
62    void LisaaTaso(Vector paikka, double leveys, double korkeus)
63    {
64        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
65        taso.Position = paikka;
66        taso.Image = plokkikuva;
67        Add(taso);
68    }
69
70    void LisaaTahti(Vector paikka, double leveys, double korkeus)
71    {
72        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
73        tahti.IgnoresCollisionResponse = true;
74        tahti.Position = paikka;
75        tahti.Image = tahtiKuva;
76        tahti.Tag = "tahti";
77        Add(tahti);
78    }
79    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
80    {
81        Vihollishahmo vihollinen = new Vihollishahmo (leveys, korkeus, 3, kuolemisAani);
82        vihollinen.Position = paikka;
83        vihollinen.Image = viholliskuva;
84        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
85        vihollinen.Brain = tasoAivot;
86        tasoAivot.Speed = 70;
87        tasoAivot.JumpSpeed = 650;
88        tasoAivot.TriesToJump = true;
89        Animation kavelyanimaatio = new Animation(vihollisKavely);
90        kavelyanimaatio.FPS = 3;
91        vihollinen.Tag = "vihollinen";
92        vihollinen.AnimWalk = kavelyanimaatio;
93
94
95        Add(vihollinen);
96    }
97    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
98    {
99        pelaaja1 = new PlatformCharacter(leveys, korkeus);
100        pelaaja1.Position = paikka;
101        pelaaja1.Mass = 4.0;
102        pelaaja1.Image = pelaajanKuva;
103        pelaaja1.AnimWalk = new Animation(pupukavely);
104        pelaaja1.AnimIdle = new Animation(pupuseisoo);
105        pelaaja1.AnimWalk.FPS = 4;
106        pelaaja1.Weapon = new AssaultRifle(0.1, 0.1);
107        pelaaja1.Weapon.FireRate = 1.5;
108        pelaaja1.Weapon.Power.DefaultValue = 200;
109        pelaaja1.Weapon.AmmoIgnoresGravity = false;
110        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
111        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
112        AddCollisionHandler(pelaaja1, "vihollinen", TormaaViholliseen);
113
114        Add(pelaaja1);
115    }
116    void AmmuAseella(PlatformCharacter pelaaja)
117    {
118    PhysicsObject ammus = pelaaja.Weapon.Shoot();
119    if (ammus != null)
120    {
121        ammus.Restitution = 0;
122        ammus.Size *= 0.3;
123        ammus.Image = luotikuva;
124        ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
125    }
126
127    }
128    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
129    {
130        ammus.Destroy();
131
132        if (kohde.Tag == "vihollinen")
133        {
134            (kohde as Vihollishahmo).ElamaLaskuri.Value--;
135        }
136
137    }
138
139    void LisaaNappaimet()
140    {
141        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
142        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
143        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
144        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
145        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
146        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
147
148        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
149
150        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
151        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
152        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
153
154        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
155    }
156
157    void Liikuta(PlatformCharacter hahmo, double nopeus)
158    {
159        hahmo.Walk(nopeus);
160    }
161
162    void Hyppaa(PlatformCharacter hahmo, double nopeus)
163    {
164        hahmo.Jump(nopeus);
165    }
166
167    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
168    {
169        maaliAani.Play();
170        MessageDisplay.Add("you escaped");
171        tahti.Destroy();
172
173    }
174    void LuoElamaLaskuri()
175    {
176        elamalaskuri = new DoubleMeter(10);
177        elamalaskuri.MaxValue = 10;
178        elamalaskuri.LowerLimit += ElamaLoppui;
179
180        ProgressBar elamaPalkki = new ProgressBar(150, 20);
181        elamaPalkki.X = Screen.Left + 150;
182        elamaPalkki.Y = Screen.Top - 20;
183        elamaPalkki.BindTo(elamalaskuri);
184        Add(elamaPalkki);
185    }
186
187    void ElamaLoppui()
188    {
189        MessageDisplay.Add("u are now lunch");
190        pelaaja1.Destroy();
191    }
192    void TormaaViholliseen(PhysicsObject hahmo, PhysicsObject Vihollinen)
193    {
194        elamalaskuri.Value--;
195    }
196}
Note: See TracBrowser for help on using the repository browser.