1 | using System; |
---|
2 | using System.Collections.Generic; |
---|
3 | using Jypeli; |
---|
4 | using Jypeli.Assets; |
---|
5 | using Jypeli.Controls; |
---|
6 | using Jypeli.Effects; |
---|
7 | using Jypeli.Widgets; |
---|
8 | |
---|
9 | public 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 | PhysicsObject VihuPallovasen; |
---|
19 | PhysicsObject VihuPalloOikea; |
---|
20 | PhysicsObject hyvaPallo; |
---|
21 | PhysicsObject vasenReuna; |
---|
22 | PhysicsObject oikeaReuna; |
---|
23 | |
---|
24 | public override void Begin() |
---|
25 | { |
---|
26 | PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); |
---|
27 | Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); |
---|
28 | LuoKentta(); |
---|
29 | LuoPallo(100, 235, 100, 235, 100, 300, 100); |
---|
30 | LuoPallo2(150, 95, 150, 95, 150, 160, 125); |
---|
31 | LuoPallo2(-180, 95, -180, 95, -180, 165, 150); |
---|
32 | LuoPallo(-150, -45, -150, -45, -150, 25, 175); |
---|
33 | LuoPallo(300, -80, 300, -80, 385, -80, 180); |
---|
34 | LuoPallo2(150, -180, 150, -180, 150, -120, 200); |
---|
35 | LuoPallo2(100, -180, 100, -180, 100, -120, 225); |
---|
36 | LuoPortaali(350, -280); |
---|
37 | LuoThread(); |
---|
38 | Nappaimet();LuoAikaLaskuri(); |
---|
39 | }void LuoKentta() |
---|
40 | { |
---|
41 | ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kentta"); |
---|
42 | ruudut.SetTileMethod(Color.Black, LuoPalikka); |
---|
43 | ruudut.Execute(20, 20); |
---|
44 | vasenReuna = Level.CreateLeftBorder(); |
---|
45 | vasenReuna.Restitution = 0.0; |
---|
46 | vasenReuna.KineticFriction = 0.0; |
---|
47 | vasenReuna.IsVisible = false; |
---|
48 | Add(vasenReuna); |
---|
49 | oikeaReuna = Level.CreateRightBorder(); |
---|
50 | oikeaReuna.Restitution = 1.0; |
---|
51 | oikeaReuna.KineticFriction = 1.0; |
---|
52 | oikeaReuna.IsVisible = false; |
---|
53 | Add(oikeaReuna); |
---|
54 | Level.BackgroundColor = Color.White; |
---|
55 | Gravity = new Vector(0, -1000); |
---|
56 | Camera.ZoomToLevel(); |
---|
57 | } |
---|
58 | |
---|
59 | void LuoPalikka(Vector paikka, double leveys, double korkeus) |
---|
60 | { |
---|
61 | PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus); |
---|
62 | palikka.Position = paikka; |
---|
63 | palikka.Shape = Shape.Rectangle; |
---|
64 | palikka.Color = Color.Black; |
---|
65 | palikka.Restitution = (0.0); |
---|
66 | Add(palikka); |
---|
67 | } |
---|
68 | void LuoThread() |
---|
69 | { |
---|
70 | hyvaPallo = new PhysicsObject(40, 40, Shape.Circle); |
---|
71 | hyvaPallo.Image = ThreadO; |
---|
72 | hyvaPallo.Restitution = (0.0); |
---|
73 | hyvaPallo.X = -300; |
---|
74 | hyvaPallo.Y = 240; |
---|
75 | AddCollisionHandler(hyvaPallo, "VihuPallo", delegate(PhysicsObject pelaaja, PhysicsObject kohde) |
---|
76 | {pelaaja.Position = new Vector(-300, 240); }); |
---|
77 | hyvaPallo.CanRotate = false; |
---|
78 | Add(hyvaPallo); |
---|
79 | } |
---|
80 | void LuoPallo(double x, double y, double V1X, double V1Y, double V2X, double V2Y,double speed) |
---|
81 | { |
---|
82 | PhysicsObject VihuPallovasen = new PhysicsObject(50,50, Shape.Circle); |
---|
83 | VihuPallovasen.Image = TEV; |
---|
84 | VihuPallovasen.X = x; |
---|
85 | VihuPallovasen.Y = y; |
---|
86 | VihuPallovasen.Restitution = (0.0); |
---|
87 | VihuPallovasen.Brain = LuoAivot(V1X, V1Y, V2X, V2Y, speed); |
---|
88 | VihuPallovasen.Tag = "VihuPallo"; |
---|
89 | Add(VihuPallovasen); |
---|
90 | } |
---|
91 | |
---|
92 | void LuoPallo2(double x, double y, double O1X, double O1Y, double O2X, double O2Y, double speed) |
---|
93 | { |
---|
94 | PhysicsObject VihuPalloOikea = new PhysicsObject(50, 50, Shape.Circle); |
---|
95 | VihuPalloOikea.Image = TEO; |
---|
96 | VihuPalloOikea.X = x; |
---|
97 | VihuPalloOikea.Y = y; |
---|
98 | VihuPalloOikea.Restitution = (0.0); |
---|
99 | VihuPalloOikea.Brain = LuoAivot(O1X, O1Y, O2X, O2Y, speed); |
---|
100 | VihuPalloOikea.Tag = "VihuPallo"; |
---|
101 | Add(VihuPalloOikea); |
---|
102 | } |
---|
103 | void LuoPortaali(double x, double y) |
---|
104 | { |
---|
105 | PhysicsObject Portaali = PhysicsObject.CreateStaticObject(75, 75); |
---|
106 | Portaali.Image = BitP; |
---|
107 | Portaali.X = x; |
---|
108 | Portaali.Y = y; |
---|
109 | Add(Portaali); |
---|
110 | } |
---|
111 | void Nappaimet() |
---|
112 | { |
---|
113 | Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, "Pelaaja: Liikuta palloa vasemmalle", hyvaPallo, liikuVasemmalle); |
---|
114 | Keyboard.Listen(Key.Left, ButtonState.Released, AsetaNopeus, null, hyvaPallo, Vector.Zero); |
---|
115 | Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, "Pelaaja: Liikuta palloa oikealle", hyvaPallo, liikuOikealle); |
---|
116 | Keyboard.Listen(Key.Right, ButtonState.Released, AsetaNopeus, null, hyvaPallo, Vector.Zero); |
---|
117 | } |
---|
118 | void AsetaNopeus(PhysicsObject hyvaPallo, Vector nopeus) |
---|
119 | { |
---|
120 | hyvaPallo.Velocity = nopeus; |
---|
121 | } |
---|
122 | void LuoTaso(Vector paikka) |
---|
123 | { |
---|
124 | PhysicsObject taso = PhysicsObject.CreateStaticObject(50, 50); |
---|
125 | taso.Position = paikka; |
---|
126 | taso.Color = Color.Black; |
---|
127 | Add(taso); |
---|
128 | } |
---|
129 | void LuoAikaLaskuri() |
---|
130 | { |
---|
131 | Timer aikaLaskuri = new Timer(); |
---|
132 | aikaLaskuri.Start(); |
---|
133 | Label aikaNaytto = new Label(); |
---|
134 | aikaNaytto.TextColor = Color.Black; |
---|
135 | aikaNaytto.DecimalPlaces = 1; |
---|
136 | aikaNaytto.BindTo(aikaLaskuri.SecondCounter); |
---|
137 | aikaNaytto.Position = new Vector(610, 500); |
---|
138 | Add(aikaNaytto); |
---|
139 | } |
---|
140 | PathFollowerBrain LuoAivot(double vektori1X, double vektori1Y, double vektori2X, double vektori2Y, double speed) |
---|
141 | { |
---|
142 | PathFollowerBrain polkuAivot = new PathFollowerBrain(); |
---|
143 | List<Vector> polku = new List<Vector>(); |
---|
144 | polku.Add(new Vector(vektori1X, vektori1Y)); |
---|
145 | polku.Add(new Vector(vektori2X, vektori2Y)); |
---|
146 | polkuAivot.Path = polku; |
---|
147 | polkuAivot.Loop = true; |
---|
148 | polkuAivot.Speed = speed; |
---|
149 | return polkuAivot; |
---|
150 | } |
---|
151 | } |
---|