source: 2016/27/PatrikK/Seikkailu/Seikkailu/Seikkailu/Seikkailu.cs @ 8043

Revision 8043, 5.6 KB checked in by koannak, 5 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 Seikkailu : PhysicsGame
10{
11    const double nopeus = 500;
12    const double hyppyNopeus = 1000;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("creeper");
18    Image tahtiKuva = LoadImage("tahti");
19    Image olionKuva = LoadImage("pinksheep");
20
21    SoundEffect maaliAani = LoadSoundEffect("maali");
22
23    LaserGun pelaajan1Ase;
24
25    public override void Begin()
26    {
27        Gravity = new Vector(0, -200);
28
29        LuoKentta();
30        LisaaNappaimet();
31
32        Camera.Follow(pelaaja1);
33        Camera.ZoomFactor = 1.0;
34        Camera.StayInLevel = true;
35    }
36
37    void LuoKentta()
38       
39    {
40        TileMap kentta = TileMap.FromLevelAsset("kentta2");
41        kentta.SetTileMethod('#', LisaaTaso);
42        kentta.SetTileMethod('*', LisaaTahti);
43        kentta.SetTileMethod('N', LisaaPelaaja);
44        kentta.SetTileMethod('V', LisaaVihu);
45        kentta.SetTileMethod('S', LisaaVihuSpawner);
46        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
47        Level.CreateBorders();
48        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
49
50    }
51    void LisaaVihuSpawner(Vector paikka, double leveys, double korkeus)
52    {
53        Timer vihuAjastin = new Timer();
54        vihuAjastin.Interval = 1;
55        vihuAjastin.Timeout += delegate { LisaaVihu(paikka, leveys, korkeus); };
56        vihuAjastin.Start();
57    }
58
59    void LisaaTaso(Vector paikka, double leveys, double korkeus)
60    {
61        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
62        taso.Position = paikka;
63        taso.Color = Color.Green;
64        Add(taso);
65    }
66    void LisaaVihu(Vector paikka, double leveys, double korkeus)
67    {
68     
69        PlatformCharacter Vihu = new PlatformCharacter(leveys, korkeus);
70        Vihu.Image = olionKuva;
71        Vihu.Shape = Shape.Rectangle;
72        Vihu.Position = paikka;
73        Vihu.Tag = "Vihu";
74        Add(Vihu);
75
76        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
77        tasoAivot.Speed = 100;
78
79        Vihu.Brain = tasoAivot;
80        tasoAivot.FallsOffPlatforms = true;
81        tasoAivot.JumpSpeed = 1000;
82        tasoAivot.TriesToJump = true;
83       
84    }
85    void LisaaTahti(Vector paikka, double leveys, double korkeus)
86    {
87        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
88        tahti.IgnoresCollisionResponse = true;
89        tahti.Position = paikka;
90        tahti.Image = tahtiKuva;
91        tahti.Tag = "tahti";
92        Add(tahti);
93    }
94
95    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
96    {
97        pelaaja1 = new PlatformCharacter(leveys, korkeus);
98        pelaaja1.IgnoresExplosions = true;
99        pelaaja1.Position = paikka;
100        pelaaja1.Mass = 10.001;
101        pelaaja1.Image = pelaajanKuva;
102        AddCollisionHandler(pelaaja1, "Vihu", TormaaViholliseen);
103        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
104        Add(pelaaja1);
105
106        //pelaaja1 on PlatformCharacter-tyyppinen
107        pelaaja1.Weapon = new LaserGun(30, 10);
108
109        //Ammusten määrä aluksi:
110        pelaaja1.Weapon.Ammo.Value = int.MaxValue;
111
112        //Mitä tapahtuu kun ammus osuu johonkin?
113        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
114
115
116    }
117
118    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
119    {
120        ammus.Destroy();
121        if (kohde.Tag.Equals("Vihu")) kohde.Destroy();
122    }
123
124    void AmmuAseella(PlatformCharacter pelaaja)
125    {
126        PhysicsObject ammus = pelaaja.Weapon.Shoot();
127
128        if (ammus != null)
129        {
130            //ammus.Size *= 3;
131            //ammus.Image = ...
132            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
133        }
134    }
135
136    void LisaaNappaimet()
137    {
138        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
139        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
140
141        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus*10);
142        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus*10);
143        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
144
145        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
146
147        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
148        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
149        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
150        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
151
152        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
153    }
154
155    void Liikuta(PlatformCharacter hahmo, double nopeus)
156    {
157        hahmo.Walk(nopeus);
158    }
159
160    void Hyppaa(PlatformCharacter hahmo, double nopeus)
161    {
162        hahmo.Jump(nopeus);
163    }
164
165    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
166    {
167        maaliAani.Play();
168        MessageDisplay.Add("Keräsit tähden!");
169        tahti.Destroy();
170    }
171    void TormaaViholliseen(PhysicsObject hahmo, PhysicsObject vihu) {
172        Explosion rajahdys = new Explosion(50);
173        rajahdys.Position = vihu.Position;
174        Add(rajahdys);
175        vihu.Destroy(); }
176   
177       
178
179
180
181}
182
Note: See TracBrowser for help on using the repository browser.