source: sipi_o/pongi/Peli.cs @ 16

Revision 16, 3.0 KB checked in by anlakane, 11 years ago (diff)

zzz

Line 
1#region Usings
2using System;
3using System.Collections.Generic;
4using System.Linq;
5using Microsoft.Xna.Framework;
6using Microsoft.Xna.Framework.Audio;
7using Microsoft.Xna.Framework.Content;
8using Microsoft.Xna.Framework.Graphics;
9using Microsoft.Xna.Framework.Input;
10using Microsoft.Xna.Framework.Media;
11using Jypeli;
12using Jypeli.ScreenObjects;
13using Jypeli.Assets;
14using AdvanceMath;
15using Physics2DDotNet;
16using Physics2DDotNet.Shapes;
17#endregion
18
19namespace pongi
20{
21    public class Peli : PhysicsGame
22    {
23        const double mailanNopeus = 200.0;
24        PhysicsObject pallo;
25        PhysicsObject maila1;
26        PhysicsObject maila2;
27
28        protected override void LoadContent()
29        {
30            Level = LuoKentta();
31            AsetaOhjaimet();
32            AloitaPeli();
33        }
34
35        Level LuoKentta()
36        {
37            Level kentta = new Level(this);
38            kentta.BackgroundColor = Color.DarkSeaGreen;
39
40            IShape ympyra = Shapes.CreateCircle(20.0);
41            pallo = new PhysicsObject(10.0, ympyra);
42            pallo.X = -200.0;
43            pallo.Y = 0.0;
44            pallo.Restitution = 1.0;
45            kentta.Objects.Add(pallo);
46
47            maila1 = LuoMaila(kentta.Left + 20.0, 0.0, kentta);
48            maila2 = LuoMaila(kentta.Right - 20.0, 0.0, kentta);
49
50            kentta.CreateBorder(1.0, false);
51
52            return kentta;
53        }
54
55        PhysicsObject LuoMaila(double x, double y, Level kentta)
56        {
57            IShape suorakulmio = Shapes.CreateRectangle(20.0, 100.0);
58            PhysicsObject maila = PhysicsObject.CreateStaticObject(suorakulmio);
59            maila.X = x;
60            maila.Y = y;
61            maila.Restitution = 1.0;
62            maila.Color = Color.Red;
63            kentta.Objects.Add(maila);
64            return maila;
65        }
66
67        void AloitaPeli()
68        {
69            Vector2D impulssi = new Vector2D(2000.0, 0.0);
70            pallo.Hit(impulssi);
71        }
72
73        void AsetaOhjaimet()
74        {
75            Controls.Listen(Keys.A, ButtonPosition.Down, LiikutaMailaa, "Pelaaja 1: Liikuta mailaa ylös", maila1);
76            Controls.Listen(Keys.Z, ButtonPosition.Down, LiikutaMailaa, "Pelaaja 1: Liikuta mailaa alas", maila1);
77
78            Controls.Listen(Keys.Up, ButtonPosition.Down, LiikutaMailaa, "Pelaaja 2: Liikuta mailaa ylös", maila2);
79            Controls.Listen(Keys.Down, ButtonPosition.Down, LiikutaMailaa, "Pelaaja 2: Liikuta mailaa alas", maila2);
80        }
81
82        bool LiikutaMailaa(ControlEvent e)
83        {
84            PhysicsObject maila = e.Parameter0.ToPhysicsObject();
85            double nopeus = e.Parameter1.ToDouble();
86            double sekuntejaKulunut = e.Time.ElapsedGameTime.TotalSeconds;
87            double uusiY = maila.Y + nopeus * sekuntejaKulunut;
88
89            maila.Y += nopeus * sekuntejaKulunut;
90
91            if ((Level.Bottom < uusiY) && (uusiY < Level.Top))
92            {
93                maila.Y = uusiY;
94            }
95
96            return false;
97        }
98    }
99}
Note: See TracBrowser for help on using the repository browser.