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

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