source: 2017/30/JouniP/Syomispeli/Syomispeli/Syomispeli/Syomispeli.cs @ 9109

Revision 9109, 5.5 KB checked in by nupeohje, 23 months ago (diff)

Viholliset seuraavat pelaajaa

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Syomispeli : PhysicsGame
10{
11    PhysicsObject pelaaja1;
12
13    Image pahiksenNollailukuva = LoadImage("pahisnollailee");
14
15    public override void Begin()
16    {
17
18        LisaaPelaaja1();
19        LisaaOhjaimet();
20
21        LisaaKaikkiViholliset();
22
23
24        LuoKentta();
25
26        //LuoPongmaila(200.0, 0.0);
27       
28       
29    }
30
31    void LisaaKaikkiViholliset()
32    {
33        //LisaaPahis(100.0, 0.0);
34        //LisaaPahis(-100.0, 0.0);
35        //LisaaPahis(0.0, 200.0);
36
37        for (int i = 0; i < 3; i++)
38        {
39            LisaaPahis(RandomGen.NextDouble(Level.Left, Level.Right), RandomGen.NextDouble(Level.Bottom, Level.Top));
40        }
41    }
42
43    void LisaaPahis(double x, double y)
44    {
45        PhysicsObject pahis = new PhysicsObject(40.0, 40.0);
46        pahis.X = x;
47        pahis.Y = y;
48        pahis.CanRotate = false;
49        pahis.Image = pahiksenNollailukuva;
50        pahis.Tag = "ilkee tyyppi";
51        Add(pahis);
52
53        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja1);
54        seuraajanAivot.Speed = 100;                 // Millä nopeudella kohdetta seurataan
55        seuraajanAivot.DistanceFar = 600;           // Etäisyys jolla aletaan seurata kohdetta
56        //seuraajanAivot.DistanceClose = 200;         // Etäisyys jolloin ollaan lähellä kohdetta
57        //seuraajanAivot.StopWhenTargetClose = true;  // Pysähdytään kun ollaan lähellä kohdetta
58        //seuraajanAivot.FarBrain = satunnaisAivot;   // Käytetään satunnaisaivoja kun ollaan kaukana
59
60        // Tapahtuma, joka tapahtuu kun ollaan lähellä kohdetta
61        //seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella;
62        seuraajanAivot.Active = true;
63        pahis.Brain = seuraajanAivot;
64    }
65
66    void LuoKentta()
67    {
68        Level.CreateBorders();
69        Level.Background.CreateGradient(Color.Black, Color.Gray);
70        LisaaRuokapalat();
71
72        //LuoOlio(Shape.Diamond, Color.Blue, 0.0, 0.0);
73        //LuoOlio(Shape.Circle, Color.White, 100.0, 20.0);
74        //LuoOlio(Shape.Rectangle, Color.Brown, 50.0, 150.0);
75
76        //LuoPallo(Color.White, 50.0, 47.8);
77        //LuoPallo(Color.Yellow, 30.0, 30.0);
78        //LuoPallo(Color.Yellow, 70.0, 80.0);
79
80    }
81
82    void LisaaPelaaja1()
83    {
84        pelaaja1 = new PhysicsObject(40.0, 40.0);
85        pelaaja1.CanRotate = false;
86        Add(pelaaja1);
87
88        AddCollisionHandler(pelaaja1, "ruoka", PelaajaKasvaaIsommaksi);
89        AddCollisionHandler(pelaaja1, "ilkee tyyppi", PelaajaTormasiViholliseen);
90    }
91
92    void LisaaRuokapalat()
93    {
94        //LuoSyotavaJuttu(10.0, 10.0);
95        //LuoSyotavaJuttu(90.0, 90.0);
96        //LuoSyotavaJuttu(100.0, 340.0);
97        //LuoSyotavaJuttu(300.0, 390.0);
98        //LuoSyotavaJuttu(200.0, 10.0);
99        //LuoSyotavaJuttu(-200.0, 90.0);
100
101        for (int i = 0; i < 50; i++)
102        {
103            double xKoordinaatti = RandomGen.NextDouble(Level.Left, Level.Right);
104            double yKoordinaatti = RandomGen.NextDouble(Level.Bottom, Level.Top);
105            LuoSyotavaJuttu(xKoordinaatti, yKoordinaatti);
106
107        }
108
109
110    }
111
112    void LisaaOhjaimet()
113    {
114        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-1000.0, 0.0));
115        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, new Vector(1000.0, 0.0));
116        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0.0, 1000.0));
117        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0.0, -1000.0));
118
119        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
120    }
121
122    void LiikutaPelaajaa(Vector vektori)
123    {
124        pelaaja1.Push(vektori);
125    }
126
127    void PelaajaKasvaaIsommaksi(PhysicsObject pelaajaJokaTormasi, PhysicsObject tormayksenKohde)
128    {
129        pelaajaJokaTormasi.Width = pelaajaJokaTormasi.Width + 10.0;
130        pelaajaJokaTormasi.Height = pelaajaJokaTormasi.Height + 10.0;
131
132        tormayksenKohde.Destroy();
133    }
134
135    void PelaajaTormasiViholliseen(PhysicsObject pelaajaJokaTormasi, PhysicsObject vihuJohonTormattiin)
136    {
137        if (pelaajaJokaTormasi.Width - 10.0 <= 0.0 || pelaajaJokaTormasi.Height - 10.0 <= 0.0)
138        {
139            return;
140        }
141        pelaajaJokaTormasi.Width -= 10.0;
142        pelaajaJokaTormasi.Height -= 10.0;
143    }
144    void LuoOlio(Shape muoto, Color vari, double x, double y, double leveys = 40.0, double korkeus = 40.0)
145    {
146        PhysicsObject otus = new PhysicsObject(leveys, korkeus);
147        otus.Shape = muoto;
148        otus.Color = vari;
149        otus.X = x;
150        otus.Y = y;
151        Add(otus);
152    }
153
154    void LuoPallo(Color vari, double x, double y)
155    {
156        LuoOlio(Shape.Circle, vari, x, y);
157    }
158
159    void LuoSyotavaJuttu(double x, double y)
160    {
161        //LuoOlio(Shape.Circle, Color.Yellow, x, y, 10.0, 10.0);
162
163        PhysicsObject syotava = new PhysicsObject(10.0, 10.0);
164        syotava.Shape = Shape.Circle;
165        syotava.Color = Color.Yellow;
166        syotava.X = x;
167        syotava.Y = y;
168        Add(syotava);
169        syotava.Tag = "ruoka";
170
171    }
172
173    void LuoPongmaila(double x, double y)
174    {
175        //PhysicsObject maila = new PhysicsObject(20.0, 80.0);
176        //maila.X = x;
177        //maila.Y = y;
178        //Add(maila);
179
180        LuoOlio(Shape.Rectangle, Color.White, x, y, 20.0, 80.0);
181    }
182}
Note: See TracBrowser for help on using the repository browser.