source: 2014/27/ArttuR/Peli_1/Peli_1/Peli_1/Peli_1/Peli_1.cs @ 5279

Revision 5279, 6.6 KB checked in by arosrinn, 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 Peli_1 : PhysicsGame
10{
11    PeliHahmo pelaaja;
12    PeliVihu hirvio;
13    PhysicsObject ammus;
14    GameObject tahtain;
15    Vector suunta;
16
17    AssaultRifle pelaajanAse;
18
19    Image taustaKuva = LoadImage("AlkuTausta");
20    Image avaimenKuva = LoadImage("Avain");
21    Image aseenKuva = LoadImage("ase_1");
22    Image hirvionKuva = LoadImage("Hirvio");
23    Image tahtainKuva = LoadImage("Tahtain");
24    Image seinaKuva = LoadImage("Seina_1");
25    Image pelaajanKuva = LoadImage("Pelaaja");
26    Image lattiaKuva = LoadImage("Lattia_1");
27
28    public override void Begin()
29    {
30        LuoAlkuvalikko();
31
32        PhoneBackButton.Listen(ConfirmExit, "Lopueta peli");
33        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
34    }
35
36    void AloitaPeli()
37    {
38        LuoKentta();
39    }
40
41    void LuoKentta()
42    {
43
44        LuoPelaaja(-1550, 150);
45        LuoHirvio(500, 0);
46        LuoAvain(500, -75);
47        LisaaOhjaimet();
48        Camera.Follow(pelaaja);
49        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("Taso_1");
50
51       
52
53        Level.Background.Color = Color.Black;
54
55        //ruudut.SetTileMethod(Color.FromHexCode("00FF00"), LuoPelaaja);
56        ruudut.SetTileMethod(Color.Black, LuoSeina);
57        //ruudut.SetTileMethod(Color.Yellow, LuoAvain);
58        //ruudut.SetTileMethod(Color.Red, LuoVihu);
59        //ruudut.SetTileMethod(Color.Brown, LuoOvi);
60        ruudut.SetTileMethod(Color.White, LuoLattia);
61        ruudut.Execute(40, 40);
62
63        //IsMouseVisible = true;
64    }
65
66    void AmmusOsui(PhysicsObject ammus, PhysicsObject seina)
67    {
68        if(seina.Tag.Equals("seina")) ammus.Destroy();
69    }
70
71    void HirvioAmmuttiin(PhysicsObject hirvio, PhysicsObject ammus)
72    {
73        if (ammus.Tag.Equals("ammus"))
74        {
75            MessageDisplay.Add("Hirviota ammuttiin!");
76            ((PeliVihu)hirvio).j.Value--;
77            ammus.Destroy();
78        }
79    }
80
81    void PelaajaTormasi(PhysicsObject pelaaja, PhysicsObject hirvio)
82    {
83        MessageDisplay.Add("Pelaaja törmäsi!");
84        ((PeliHahmo)pelaaja).Elamat--;
85        if (((PeliHahmo)pelaaja).Elamat <= 0)
86        {
87            pelaaja.Destroy();
88            MessageDisplay.Add("Kuolit!");
89        }
90    }
91
92    void LisaaOhjaimet()
93    {
94        Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-4000, 0));
95        Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, null, new Vector(4000, 0));
96        Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 4000));
97        Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -4000));
98        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, "Ammu", pelaajanAse);
99    }
100
101    void LiikutaPelaajaa(Vector vektori)
102    {
103        pelaaja.Push(vektori);
104    }
105
106    void LuoPelaaja(double x, double y)
107    {
108        pelaaja = new PeliHahmo(20, 20, 3);
109        pelaaja.Shape = Shape.Circle;
110
111        //pelaaja.Position = paikka;
112        pelaaja.X = x;
113        pelaaja.Y = y;
114        pelaaja.LinearDamping = 0.5;
115        pelaaja.Image = pelaajanKuva;
116        pelaaja.CanRotate = false;
117        pelaaja.RotateImage = true;
118        Add(pelaaja, 2);
119
120        pelaajanAse = new AssaultRifle(30, 10);
121        pelaajanAse.Ammo.Value = 1000;
122        pelaajanAse.FireRate = 2;
123        pelaajanAse.Image = aseenKuva;
124        pelaajanAse.X = 5;
125        pelaajanAse.Y = 10;
126        pelaaja.Add(pelaajanAse);
127        pelaajanAse.Layer = pelaaja.Layer;
128
129        LuoTahtain();
130
131        Camera.Zoom(1.75);
132
133        Mouse.ListenMovement(1.0, HiiriLiikkui, "");
134
135        AddCollisionHandler(pelaaja, "hirvio", PelaajaTormasi);
136    }
137
138
139    void HiiriLiikkui(AnalogState hiirenLiike)
140    {
141        suunta = (Mouse.PositionOnWorld - pelaaja.AbsolutePosition).Normalize();
142        pelaaja.Angle = suunta.Angle;
143        tahtain.AbsolutePosition = Mouse.PositionOnWorld;
144    }
145
146
147    void LuoAvain(double x, double y)
148    {
149        PhysicsObject avain = new PhysicsObject(20, 20);
150        avain.Image = avaimenKuva;
151        avain.X = x;
152        avain.Y = y;
153        Add(avain, 2);
154    }
155
156
157    void LuoSeina(Vector paikka, double leveys, double korkeus)
158    {
159        PhysicsObject seina = PhysicsObject.CreateStaticObject(leveys, korkeus);
160        seina.Position = paikka;
161        seina.Color = Color.Black;
162        //seina.Image = seinaKuva;
163        seina.CollisionIgnoreGroup = 1;
164        seina.Tag = "seina";
165        Add(seina,2);
166    }
167
168
169    void LuoLattia(Vector paikka, double leveys, double korkeus)
170    {
171        GameObject lattia = new GameObject(40, 40);
172        lattia.Position = paikka;
173        lattia.Image = lattiaKuva;
174        Add(lattia,-3);
175    }
176
177    void LuoTahtain()
178    {
179        tahtain = new GameObject (20, 20);
180        tahtain.Image = tahtainKuva;
181        //tahtain.IgnoresPhysicsLogics = true;
182        Add(tahtain, 3);
183    }
184
185    void LuoHirvio(double x, double y)
186    {
187        hirvio = new PeliVihu(20, 20);
188        hirvio.LinearDamping = 0.5;
189        hirvio.Image = hirvionKuva;
190        hirvio.CanRotate = false;
191        hirvio.X = x;
192        hirvio.Y = y;
193        hirvio.Tag = "hirvio";
194        Add(hirvio, 2);
195
196        LabyrinthWandererBrain labyrinttiAivot = new LabyrinthWandererBrain(40);
197        labyrinttiAivot.Speed = 100.0;
198        labyrinttiAivot.LabyrinthWallTag = "seina";
199
200        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
201        seuraajanAivot.Speed = 200;
202        seuraajanAivot.DistanceFar = 400;
203        seuraajanAivot.FarBrain = labyrinttiAivot;
204        seuraajanAivot.TurnWhileMoving = true;
205        hirvio.Brain = seuraajanAivot;
206
207        AddCollisionHandler(hirvio, "ammus", HirvioAmmuttiin);
208    }
209
210    void AmmuAseella(AssaultRifle ase)
211    {
212        ammus = ase.Shoot();
213
214        if (ammus != null)
215        {
216            ammus.Tag = "ammus";
217            AddCollisionHandler(ammus, "seina", AmmusOsui);
218        }
219    }
220
221    void LuoAlkuvalikko()
222    {
223        MultiSelectWindow alkuValikko = new MultiSelectWindow("Peli_1", "Aloita peli", "Asetukset", "Lopeta");
224        Add(alkuValikko);
225
226        Level.Background.Image = taustaKuva;
227        Level.Background.FitToLevel();
228
229        alkuValikko.AddItemHandler(0, AloitaPeli);
230        alkuValikko.AddItemHandler(2, Exit);
231        alkuValikko.Color = Color.Black;
232    }
233}
234
Note: See TracBrowser for help on using the repository browser.