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

Revision 7248, 2.8 KB checked in by karkaite, 4 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
15    public override void Begin()
16    {
17        IsMouseVisible = true;
18        alkuvalikko();
19    }
20
21    void LuoKentta()
22    {
23        ClearAll();
24        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kenttä" + kenttä);
25        ruudut.SetTileMethod(Color.Black, LuoTaso);
26        ruudut.SetTileMethod(new Color(255, 0,0), luopallo);
27        ruudut.SetTileMethod(new Color(0, 0, 255), luoreikä);
28        ruudut.Execute(25, 25);
29    }
30
31    void luopallo(Vector paikka, double leveys, double korkeus)
32    {
33        pallo = new PhysicsObject(20, 20);
34        pallo.Position = paikka;
35        pallo.Shape = Shape.Circle;
36        pallo.Mass = 10.0;
37        Add(pallo);
38
39        AddCollisionHandler(pallo, "reikä", törmääreikään);
40    }
41
42    void luoreikä(Vector paikka, double leveys, double korkeus)
43    {
44        PhysicsObject reikä = PhysicsObject.CreateStaticObject(20, 20);
45        reikä.Position = paikka;
46        reikä.Shape = Shape.Circle;
47        reikä.Color = Color.Black;
48        reikä.Tag = "reikä";
49        Add(reikä);
50    }
51
52    void LuoTaso(Vector paikka, double leveys, double korkeus)
53    {
54        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
55        taso.Position = paikka;
56        taso.CollisionIgnoreGroup = 1;
57        taso.Color = Color.Black;
58        Add(taso);
59    }
60    void alkuvalikko()
61    {
62        MultiSelectWindow alkuValikko = new MultiSelectWindow("Minigolf course", "Aloita peli", "Valitse Kenttä", "Lopeta");
63        Add(alkuValikko);
64        alkuValikko.AddItemHandler(0, aloitapeli);
65        alkuValikko.AddItemHandler(1, valitsekenttä);
66        alkuValikko.AddItemHandler(2, Exit);
67    }
68
69    void törmääreikään(PhysicsObject pallo, PhysicsObject reikä)
70    {
71        kenttä = kenttä + 1;
72        aloitapeli();
73    }
74
75    void aloitapeli()
76    {
77        LuoKentta();
78
79        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
80
81        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, lyö, "");
82    }
83
84    void lyö()
85    {
86        Vector suunta = -(Mouse.PositionOnWorld - pallo.Position);
87        pallo.Hit(suunta*20);
88    }
89
90    void valitsekenttä()
91    {
92        MultiSelectWindow alkuValikko = new MultiSelectWindow("valitse kenttä", "Kenttä 1", "Kenttä 2", "Kenttä 3");
93        Add(alkuValikko);
94        alkuValikko.AddItemHandler(0, () => { kenttä = 1; aloitapeli(); });
95        alkuValikko.AddItemHandler(1, () => { kenttä = 2; aloitapeli(); });
96        alkuValikko.AddItemHandler(2, () => { kenttä = 3; aloitapeli(); });
97    }
98}
99
Note: See TracBrowser for help on using the repository browser.