source: lasse_l/Pong-1/Peli.cs @ 247

Revision 247, 3.6 KB checked in by laallinn, 11 years ago (diff)

Sain pong-pelin vaiheeseen 6 ja aloitin tiistain tehtävät.

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 Pong_1
20{
21    public class Peli : PhysicsGame
22    {
23        PhysicsObject pallo;
24        PhysicsObject maila1;
25        PhysicsObject maila2;
26
27        Vector2D nopeusYlos = new Vector2D( 0, 500 );
28        Vector2D nopeusAlas = new Vector2D( 0, -500 );
29
30        protected override void LoadContent()
31        {
32            Level = LuoKentta();
33            AsetaOhjaimet();
34            AloitaPeli();
35        }
36   
37       
38
39        Level LuoKentta()
40        {
41            Level kentta = new Level(this);
42            kentta.BackgroundColor = Color.Purple;
43
44            IShape ympyra = Shapes.CreateCircle(20.0);
45            pallo = new PhysicsObject(10.0, ympyra);
46            pallo.X = -200.0;
47            pallo.Y = 0.0;
48            pallo.Restitution = 1.0;
49            kentta.Objects.Add(pallo);
50
51            maila1 = LuoMaila( kentta.Left + 20.0, 0.0, kentta );
52            maila2 = LuoMaila( kentta.Right - 20.0, 0.0, kentta );
53
54            kentta.CreateBorder( 1.0, false);
55
56            return kentta;
57        }
58        void AloitaPeli()
59        {
60            Vector2D impulssi = new Vector2D(10000.0, 0.0);
61            pallo.Hit(impulssi);
62        }
63        PhysicsObject LuoMaila(double x, double y, Level kentta)
64        {
65            IShape suorakulmio = Shapes.CreateRectangle(20.0, 100.0);
66            PhysicsObject maila = PhysicsObject.CreateStaticObject(suorakulmio);
67            maila.X = x;
68            maila.Y = y;
69            maila.Restitution = 1.0;
70            kentta.Objects.Add(maila);
71            return maila;
72        }
73        void AsetaOhjaimet()
74        {
75            Controls.Listen( Keys.A, ButtonPosition.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos);
76            Controls.Listen(Keys.A, ButtonPosition.Released, AsetaNopeus, null, maila1, Vector2D.Zero );
77            Controls.Listen(Keys.Z, ButtonPosition.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas);
78            Controls.Listen(Keys.Z, ButtonPosition.Released, AsetaNopeus, null, maila1, Vector2D.Zero);
79
80            Controls.Listen(Keys.Up, ButtonPosition.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos);
81            Controls.Listen(Keys.Up, ButtonPosition.Released, AsetaNopeus, null, maila2, Vector2D.Zero);
82            Controls.Listen(Keys.Down, ButtonPosition.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas);
83            Controls.Listen(Keys.Down, ButtonPosition.Released, AsetaNopeus, null, maila2, Vector2D.Zero);
84        }
85        bool AsetaNopeus(ControlEvent e)
86        {
87            PhysicsObject maila = e.Parameter0.ToPhysicsObject();
88            Vector2D nopeus = e.Parameter1.ToVector2D();
89
90            if ( ( nopeus.Y < 0) && ( maila.Y < Level.Bottom ) )
91            {
92                maila.Velocity = Vector2D.Zero;
93                return false;
94            }
95            if ((nopeus.Y > 0) && (maila.Y > Level.Top))
96            {
97                maila.Velocity = Vector2D.Zero;
98                return false;
99            }
100
101            maila.Velocity = nopeus;
102
103            return false;
104        }
105    }
106}
Note: See TracBrowser for help on using the repository browser.