source: 2016/24/KarriK/FysiikkaPeli2/FysiikkaPeli2/FysiikkaPeli2/FysiikkaPeli2.cs @ 10334

Revision 9637, 5.9 KB checked in by vilhyton, 14 months 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 FysiikkaPeli2 : PhysicsGame
10{
11
12    int kenttä = 1;
13    PhysicsObject pallo;
14    bool lyömässä;
15
16    Image taustaKuva = LoadImage("mine");
17    Image[] taustat = LoadImages("mine", "captain", "galaksi", "awesome");
18    Image golfpallo = LoadImage("golfpallo");
19
20    IntMeter pisteLaskuri;
21
22    public override void Begin()
23    {
24        IsMouseVisible = true;
25        alkuvalikko();
26    }
27
28
29    void LuoKentta()
30    {
31        ClearAll();
32        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kenttä" + kenttä);
33        ruudut.SetTileMethod(Color.Black, LuoTaso);
34        ruudut.SetTileMethod(new Color(255, 0,0), luopallo);
35        ruudut.SetTileMethod(new Color(0, 0, 255), luoreikä);
36        ruudut.SetTileMethod(new Color(0, 255, 0), luonäkymätön);
37        ruudut.SetTileMethod(new Color(255, 255, 0), luovalepalikka);
38        ruudut.Execute(25, 25);
39        Level.Background.Color = Color.LightGreen;
40
41        GameObject tausta = new GameObject(Screen.Width, Screen.Height) { Image = taustaKuva };
42        Add(tausta, -3);
43
44        LuoPistelaskuri();
45    }
46
47    void luopallo(Vector paikka, double leveys, double korkeus)
48    {
49        pallo = new PhysicsObject(20, 20);
50        pallo.Position = paikka;
51        pallo.Shape = Shape.Circle;
52        pallo.Mass = 10.0;
53        pallo.LinearDamping = 0.98;
54        pallo.MaxVelocity = 700;
55        Add(pallo);
56        pallo.Image = ("golfpallo");
57
58        AddCollisionHandler(pallo, "reikä", törmääreikään);
59    }
60
61    void luoreikä(Vector paikka, double leveys, double korkeus)
62    {
63        PhysicsObject reikä = PhysicsObject.CreateStaticObject(20, 20);
64        reikä.Position = paikka;
65        reikä.Shape = Shape.Circle;
66        reikä.Color = Color.Black;
67        reikä.Tag = "reikä";
68        Add(reikä);
69    }
70
71    void LuoTaso(Vector paikka, double leveys, double korkeus)
72    {
73        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
74        taso.Position = paikka;
75        taso.CollisionIgnoreGroup = 1;
76        taso.Color = Color.LightYellow;
77        Add(taso);
78    }
79
80    void luonäkymätön(Vector paikka, double leveys, double korkeus)
81    {
82        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
83        taso.Position = paikka;
84        taso.CollisionIgnoreGroup = 1;
85        taso.Color = Color.Transparent;
86        Add(taso);
87    }
88    void luovalepalikka(Vector paikka, double leveys, double korkeus)
89    {
90        GameObject taso = new GameObject(leveys, korkeus);
91        taso.Position = paikka;
92        taso.Color = Color.LightYellow;
93        Add(taso);
94    }
95
96    void LuoPistelaskuri()
97    {
98        pisteLaskuri = new IntMeter(0);
99
100        Label pisteNaytto = new Label();
101        pisteNaytto.X = Screen.Left + 100;
102        pisteNaytto.Y = Screen.Top - 100;
103        pisteNaytto.TextColor = Color.Black;
104        pisteNaytto.Color = Color.White;
105
106        pisteNaytto.BindTo(pisteLaskuri);
107        Add(pisteNaytto);
108    }
109
110    void alkuvalikko()
111    {
112        MultiSelectWindow alkuValikko = new MultiSelectWindow("Minigolf course", "Aloita peli", "Valitse Kenttä", "Lopeta","Taustakuvat");
113        Add(alkuValikko);
114        alkuValikko.AddItemHandler(0, aloitapeli);
115        alkuValikko.AddItemHandler(1, valitsekenttä);
116        alkuValikko.AddItemHandler(2, Exit);
117        alkuValikko.AddItemHandler(3, valitsetausta);
118    }
119
120    void valitsetausta()
121    {
122        MultiSelectWindow alkuValikko = new MultiSelectWindow("valitse tausta", "Tausta 1", "Tausta 2", "Tausta 3", "Tausta 4");
123        Add(alkuValikko);
124        alkuValikko.AddItemHandler(0, () => { taustaKuva = taustat[0]; alkuvalikko(); });
125        alkuValikko.AddItemHandler(1, () => { taustaKuva = taustat[1]; alkuvalikko(); });
126        alkuValikko.AddItemHandler(2, () => { taustaKuva = taustat[2]; alkuvalikko(); });
127        alkuValikko.AddItemHandler(3, () => { taustaKuva = taustat[3]; alkuvalikko(); });
128        alkuValikko.AddItemHandler(4, () => { taustaKuva = taustat[4]; alkuvalikko(); });
129    }
130
131    void törmääreikään(PhysicsObject pallo, PhysicsObject reikä)
132    {
133        kenttä = kenttä + 1;
134        aloitapeli();
135    }
136
137    void aloitapeli()
138    {
139        LuoKentta();
140
141        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
142
143        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, aloitalyönti, "");
144        Mouse.Listen(MouseButton.Left, ButtonState.Released, lyö, "");
145    }
146
147    void aloitalyönti()
148    {
149        lyömässä = true;
150    }
151
152    void lyö()
153    {
154        Vector suunta = -(Mouse.PositionOnWorld - pallo.Position);
155        pallo.Hit(suunta*35);
156        lyömässä = false;
157        pisteLaskuri.Value += 1;
158    }
159
160    void valitsekenttä()
161    {
162        MultiSelectWindow alkuValikko = new MultiSelectWindow("valitse kenttä", "Kenttä 1", "Kenttä 2", "Kenttä 3","kenttä 4","kenttä 5");
163        Add(alkuValikko);
164        alkuValikko.AddItemHandler(0, () => { kenttä = 1; aloitapeli(); });
165        alkuValikko.AddItemHandler(1, () => { kenttä = 2; aloitapeli(); });
166        alkuValikko.AddItemHandler(2, () => { kenttä = 3; aloitapeli(); });
167        alkuValikko.AddItemHandler(3, () => { kenttä = 4; aloitapeli(); });
168        alkuValikko.AddItemHandler(4, () => { kenttä = 5; aloitapeli(); });
169    }
170   
171    protected override void Paint(Canvas canvas)
172    {
173        if(lyömässä)
174        {
175            canvas.BrushColor = Color.White;
176
177            Vector alku = pallo.Position;
178            Vector suunta = -(Mouse.PositionOnWorld - pallo.Position);
179            Vector loppu = alku + suunta;
180
181            canvas.DrawLine(alku, loppu);
182        }
183     
184
185        base.Paint(canvas);
186    }
187}
188
Note: See TracBrowser for help on using the repository browser.