source: 2015/23/OskuL/FysiikkaPeli2/FysiikkaPeli2/FysiikkaPeli2/FysiikkaPeli2.cs @ 5867

Revision 5867, 6.0 KB checked in by jotapoti, 5 years ago (diff)

pelinosia

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class FysiikkaPeli2 : PhysicsGame
10{
11
12    PhysicsObject pelaaja1, pelaaja2;
13    DoubleMeter elamaLaskuri;
14    public override void Begin()
15    {
16
17        LuoKentta();
18        LuoOhjaimet();
19        //Camera.Position = pelaaja1.Position + new Vector(720, 0);
20        Camera.Follow(pelaaja1, pelaaja2);
21        Camera.FollowXMargin = 1000;
22        Camera.FollowYMargin = 100;
23        Camera.StayInLevel = true;
24
25       
26
27        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
28    }
29    private void LuoKentta()
30    {
31        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("SPACERACE");
32
33        ruudut.SetTileMethod(Color.Cyan, LuoPelaaja1);
34        ruudut.SetTileMethod(Color.Gold, LuoPelaaja2);
35        ruudut.SetTileMethod(Color.Black, LuoAsteroidi);
36        ruudut.SetTileMethod(Color.Red, LuoReuna);
37        //Level.Background.CreateStars();
38
39       
40        ruudut.Execute(20, 20);
41
42        //GameObject tausta = new GameObject(LoadImage("Earth"));
43       
44        //Add(tausta, -3);
45        Image taustakuva = LoadImage("earth");
46        GameObject taustaPilvet = new GameObject(Screen.Width * 1.5, Screen.Height * 1.5 );
47        taustaPilvet.Image = taustakuva;
48        Add(taustaPilvet, -3);
49        Layers[-3].RelativeTransition = new Vector(0.5, 0.5);
50
51
52       
53        //Level.Background.Scale = 2.0;
54        //Level.Size = Level.Size * 2;
55        //Level.Background.
56    }
57
58    void LuoElamaLaskuri()
59    {
60        elamaLaskuri = new DoubleMeter(10);
61        elamaLaskuri.MaxValue = 10;
62        elamaLaskuri.LowerLimit += ElamaLoppui;
63
64        ProgressBar elamaPalkki = new ProgressBar(150, 20);
65        elamaPalkki.X = Screen.Left + 150;
66        elamaPalkki.Y = Screen.Top - 20;
67        elamaPalkki.BindTo(elamaLaskuri);
68        Add(elamaPalkki);
69    }
70
71    void ElamaLoppui()
72    {
73        MessageDisplay.Add("Hävisit, paremmin ensikerralla");
74    }
75    private void LuoOhjaimet()
76    {
77        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, "Liikutetaan pelaajaa", 1, 1);
78        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, "käännä oikealle", 1, 2);
79        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, "käännä vasemmalle", 1, 3);
80        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, "jarru taaksepäin", 1, 4);
81
82        Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, "Liikutetaan pelaajaa", 2, 1);
83        Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, "käännä oikealle", 2, 2);
84        Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, "käännä vasemmalle", 2, 3);
85        Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, "jarru taaksepäin", 2, 4);
86    }
87    private void LiikutaPelaajaa(int pelaajaNro, int liikkeenTyyppi)
88    {
89        switch (pelaajaNro)
90        {
91            case 1:
92                switch (liikkeenTyyppi)
93                {
94                    case 1:
95                        pelaaja1.Push(Vector.FromLengthAndAngle(250.0, pelaaja1.Angle));//kaasu eteen                       
96                        break;
97                    case 2:
98                        pelaaja1.Angle += Angle.FromDegrees(-1.5);//oikealle=myötäpäivään
99                        break;
100                    case 3:
101                        pelaaja1.Angle += Angle.FromDegrees(1.5);//vasemmalle=vastapäivään
102                        break;
103                    case 4:
104                        pelaaja1.Push(-Vector.FromLengthAndAngle(250.0, pelaaja1.Angle));
105                        break;
106                }
107               
108                break;
109            case 2:
110                switch (liikkeenTyyppi)
111                {
112                    case 1:
113                        pelaaja2.Push(Vector.FromLengthAndAngle(250.0, pelaaja2.Angle));//kaasu eteen                       
114                        break;
115                    case 2:
116                        pelaaja2.Angle += Angle.FromDegrees(-2.0);//oikealle=myötäpäivään
117                        break;
118                    case 3:
119                        pelaaja2.Angle += Angle.FromDegrees(2.0);//vasemmalle=vastapäivään
120                        break;
121                    case 4:
122                        pelaaja2.Push(-Vector.FromLengthAndAngle(250.0, pelaaja2.Angle));
123                        break;
124                }
125                break;
126        }
127    }
128
129    private void LuoAsteroidi(Vector paikka, double leveys, double korkeus)
130    {
131        PhysicsObject asteroidi = new PhysicsObject(LoadImage("ASTEROIDI"));
132        asteroidi.Position = paikka;
133        asteroidi.Tag = "ASTEROIDI";
134        Add(asteroidi);
135    }
136    private void LuoPelaaja1(Vector paikka, double leveys, double korkeus)
137    {
138        pelaaja1 = new PhysicsObject(LoadImage("alus"));
139        pelaaja1.Position = paikka;
140        pelaaja1.AngularDamping = 0.9;
141        Add(pelaaja1);
142        pelaaja1.LinearDamping = 0.98;
143        AddCollisionHandler(pelaaja1, "ASTEROIDI", PelaajaOsuu);
144    }
145    private void LuoPelaaja2(Vector paikka, double leveys, double korkeus)
146    {
147        pelaaja2 = new PhysicsObject(LoadImage("alus"));
148        pelaaja2.Position = paikka;
149        pelaaja2.AngularDamping = 0.9;
150        Add(pelaaja2);
151        pelaaja2.LinearDamping = 0.98;
152        AddCollisionHandler(pelaaja2, "ASTEROIDI", PelaajaOsuu);
153    }
154    private void LuoReuna(Vector paikka, double leveys, double korkeus)
155    {
156        PhysicsObject reuna = PhysicsObject.CreateStaticObject(20, 20);
157        reuna.Position = paikka;
158        Add(reuna);
159        reuna.Color = Color.Transparent;
160    }
161    private void AloitaPeli()
162    {
163
164    }
165
166    void PelaajaOsuu(PhysicsObject pelaaja, PhysicsObject kohde)
167    {
168        if (elamaLaskuri != null)
169        {
170            elamaLaskuri.Value -= 1;
171        }
172        kohde.Destroy();
173    }
174
175 
176}
Note: See TracBrowser for help on using the repository browser.