source: 2010/30/alsiseoi/WorldOfBallcraft/Peli.cs @ 1454

Revision 1454, 8.1 KB checked in by alsiseoi, 9 years ago (diff)

Peli valmis!

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Widgets;
5using Jypeli.Assets;
6using Jypeli.Effects;
7
8public class Peli : PhysicsGame
9{
10    PhysicsObject Player1;
11    PhysicsObject Player2;
12
13    //PhysicsObject Vihollinen;
14
15    PhysicsObject VasenReuna;
16    PhysicsObject OikeaReuna;
17    PhysicsObject YlaReuna;
18    PhysicsObject AlaReuna;
19
20    Vector NopeusYlos = new Vector(0, 200);
21    Vector NopeusAlas = new Vector(0, -200);
22    Vector NopeusOikealle = new Vector(200, 0);
23    Vector NopeusVasemmalle = new Vector(-200, 0);
24
25    Image olionKuva = LoadImage("nuotio");
26    Image Karistaja = LoadImage("tulitest");
27    Image Talentti0 = LoadImage("Talent0");
28
29    List<PhysicsObject> viholliset;
30
31    bool saakoLisataEfektin;
32
33    protected override void Begin()
34    {
35        LuoKentta();
36        AsetaOhjaimet();
37        Level.AmbientLight = 0.20;
38    }
39
40    PhysicsObject LuoPelaaja(double x, double y, double koko, Color vari)
41    {
42        PhysicsObject pelaaja = new PhysicsObject(koko, koko, Shapes.Circle);
43        pelaaja.Color = vari;
44        pelaaja.X = x;
45        pelaaja.Y = y;
46        Add(pelaaja);
47        AddCollisionHandler(pelaaja, KasittelePelaajanTormays);
48        return pelaaja;
49
50    }
51
52    void LuoVihollinen(double x, double y, double leveys, double korkeus, Color vari, String tagi)
53    {
54        PhysicsObject vihollinen = new PhysicsObject(leveys, korkeus);
55        vihollinen.Color = vari;
56        vihollinen.X = x;
57        vihollinen.Y = y;
58        vihollinen.Tag = tagi;
59        Add(vihollinen);
60
61        RandomMoverBrain satunnaisAivot = new RandomMoverBrain();
62        vihollinen.Brain = satunnaisAivot;
63        viholliset.Add(vihollinen);
64    }
65
66
67    void LuoKentta()
68    {
69        Level.BackgroundColor = new Color (62, 102, 55);
70
71        viholliset = new List<PhysicsObject>();
72
73        GameObject tausta = new GameObject(Level.Width, Level.Height);
74        tausta.Color = new Color (62, 102, 55);
75        Add(tausta, -1);
76
77        Player1 = LuoPelaaja(300, 100, 40, new Color (1, 14, 105));
78        Player2 = LuoPelaaja(300, 200, 40, new Color (64, 0, 0));
79
80        saakoLisataEfektin = true;
81
82        Camera.ZoomToLevel();
83        //Camera.ZoomFactor = 1.5;
84
85        VasenReuna = Level.CreateLeftBorder();
86        VasenReuna.Restitution = 0.0;
87        VasenReuna.IsVisible = true;
88
89        OikeaReuna = Level.CreateRightBorder();
90        OikeaReuna.Restitution = 0.0;
91        OikeaReuna.IsVisible = true;
92
93        YlaReuna = Level.CreateTopBorder();
94        YlaReuna.Restitution = 0.0;
95        YlaReuna.IsVisible = true;
96
97        AlaReuna = Level.CreateBottomBorder();
98        AlaReuna.Restitution = 0.0;
99        AlaReuna.IsVisible = true;
100
101
102        PhysicsObject nuotio = PhysicsObject.CreateStaticObject(70.0, 70.0);
103        nuotio.X = 300;
104        nuotio.Y = -200;
105        nuotio.Image = olionKuva;
106        Add(nuotio);
107        LuoEfekti(nuotio.X, nuotio.Y);
108
109        PhysicsObject tulitest = new PhysicsObject(1.0, 1.0);
110        tulitest.Image = Karistaja;
111
112        LuoVihollinen(100, 150, 30, 20, Color.GreenYellow, "Vihollinen");
113        LuoVihollinen(-50, -100, 40, 20, Color.GreenYellow, "Vihollinen");
114        LuoVihollinen(-300, -200, 70, 10, Color.GreenYellow, "Vihollinen");
115        LuoVihollinen(-450, -330, 90, 110, Color.GreenYellow, "Vihollinen");
116        LuoVihollinen(200, 200, 5, 5, Color.GreenYellow, "Vihollinen");
117        LuoVihollinen(-200, 200, 5, 5, Color.GreenYellow, "Vihollinen");
118        LuoVihollinen(-150, 100, 5, 5, Color.GreenYellow, "Vihollinen");
119        LuoVihollinen(-50, 50, 170, 7, Color.GreenYellow, "Vihollinen");
120        LuoVihollinen(35, 200, 30, 40, Color.GreenYellow, "Vihollinen");
121        LuoVihollinen(50, 40, 10, 10, Color.GreenYellow, "Vihollinen");
122        LuoVihollinen(400, -200, 50, 50, Color.GreenYellow, "Vihollinen");
123    }
124
125    void AsetaOhjaimet()
126    {
127        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Player1: Liikuta pelaajaa ylös", Player1, NopeusYlos);
128        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, Player1, Vector.Zero);
129        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Player1: Liikuta pelaajaa alas", Player1, NopeusAlas);
130        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, Player1, Vector.Zero);
131        Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, "Player1: Liikuta pelaajaa oikealle", Player1, NopeusOikealle);
132        Keyboard.Listen(Key.Right, ButtonState.Released, AsetaNopeus, null, Player1, Vector.Zero);
133        Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, "Player1: Liikuta pelaajaa vasemmalle", Player1, NopeusVasemmalle);
134        Keyboard.Listen(Key.Left, ButtonState.Released, AsetaNopeus, null, Player1, Vector.Zero);
135
136        Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, "Player2: Liikuta pelaajaa ylös", Player2, NopeusYlos);
137        Keyboard.Listen(Key.W, ButtonState.Released, AsetaNopeus, null, Player2, Vector.Zero);
138        Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, "Player2: Liikuta pelaajaa alas", Player2, NopeusAlas);
139        Keyboard.Listen(Key.S, ButtonState.Released, AsetaNopeus, null, Player2, Vector.Zero);
140        Keyboard.Listen(Key.D, ButtonState.Down, AsetaNopeus, "Player2: Liikuta pelaajaa oikealle", Player2, NopeusOikealle);
141        Keyboard.Listen(Key.D, ButtonState.Released, AsetaNopeus, null, Player2, Vector.Zero);
142        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Player1: Liikuta pelaajaa vasemmalle", Player2, NopeusVasemmalle);
143        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, Player2, Vector.Zero);
144
145        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
146        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
147
148        Keyboard.Listen(Key.NumPad0, ButtonState.Pressed, LuoTalentit, "Player1: Talent0", Player1 );
149        //Keyboard.Listen(Key.NumPad0, ButtonState.Released, null, Player1,
150        Keyboard.Listen(Key.D0, ButtonState.Pressed, LuoTalentit, "Player2: Talent0", Player2);
151
152    }
153
154    void AsetaNopeus(PhysicsObject pelaaja, Vector suunta)
155    {
156        pelaaja.Velocity = suunta;
157        //pelaaja.Push(suunta);
158    }
159
160    void KasittelePelaajanTormays(PhysicsObject pelaaja, PhysicsObject kohde )
161    {
162        if (pelaaja == Player1)
163        {
164            if (kohde.Tag.ToString() == "Vihollinen")
165            {
166                Player1.Destroy();
167            }
168        }
169
170        if (pelaaja == Player2)
171        {
172            if (kohde.Tag.ToString() == "Vihollinen")
173            {
174                Player2.Destroy();
175            }
176        }
177    }
178
179    void LuoEfekti(double X, double Y)
180    {
181
182        Flames liekki = new Flames(Karistaja, 25, Angle.Degrees(270));
183        liekki.Position = new Vector(X, Y);
184        Add(liekki);
185       
186        Light valo = new Light();
187        valo.X = X;
188        valo.Y = Y;
189        Add(valo);
190    }
191
192    void LuoTalentit(PhysicsObject pelaaja)
193    {
194        if (saakoLisataEfektin)
195        {
196            int pMaxMaara = 1;
197            ExplosionSystem rajahdys = new ExplosionSystem(Talentti0, pMaxMaara);
198            rajahdys.MinVelocity = 0;
199            rajahdys.MaxVelocity = 0;
200            rajahdys.MaxRotation = 0;
201            rajahdys.MaxRotationSpeed = 0;
202            rajahdys.MaxRotation = 0;
203            rajahdys.MinRotationSpeed = 0;
204            rajahdys.MinLifetime = 5;
205            rajahdys.MaxLifetime = 5;
206            rajahdys.MaxAcceleration = 10;
207            rajahdys.MinScale = 1;
208            rajahdys.MaxScale = 1;
209            Add(rajahdys);
210
211            rajahdys.AddEffect(pelaaja.X, pelaaja.Y, 1);
212        }
213
214        for (int i = 0; i < viholliset.Count; i++)
215        {
216            Vector etaisyys = new Vector(pelaaja.X - viholliset[i].X, pelaaja.Y - viholliset[i].Y);
217            if (etaisyys.Magnitude < 100)
218            {
219                viholliset[i].Destroy();
220            }
221
222        }       
223    }
224
225    void ajastinLaukesi()
226    {
227       //...???
228    }
229}
230
Note: See TracBrowser for help on using the repository browser.