source: 2017/23/EetuH/tettris2/tettris2/tettris2/tettris2.cs @ 8446

Revision 8446, 5.4 KB checked in by nupeohje, 2 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 tettris2 : PhysicsGame
10{
11    PlatformCharacter2 pallo;
12    IntMeter pistelaskuri;
13    Image ovenkuva = LoadImage("ovi");
14    int kenttalaskuri = 1;
15    public override void Begin()
16    {
17        pallo = Luopallo(new Vector(100.0, 100.0), 100.0, 100.0);
18        Luomaailma();
19        LuoAikaLaskuri();
20        AsetaOhjaimet(pallo);
21        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
22        LuoPisteLaskuri();
23    }
24    PlatformCharacter2 Luopallo(Vector paikka, double leveys, double korkeus)
25    {
26        PlatformCharacter2 pallo = new PlatformCharacter2(100.0, 100.0);
27        pallo.Shape = Shape.Circle;
28        pallo.Restitution = 1.0;
29        pallo.Position = paikka;
30        pallo.Mass = 50.0;
31        Image pallonkuva = LoadImage("hahmo");
32        pallo.Image = pallonkuva; 
33        Add(pallo);
34        AddCollisionHandler(pallo, "ovi", PelaajaTormaaOveen);
35
36        return pallo;
37       
38    }
39    void Luomaailma()
40    {
41        PhysicsObject seina = Level.CreateBottomBorder();
42        seina.Tag = "seina";
43        seina = Level.CreateLeftBorder();
44        seina.Tag = "seina";
45        seina = Level.CreateRightBorder();
46        seina.Tag = "seina";
47        Gravity = new Vector(0.0, -500);
48
49    }
50    void LuoAikaLaskuri()
51    {
52        Timer aikaLaskuri = new Timer();
53        aikaLaskuri.Interval = 1;
54        aikaLaskuri.Timeout += AikaLoppui;
55        aikaLaskuri.Start();
56       
57       
58    }
59    void AikaLoppui()
60    {
61        PhysicsObject laatikko = PhysicsObject.CreateStaticObject(40.0, 40.0);
62        laatikko.X = RandomGen.NextDouble(Screen.Left + 200, Screen.Right - 20);
63        Add(laatikko);
64        laatikko.Y = Screen.Top;
65        laatikko.Tag = "vihollinen";
66        //AddCollisionHandler(laatikko, PysaytaLaatikko);
67
68        Timer ajastin = new Timer();
69        ajastin.Interval= 0.05;
70        ajastin.Timeout += delegate
71        {
72            laatikko.Velocity = new Vector(0, -300);
73
74            List<GameObject> palikat = GetObjectsAt(laatikko.Position + new Vector(0, -22));
75
76            if (palikat.Contains(pallo))
77            {
78                ClearAll();
79                Begin();
80            }
81
82            //palikat.RemoveAll(o => o.Tag.ToString() != "vihollinen" || o.Tag.ToString() != "seina");
83
84            if (palikat.Count > 1)
85            {
86                laatikko.Stop();
87                ajastin.Stop();
88            }
89        };
90        ajastin.Start();
91
92    }
93    void LaatikonPysahdys(PhysicsObject laatikko, PhysicsObject asiaJohonTormataan)
94    {
95        laatikko.MakeStatic();
96        MessageDisplay.Add("laatikko tormasi");
97
98    }
99    void AsetaOhjaimet(PlatformCharacter2 pallo)
100    {
101
102        Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyppy, "hyppää", pallo);
103        Keyboard.Listen(Key.Left, ButtonState.Down, LiikuVasemmalle, "LiikkuuVasemmalle", pallo);
104        Keyboard.Listen(Key.Right, ButtonState.Down, LiikuOikealle, "liikkuuoikealle", pallo);
105        Keyboard.Listen(Key.A, ButtonState.Pressed, HeitaKranu, "heittää kranaatin", pallo);
106
107    }
108    void Hyppy(PlatformCharacter2 pallo)
109    {
110        pallo.Jump(1000);
111    }
112    void LiikuVasemmalle(PlatformCharacter2 pallo)
113    {
114        pallo.Walk(Direction.Left);
115    }
116    void LiikuOikealle(PlatformCharacter2 pallo)
117    {
118        pallo.Walk(Direction.Right);
119    }
120    void HeitaKranu(PlatformCharacter2 pallo)
121    {
122        Grenade kranu = new Grenade(4.0);
123        pallo.Throw(kranu, Angle.FromDegrees(30), 10000);
124        kranu.Explosion.AddShockwaveHandler("vihollinen", KranaattiOsui);
125    }
126    void KranaattiOsui(IPhysicsObject rajahdyksenKohde, Vector v)
127    {
128        rajahdyksenKohde.Destroy();
129        pistelaskuri.AddValue(1);
130    }
131    void PysaytaLaatikko(PhysicsObject laatikko, PhysicsObject este)
132    {
133        laatikko.Stop();
134        laatikko.IgnoresGravity = true;
135
136        laatikko.Mass = 100;
137    }
138    void LuoPisteLaskuri()
139    {
140        pistelaskuri = new IntMeter(0,0,15);
141        pistelaskuri.UpperLimit += LuoOvi;
142        Label pisteNaytto = new Label();
143        pisteNaytto.X = Screen.Left + 100;
144        pisteNaytto.Y = Screen.Top - 100;
145        pisteNaytto.TextColor = Color.Black;
146        pisteNaytto.Color = Color.White;
147
148        pisteNaytto.BindTo(pistelaskuri);
149        Add(pisteNaytto);
150
151    }
152    void LuoOvi()
153    {
154    PhysicsObject ovi = new PhysicsObject(50.0, 50.0);
155    Add(ovi);
156    ovi.MakeStatic();
157    ovi.Color = Color.AshGray;
158    ovi.Tag = "ovi";
159    ovi.Image = ovenkuva;
160    }
161    void PelaajaTormaaOveen(PhysicsObject pallo, PhysicsObject ovi)
162    {
163        ClearAll();
164        UusiMaailma();
165    }
166    void LuoTaso(Vector paikka, double leveys, double korkeus)
167    {
168        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
169        taso.Position = paikka;
170       
171        Add(taso);
172
173    }
174    void UusiMaailma()
175    {
176        TileMap ruudut = TileMap.FromLevelAsset("kentta1");
177        ruudut.SetTileMethod('#', LuoTaso);
178        ruudut.SetTileMethod('P', LuoPelaaja);
179        ruudut.Execute(20, 20);
180
181
182    }
183    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
184    {
185       
186    }
187
188
189   
190}
Note: See TracBrowser for help on using the repository browser.