source: 2013/27/AkseliJ/Levypallo/Levypallo/Levypallo/Levypallo.cs @ 4390

Revision 4390, 6.7 KB checked in by akansaja, 9 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
9
10namespace Levypallo
11{
12    public class Levypallo : PhysicsGame
13    {
14        //Muuttuvat muuttujat
15
16        private Label taulu;
17        public Label Pistetaulu { get { return taulu; } set { taulu = value; } }
18        internal PhysicsObject pallo;
19        int Score;
20        Kuutio[,] kentta;
21        internal static Levypallo instance;
22        internal PhysicsObject levy;
23        internal bool palloKiinni = true;
24        public int elamat = 3;
25
26        //Vakiot
27
28        internal static readonly Vector Tekstin_koko = new Vector(2, 2);
29        internal static readonly double Pallon_nopeus = 424.26;
30        //UNUSED
31        public static readonly Image Pallon_kuva1 = LoadImage("1288501358361");
32
33        public override void Begin()
34        {
35            instance = this;
36
37            AsetaPerusKuuntelijat();
38            ValmisteleTausta();
39            LuoPallo();
40            LuoLevy();
41            LuoKentta();
42            AsetaFysiikkaKuuntelijat();
43            AsetaKontrolliKuuntelijat();
44            Gravity = new Vector(0, -150);
45
46
47        }
48
49        protected override void Update(Time time)
50        {
51            base.Update(time);
52            taulu.Text = "LEVYPALLO SCORE: \n" + Score.ToString()+"\n"+"Elämiä jäljellä:\n"+elamat;
53            if (!palloKiinni)
54                pallo.Velocity = pallo.Velocity.Normalize() * Pallon_nopeus;
55            else pallo.Velocity = levy.Velocity;
56            if (pallo.Y <= Level.Bottom + 30) {
57
58                palloKiinni = true;
59                pallo.X = levy.X;
60                pallo.Y = Level.Bottom + 70;
61                pallo.IgnoresCollisionResponse = true;
62                elamat--;
63            }
64            if (elamat <= 0)
65            {
66                Score = 0;
67           
68            }
69           
70        }
71
72        private void AsetaFysiikkaKuuntelijat()
73        {
74            AddCollisionHandler(pallo, "kuutio", KuutioonIskee);
75        }
76
77        private void KuutioonIskee(PhysicsObject bollen, PhysicsObject kuutio) {
78
79            if (kuutio is Kuutio) {
80
81                Score += 50;
82                Kuutio cube = kuutio as Kuutio;
83
84               
85                //Explosion KABOOOOOOOOOOM = new Explosion(100);
86               //KABOOOOOOOOOOM.X = cube.X;
87                //KABOOOOOOOOOOM.Y = cube.Y;
88                cube.Destroy();
89                //Add(KABOOOOOOOOOOM);
90           
91            }
92           
93         
94        }
95
96        private void AsetaKontrolliKuuntelijat()
97        {
98            Keyboard.Listen<Key, ButtonState>(Key.Left, ButtonState.Down, NappiYlos, null, Key.Left, ButtonState.Down);
99            Keyboard.Listen<Key, ButtonState>(Key.Right, ButtonState.Down, NappiYlos, null, Key.Right, ButtonState.Down);
100            Keyboard.Listen<Key, ButtonState>(Key.Space, ButtonState.Pressed, NappiYlos, null, Key.Space, ButtonState.Pressed);
101            Keyboard.Listen<Key, ButtonState>(Key.Right, ButtonState.Up, NappiYlos, null, Key.Right, ButtonState.Up);
102            Keyboard.Listen<Key, ButtonState>(Key.Left, ButtonState.Up, NappiYlos, null, Key.Left, ButtonState.Up);
103        }
104
105        private void LuoLevy()
106        {
107            levy = PhysicsObject.CreateStaticObject(250, 40);
108            levy.Color = Color.Yellow;
109            levy.X = 0;
110            levy.Y = -375;
111            levy.Restitution = 1.1;
112            levy.Tag = "levy";
113            Add(levy);
114           
115        }
116
117        private void NappiYlos(Key nappi, ButtonState tila) {
118
119            if (tila == ButtonState.Down) {
120
121                if (nappi == Key.Left) {
122                    if (levy.Left - 5 < Level.Left) ;
123                    else
124                    levy.Velocity = new Vector(-325, 0);
125                    return;
126               
127                }
128                else if (nappi == Key.Right) {
129
130                    if (levy.Right > Level.Right) ;
131                    else
132                    {
133                        levy.Velocity = new Vector(325, 0);
134                        return;
135                    }
136               
137                }
138           
139           
140            }
141            if (tila == ButtonState.Pressed && nappi == Key.Space && palloKiinni)
142            {
143                palloKiinni = false;
144                pallo.IgnoresCollisionResponse = false;
145                bool rnd = RandomGen.NextBool();
146                if (rnd) pallo.Velocity = new Vector(300, 300);
147                else pallo.Velocity = new Vector(-300, 300);
148               
149            }
150
151            levy.Velocity = Vector.Zero;
152       
153        }
154
155        private void LuoKentta()
156        {
157            //double KentanTilavuus = Level.Height - 100 / 100 * Level.Width / 100;
158            int korkeus = (((int)Level.Height - 200) / 100);
159            int leveys = ((int)Level.Width / 100);
160            kentta = new Kuutio[korkeus, leveys];
161            for (int i = 0; i < kentta.GetLength(0); i++)
162            {
163                for (int j = 0; j < kentta.GetLength(1); j++)
164                {
165
166                    int exists = RandomGen.NextInt(0, 3);
167                    if (exists != 0)
168                    {
169
170
171
172                        kentta[i, j] = new Kuutio(((int)Level.Bottom / 100) + i, (((int)Level.Left / 100) + j), RandomGen.NextColor());
173                    }
174                    else kentta[i, j] = null;
175
176
177                }
178            }
179
180        }
181
182        private void LuoPallo()
183        {
184            pallo = new PhysicsObject(50, 50);
185            pallo.Color = Color.YellowGreen;
186            pallo.Y = Level.Bottom + 70;
187            pallo.X= 0;
188            pallo.Shape = Shape.Circle;
189            pallo.Restitution = 1.5;
190            pallo.IgnoresGravity = true;
191            pallo.Tag = "pallo";
192            pallo.IgnoresCollisionResponse = true;
193            palloKiinni = true;
194            Add(pallo);
195        }
196
197        private void ValmisteleTausta()
198        {
199            Level.Background.CreateStars(200);
200            Level.CreateBorders(true);
201            Camera.ZoomToLevel();
202            taulu = new Label(400, 400);
203            taulu.Y = Screen.Top - 50;
204            //taulu.X:n paras arvo tähän asti on 325
205            taulu.X = Screen.Right - 325;
206            taulu.TextColor = Color.YellowGreen;
207            taulu.TextScale = Tekstin_koko;
208            Add(taulu);
209
210        }
211
212        private void AsetaPerusKuuntelijat()
213        {
214
215            PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
216            Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
217
218        }
219
220
221    }
222}
Note: See TracBrowser for help on using the repository browser.