source: 2014/koodauskerho/38/OttoR/Z_Game/Z_Game/Z_Game/Z_Game.cs @ 5770

Revision 5770, 6.6 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 Z_Game : PhysicsGame
10{
11    const double nopeus = 190;
12    const double hyppyNopeus = 700;
13    const int RUUDUN_KOKO = 51;
14
15    private Image[] kavelyAnimaatio = LoadImages("Player3juoksu1", "Player3juoksu2");
16    private Image[] paikallaanAnimaatio = LoadImages("Player3");
17
18
19    PlatformCharacter pelaaja1;
20
21    DoubleMeter elamaLaskuri;
22
23
24    Image pelaajanKuva = LoadImage("Player3");
25    Image tahtiKuva = LoadImage("tahti");
26    Image tasokuva = LoadImage("ruoho");
27    Image taso2kuva = LoadImage("maa");
28    SoundEffect maaliAani = LoadSoundEffect("maali");
29
30    AssaultRifle pelaajan1Ase;
31
32
33    public override void Begin()
34    {
35        Gravity = new Vector(0, -2000);
36
37        SmoothTextures = false;
38        LuoKentta();
39        LisaaNappaimet();
40
41        Camera.Follow(pelaaja1);
42        Camera.ZoomFactor = 1.6;
43        Camera.StayInLevel = true;
44    }
45
46    void LuoKentta()
47    {
48        TileMap kentta = TileMap.FromLevelAsset("kentta1");
49        kentta.SetTileMethod('#', LisaaTaso);
50        kentta.SetTileMethod('*', LisaaTahti);
51        kentta.SetTileMethod('M', LisaaTaso2);
52        kentta.SetTileMethod('N', LisaaPelaaja);
53        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
54        Level.CreateBorders();
55        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
56    }
57
58    void LisaaTaso(Vector paikka, double leveys, double korkeus)
59    {
60        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
61        taso.Position = paikka;
62        taso.Color = Color.Green;
63        taso.Image = tasokuva;
64        Add(taso);
65    }
66    void LisaaTaso2(Vector paikka, double leveys, double korkeus)
67    {
68        PhysicsObject taso2 = PhysicsObject.CreateStaticObject(leveys, korkeus);
69        taso2.Position = paikka;
70        taso2.Color = Color.Green;
71        taso2.Image = taso2kuva;
72        Add(taso2);
73    }
74
75
76    void LisaaTahti(Vector paikka, double leveys, double korkeus)
77    {
78        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
79        tahti.IgnoresCollisionResponse = true;
80        tahti.Position = paikka;
81        tahti.Image = tahtiKuva;
82        tahti.Tag = "tahti";
83        Add(tahti);
84    }
85
86    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
87    {
88        pelaaja1 = new PlatformCharacter(leveys, korkeus);
89        pelaaja1.Position = paikka;
90        pelaaja1.Mass = 4.0;
91        pelaaja1.Image = pelaajanKuva;
92        pelaaja1.Size = new Vector(50, 75);
93        pelaaja1.AnimWalk = new Animation(kavelyAnimaatio);
94        pelaaja1.AnimIdle = new Animation(paikallaanAnimaatio);
95        pelaaja1.AnimWalk.FPS = 5;
96
97
98        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
99        Add(pelaaja1);
100        LuoElamaLaskuri();
101        LuoHaulikko();
102    }
103
104    void LuoHaulikko()
105    {
106        pelaajan1Ase = new AssaultRifle(40, 35);
107        pelaajan1Ase.FireRate = 99999;
108
109        pelaajan1Ase.Ammo.Value = 3;
110        pelaajan1Ase.InfiniteAmmo = false;
111        pelaajan1Ase.  ProjectileCollision = AmmusOsui;
112
113       
114        pelaaja1.Weapon = pelaajan1Ase;
115        pelaaja1.Weapon.Image = null;
116        pelaaja1.Weapon.Color = Color.Transparent;
117
118        Timer ajastin = new Timer();
119        ajastin.Interval = 0.5;
120        ajastin.Timeout += delegate
121        {
122            pelaajan1Ase.Ammo.Value = 3;
123        };
124        ajastin.Start();
125    }
126
127    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
128    {
129        ammus.Destroy();
130    }
131
132
133    void LuoElamaLaskuri()
134    {
135        elamaLaskuri = new DoubleMeter(100);
136        elamaLaskuri.MaxValue = 100;
137        elamaLaskuri.LowerLimit += pelaaja1.Destroy;
138
139        ProgressBar elamaPalkki = new ProgressBar(390, 20);
140        elamaPalkki.BindTo(elamaLaskuri);
141        //Taustaväri:
142        elamaPalkki.Color = Color.Red;
143
144        //Palkin väri:
145        elamaPalkki.BarColor = Color.BrightGreen;
146
147        //Reunan väri:
148        elamaPalkki.BorderColor = Color.Black;
149
150        elamaPalkki.X = Screen.Left + 285;
151        elamaPalkki.Y = Screen.Top - 1001;
152
153
154
155        Add(elamaPalkki);
156    }
157
158
159    void AmmuAseella(AssaultRifle ase)
160    {
161        Timer.SingleShot(0.01, delegate { ammuaseellakulma(ase, Angle.FromDegrees(5.0)); });
162        Timer.SingleShot(0.03, delegate { ammuaseellakulma(ase, Angle.FromDegrees(0.0)); });
163        Timer.SingleShot(0.06, delegate { ammuaseellakulma(ase, Angle.FromDegrees(-5.0)); });       
164       
165    }
166
167    void ammuaseellakulma(AssaultRifle ase, Angle kulma)
168    {
169        //ase.Angle = kulma;
170
171        ase.AbsoluteAngle = pelaaja1.FacingDirection.Angle + kulma;
172        PhysicsObject ammus = ase.Shoot();
173     
174        //ase.Angle = Angle.FromDegrees(0.0);
175
176
177        if (ammus != null)
178        {
179            ammus.Size *= 1;
180            //ammus.Image =
181            ammus.MaximumLifetime = TimeSpan.FromSeconds(5.0);
182           
183        }
184        //return ammus;
185    }
186
187
188    void LisaaNappaimet()
189    {
190        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
191        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
192
193        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
194        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
195        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
196
197        Keyboard.Listen(Key.Space, ButtonState.Pressed, AmmuAseella, "Ammu", pelaajan1Ase);
198
199
200        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
201
202        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
203        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
204        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
205
206
207
208        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
209    }
210
211    void Liikuta(PlatformCharacter hahmo, double nopeus)
212    {
213        hahmo.Walk(nopeus);
214    }
215
216    void Hyppaa(PlatformCharacter hahmo, double nopeus)
217    {
218        hahmo.Jump(nopeus);
219    }
220
221    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
222    {
223        maaliAani.Play();
224        MessageDisplay.Add("Keräsit tähden!");
225        tahti.Destroy();
226    }
227
228
229}
Note: See TracBrowser for help on using the repository browser.