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

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