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

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