source: 2017/31/JohannesL/dodh2/dodh2/dodh2/dodh2.cs @ 9369

Revision 9369, 6.0 KB checked in by npo17_87, 3 years ago (diff)

vihollinen ja kenttä valmiina

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class dodh2 : PhysicsGame
10{
11    const double nopeus = 100;
12    const double hyppyNopeus = 700;
13    const int RUUDUN_KOKO = 10;
14
15    PlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("snoopgas");
18    Image tahtiKuva = LoadImage("norsu");
19    Image vihaajakuva = LoadImage("vihaa");
20    Image rajahdyskuva = LoadImage("vihaa");
21
22    SoundEffect maaliAani = LoadSoundEffect("maali");
23
24    bool saakoRajahtaa = true;
25
26    public override void Begin()
27    {
28        Gravity = new Vector(0.0, -1400.0);
29
30        LuoKentta();
31        LisaaNappaimet();
32        LuoAikaLaskuri();
33        vihaaja();
34       
35
36
37
38        Camera.Follow(pelaaja1);
39        Camera.ZoomFactor = 1.5;
40        Camera.StayInLevel = true;
41 
42    }
43
44    void LuoKentta()
45    {
46        TileMap kentta = TileMap.FromLevelAsset("kentta1");
47        kentta.SetTileMethod('#', LisaaTaso);
48        kentta.SetTileMethod('*', LisaaTahti);
49        kentta.SetTileMethod('N', LisaaPelaaja);
50        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
51        Level.CreateBorders();
52        Level.Background.CreateGradient(Color.Wheat, Color.ForestGreen);
53    }
54
55    void LisaaTaso (Vector paikka, double leveys, double korkeus)
56    {
57        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
58        taso.Position = paikka;
59        taso.Color = Color.Green;
60        Add(taso);
61    }
62
63    void LisaaTahti(Vector paikka, double leveys, double korkeus)
64    {
65        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
66        tahti.IgnoresCollisionResponse = true;
67        tahti.Position = paikka;
68        tahti.Image = tahtiKuva;
69        tahti.Tag = "tahti";
70
71
72
73
74        Add(tahti);
75    }
76
77    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
78    {
79        pelaaja1 = new PlatformCharacter(leveys, korkeus);
80        pelaaja1.Position = paikka;
81        pelaaja1.Mass = 4.0;
82        pelaaja1.Image = pelaajanKuva;
83        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
84        pelaaja1.Weapon = new AssaultRifle(10, 10);
85        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
86        Add(pelaaja1);
87    }
88
89    void LisaaNappaimet()
90    {
91        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
92        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
93
94        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
95        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
96        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
97
98        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
99
100        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
101        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
102        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
103        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
104
105        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
106    }
107
108    void Liikuta(PlatformCharacter hahmo, double nopeus)
109    {
110        pelaaja1.Walk(nopeus);
111    }
112
113    void Hyppaa(PlatformCharacter hahmo, double nopeus)
114    {
115        pelaaja1.Jump(nopeus);
116    }
117
118    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
119    {
120        maaliAani.Play();
121        MessageDisplay.Add("Kerätty!");
122        tahti.Destroy();
123    }
124    void LuoAikaLaskuri()
125    {
126        Timer aikaLaskuri = new Timer();
127        aikaLaskuri.Start();
128
129        Label aikaNaytto = new Label();
130        aikaNaytto.TextColor = Color.Black;
131        aikaNaytto.DecimalPlaces = 1;
132        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
133        Add(aikaNaytto);
134        aikaNaytto.X = 700.0;
135        aikaNaytto.Y = 450.0;
136    }
137    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
138    {
139        //ammus.Destroy();
140    }
141    void AmmuAseella(PlatformCharacter pelaaja)
142    {
143        PhysicsObject ammus = pelaaja.Weapon.Shoot();
144
145        if (ammus != null)
146        {
147            ammus.Size *= 1.0;
148            //ammus.Image =()
149            ammus.MaximumLifetime = TimeSpan.FromSeconds(5.0);
150
151        }
152
153
154    }
155    void vihaaja()
156    {
157        PhysicsObject vihaajaa = new PhysicsObject(20, 20);
158        vihaajaa.Shape = Shape.Rectangle;
159        vihaajaa.Mass = 10.0;
160        vihaajaa.Image = vihaajakuva;
161       
162        Add(vihaajaa);
163        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja1);
164
165        seuraajanAivot.Speed = 100;                 // Millä nopeudella kohdetta seurataan
166        seuraajanAivot.DistanceFar = 600;           // Etäisyys jolla aletaan seurata kohdetta
167        seuraajanAivot.DistanceClose = 50;         // Etäisyys jolloin ollaan lähellä kohdetta
168        seuraajanAivot.StopWhenTargetClose = false;  // Pysähdytään kun ollaan lähellä kohdetta
169        //seuraajanAivot.FarBrain = satunnaisAivot;   // Käytetään satunnaisaivoja kun ollaan kaukana
170       
171        // Tapahtuma, joka tapahtuu kun ollaan lähellä kohdetta
172        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella;
173        vihaajaa.Brain = seuraajanAivot;
174    }
175
176    void mitaTapahtuuKunOllaanLahella()
177    {
178        if (!saakoRajahtaa) return;
179        saakoRajahtaa = false;
180        Timer.SingleShot(5, () => { saakoRajahtaa = true; });
181
182        Explosion rajahdys = new Explosion(100);
183        rajahdys.Image = rajahdyskuva;   
184        rajahdys.Position = pelaaja1.Position;
185        rajahdys.Speed = 100;
186        rajahdys.Force = 10000;
187        Add(rajahdys);
188       
189    }
190}
Note: See TracBrowser for help on using the repository browser.