source: 2012/27/JoukoS/Data Tunnel/Data Tunnel/Data Tunnel/Data_Tunnel.cs @ 3661

Revision 3661, 8.0 KB checked in by jomajusi, 7 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Data_Tunnel : PhysicsGame
10{
11    Vector liikuVasemmalle = new Vector(-300, 0);
12    Vector liikuOikealle = new Vector(300, 0);
13    Image TEO = LoadImage("Threadeateroikealle");
14    Image TEV = LoadImage("Threadeatervasemmalle");
15    Image ThreadO = LoadImage("Threadoikealle");
16    Image ThreadV = LoadImage("Threadvasemmalle");
17    Image BitP = LoadImage("Bittiportaali");
18    Image tausta = LoadImage("binary");
19    IntMeter laskuri;
20    PhysicsObject VihuPallovasen;
21    PhysicsObject VihuPalloOikea;
22    PhysicsObject hyvaPallo;
23    PhysicsObject vasenReuna;
24    PhysicsObject oikeaReuna;
25
26    public override void Begin()
27    {
28        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
29        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
30        LuoKentta();
31        LuoPallo(100, 235, 100, 235, 100, 310, 100);
32        LuoPallo2(150, 95, 150, 95, 150, 165, 125);
33        LuoPallo2(-180, 95, -180, 95, -180, 165, 150);
34        LuoPallo(-320, 50, -320, 50, -400, -40, 100);
35        LuoPallo(-150, -45, -150, -45, -150, 25, 175);
36        LuoPallo(50, -45, 50, -45, 50, 25, 175);
37        LuoPallo(300, -80, 300, -80, 400, -80, 180);
38        LuoPallo2(150, -180, 150, -180, 150, -115, 100);
39        LuoPallo2(100, -180, 100, -180, 100, -115, 125);
40        LuoPallo2(-30, -180, -30, -180, -30, -120, 200);
41        LuoPallo2(-310, -210, -320, -210, -405, -210, 210);
42        LuoPallo(-405, -260, -405, -260, 0, -310, 250);
43        LuoPallo3(290, -350, 290, -350, 150, -350, 225, -260, 300);
44        LuoPortaali(350, -280);
45        LuoPistelaskuri(0);
46        LuoThread(-300, 240);
47        Nappaimet();
48        LuoAikaLaskuri();
49    }
50    void LuoKentta()
51    {
52        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kentta");
53        ruudut.SetTileMethod(Color.Black, LuoPalikka);
54        ruudut.Execute(20, 20);
55        vasenReuna = Level.CreateLeftBorder();
56        vasenReuna.Restitution = 0.0;
57        vasenReuna.KineticFriction = 0.0;
58        vasenReuna.IsVisible = false;
59        Add(vasenReuna);
60        oikeaReuna = Level.CreateRightBorder();
61        oikeaReuna.Restitution = 1.0;
62        oikeaReuna.KineticFriction = 1.0;
63        oikeaReuna.IsVisible = false;
64        Add(oikeaReuna);
65        Level.Background.Image = tausta;
66        Gravity = new Vector(0, -1000);
67        MediaPlayer.Play("Valzuplosion 3000 - The Girl on the Dancefloor");
68        Camera.ZoomToLevel();
69    }
70
71    void LuoPalikka(Vector paikka, double leveys, double korkeus) 
72    { 
73        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
74        palikka.Position = paikka;
75        palikka.Shape = Shape.Rectangle;
76        palikka.Color = Color.Black;
77        palikka.Restitution = (0.0);
78        Add(palikka);
79    }
80    void LuoThread(double x ,double y)
81    {
82        hyvaPallo = new PhysicsObject(40, 40, Shape.Circle);
83        hyvaPallo.Image = ThreadO;
84        hyvaPallo.Restitution = (0.0);
85        hyvaPallo.X = x;
86        hyvaPallo.Y = y;
87        AddCollisionHandler(hyvaPallo, "VihuPallo", delegate(PhysicsObject pelaaja, PhysicsObject kohde)
88            {pelaaja.Position = new Vector(x, y); });
89        AddCollisionHandler(hyvaPallo, "VihuPallo", CollisionHandler.AddMeterValue(laskuri, 1));
90        hyvaPallo.CanRotate = false;
91        Add(hyvaPallo);
92    }
93    void LuoPallo(double x, double y, double V1X, double V1Y, double V2X, double V2Y,double speed)
94    {
95        PhysicsObject VihuPallovasen = new PhysicsObject(50,50, Shape.Circle);
96        VihuPallovasen.Image = TEV;
97        VihuPallovasen.X = x;
98        VihuPallovasen.Y = y;
99        VihuPallovasen.Restitution = (0.0);
100        VihuPallovasen.Brain = LuoAivot(V1X, V1Y, V2X, V2Y, speed);
101        VihuPallovasen.Tag = "VihuPallo";
102        Add(VihuPallovasen);
103    }
104
105    void LuoPallo2(double x, double y, double O1X, double O1Y, double O2X, double O2Y, double speed)
106    {
107        PhysicsObject VihuPalloOikea = new PhysicsObject(50, 50, Shape.Circle);
108        VihuPalloOikea.Image = TEO;
109        VihuPalloOikea.X = x;
110        VihuPalloOikea.Y = y;
111        VihuPalloOikea.Restitution = (0.0);
112        VihuPalloOikea.Brain = LuoAivot(O1X, O1Y, O2X, O2Y, speed);
113        VihuPalloOikea.Tag = "VihuPallo";
114        Add(VihuPalloOikea);
115    }
116    void LuoPallo3(double x, double y, double V1X, double V1Y, double V2X, double V2Y, double V3X, double V3Y, double speed)
117    {
118        PhysicsObject VihuPallovasen = new PhysicsObject(60, 60, Shape.Circle);
119        VihuPallovasen.Image = TEV;
120        VihuPallovasen.X = x;
121        VihuPallovasen.Y = y;
122        VihuPallovasen.Restitution = (0.0);
123        VihuPallovasen.Brain = LuoAivot2(V1X, V1Y, V2X, V2Y, V3X, V3Y, speed);
124        Add(VihuPallovasen);
125    }
126    void LuoPortaali(double x, double y)
127    {
128        PhysicsObject Portaali = PhysicsObject.CreateStaticObject(75, 75);
129        Portaali.Shape = Shape.Ellipse;
130        Portaali.Image = BitP;
131        Portaali.X = x;
132        Portaali.Y = y;
133        Add(Portaali);
134    }
135    void Nappaimet()
136    {
137        Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, "Pelaaja: Liikuta palloa vasemmalle", hyvaPallo, liikuVasemmalle);
138        Keyboard.Listen(Key.Left, ButtonState.Released, AsetaNopeus, null, hyvaPallo, Vector.Zero);
139        Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, "Pelaaja: Liikuta palloa oikealle", hyvaPallo, liikuOikealle);
140        Keyboard.Listen(Key.Right, ButtonState.Released, AsetaNopeus, null, hyvaPallo, Vector.Zero);
141    }
142    void AsetaNopeus(PhysicsObject hyvaPallo, Vector nopeus)
143    {
144        if (nopeus.X < 0)
145            hyvaPallo.Image = ThreadV;
146        else if(nopeus.X > 0)
147            hyvaPallo.Image = ThreadO;
148        hyvaPallo.Velocity = nopeus;
149    }
150    void LuoTaso(Vector paikka)
151    {
152        PhysicsObject taso = PhysicsObject.CreateStaticObject(50, 50);
153        taso.Position = paikka;
154        taso.Color = Color.Black;
155        Add(taso);
156    }
157    void LuoAikaLaskuri()
158    {
159        Timer aikaLaskuri = new Timer();
160        aikaLaskuri.Start();
161        Label aikaNaytto = new Label();
162        aikaNaytto.TextColor = Color.Red;
163        aikaNaytto.DecimalPlaces = 1;
164        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
165        aikaNaytto.Position = new Vector(400, 360);
166        Add(aikaNaytto);
167    }
168    void LuoPistelaskuri(int määrä)
169    {
170        laskuri = new IntMeter(0);
171        Label pisteNaytto = new Label();
172        pisteNaytto.X = -440;
173        pisteNaytto.Y = 350;
174        pisteNaytto.TextColor = Color.White;
175        pisteNaytto.Color = Color.Transparent;
176        pisteNaytto.BindTo(laskuri);
177        pisteNaytto.Title = "Kuolemat";
178        pisteNaytto.BindTo(laskuri);
179        laskuri.Value = määrä;
180        Add(pisteNaytto);
181    }
182    PathFollowerBrain LuoAivot(double vektori1X, double vektori1Y, double vektori2X, double vektori2Y, double speed)
183    {
184        PathFollowerBrain polkuAivot = new PathFollowerBrain();
185        List<Vector> polku = new List<Vector>();
186        polku.Add(new Vector(vektori1X, vektori1Y));
187        polku.Add(new Vector(vektori2X, vektori2Y));
188        polkuAivot.Path = polku;
189        polkuAivot.Loop = true;
190        polkuAivot.Speed = speed;
191        return polkuAivot;
192    }
193    PathFollowerBrain LuoAivot2(double vektori1X, double vektori1Y, double vektori2X, double vektori2Y, double vektori3X, double vektori3Y, double speed)
194    {
195        PathFollowerBrain polkuAivot = new PathFollowerBrain();
196        List<Vector> polku = new List<Vector>();
197        polku.Add(new Vector(vektori1X, vektori1Y));
198        polku.Add(new Vector(vektori2X, vektori2Y));
199        polku.Add(new Vector(vektori3X, vektori3Y));
200        polkuAivot.Path = polku;
201        polkuAivot.Loop = true;
202        polkuAivot.Speed = speed;
203        return polkuAivot;
204    }
205}
Note: See TracBrowser for help on using the repository browser.