source: 2017/27/PyryS/Pong/Pong/Pong/Pong.cs @ 8854

Revision 8854, 5.5 KB checked in by npo17_32, 2 years ago (diff)

Finished Pong, Started GravityAssist? Game.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Pong : PhysicsGame
10{
11    PhysicsObject Ball;
12    PhysicsObject LPaddle;
13    PhysicsObject RPaddle;
14    PhysicsObject RightBorder;
15    PhysicsObject LeftBorder;
16    PhysicsObject BottomBorder;
17    PhysicsObject TopBorder;
18    Vector SpeedUp = new Vector(0, 400);
19    Vector SpeedDown = new Vector(0, -400);
20    IntMeter P1Score;
21    IntMeter P2Score;
22    public override void Begin()
23    {
24
25        // Call object/level creation function
26        Createlevel();
27
28        // Call starting function
29        StartGame();
30
31        // Call control function
32        SetControls();
33
34        // Call score function
35        AddCounters();
36
37    }
38    //Function for creating level and ball
39    void Createlevel()
40    {
41        // Define PhysicsObject Ball properties
42        Ball = new PhysicsObject(40, 40);
43        Ball.Color = Color.LimeGreen;
44        Ball.Shape = Shape.Circle;
45        Ball.Restitution = 1.0;
46     
47        // Set Ball in the center of the view
48        Ball.X = 0.0;
49        Ball.Y = 0.0;
50
51        // Add Ball to game view
52        Add(Ball);
53
54        // Set up collision handling for Ball
55        AddCollisionHandler(Ball, BallCollisionHandler);
56
57        // Create level borders
58        LeftBorder = Level.CreateLeftBorder();
59        LeftBorder.Restitution = 1.0;
60        LeftBorder.IsVisible = true;
61
62        RightBorder = Level.CreateRightBorder();
63        RightBorder.Restitution = 1.0;
64        RightBorder.IsVisible = true;
65
66        BottomBorder = Level.CreateBottomBorder();
67        BottomBorder.Restitution = 1.0;
68        BottomBorder.IsVisible = true;
69
70        TopBorder = Level.CreateTopBorder();
71        TopBorder.Restitution = 1.0;
72        TopBorder.IsVisible = true;
73
74        // Set Background color to black
75        Level.Background.Color = Color.Black;
76
77        // Zoom camera to just show the level
78        Camera.ZoomToAllObjects();
79
80        // Create paddles
81        RPaddle = CreatePaddles(Level.Right - 20.0, 0.0);
82        LPaddle = CreatePaddles(Level.Left + 20.0, 0.0);
83    }
84    // Function for starting game
85    void StartGame()
86    {
87        // Define initial movement vector
88        Vector Initial = new Vector(350.0, 0.0);
89
90        // Hit Ball to motion
91        Ball.Hit(Initial);
92    }
93    // Function for paddle creation
94    PhysicsObject CreatePaddles(double x, double y)
95    {
96        // Create left Paddle
97        PhysicsObject Paddle = PhysicsObject.CreateStaticObject(15.0, 100.0);
98
99        // Define left paddle properties
100        Paddle.Shape = Shape.Rectangle;
101        Paddle.Color = Color.LimeGreen;
102        Paddle.X = x;
103        Paddle.Y = y;
104        Paddle.Restitution = 1.0;
105        Add(Paddle);
106        return Paddle;
107    }
108    // Function for setting controls
109    void SetControls()
110    {
111        // Define exit key
112        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Quit Game");
113
114        // Define left paddle up key
115        Keyboard.Listen(Key.W, ButtonState.Pressed, PaddleMotion, "P1: Paddle Up", LPaddle, SpeedUp);
116        Keyboard.Listen(Key.W, ButtonState.Released, PaddleMotion, null, LPaddle, Vector.Zero);
117
118
119        // Define left paddle down key
120        Keyboard.Listen(Key.S, ButtonState.Pressed, PaddleMotion, "P1: Paddle Down", LPaddle, SpeedDown);
121        Keyboard.Listen(Key.S, ButtonState.Released, PaddleMotion, null, LPaddle, Vector.Zero);
122     
123        // Define right paddle up key
124        Keyboard.Listen(Key.I, ButtonState.Pressed, PaddleMotion, "P2: Paddle Up", RPaddle, SpeedUp);
125        Keyboard.Listen(Key.I, ButtonState.Released, PaddleMotion, null, RPaddle, Vector.Zero);
126
127
128        // Define right paddle down key
129        Keyboard.Listen(Key.K, ButtonState.Pressed, PaddleMotion, "P2: Paddle Down", RPaddle, SpeedDown);
130        Keyboard.Listen(Key.K, ButtonState.Released, PaddleMotion, null, RPaddle, Vector.Zero);
131    }
132    // Paddle Movement Functions
133    void PaddleMotion(PhysicsObject Paddle, Vector Speed) 
134    {
135        // Prevent paddle from exiting level
136        if ((Speed.Y > 0) && Paddle.Top > Level.Top)
137        {
138            Paddle.Velocity = Vector.Zero;
139        }
140        if ((Speed.Y > 0) && Paddle.Bottom < Level.Bottom)
141        {
142            Paddle.Velocity = Vector.Zero;
143        }
144        Paddle.Velocity = Speed;
145    }
146    // Function for score counters
147    IntMeter ScoreDisplay(double x, double y)
148    {
149        // Define score counter
150        IntMeter Counter = new IntMeter(0);
151        Counter.MaxValue = 15;
152
153        // Define score counter text
154        Label ScoreDisplay = new Label();
155        ScoreDisplay.BindTo(Counter);
156        ScoreDisplay.X = x;
157        ScoreDisplay.Y = y;
158        ScoreDisplay.TextColor = Color.White;
159        ScoreDisplay.BorderColor = Level.Background.Color;
160        ScoreDisplay.Color = Level.Background.Color;
161        Add(ScoreDisplay);
162
163        return Counter;
164    }
165    void AddCounters()
166    {
167        P1Score = ScoreDisplay(Screen.Left + 480.0, Screen.Top - 200.0);
168        P2Score = ScoreDisplay(Screen.Right - 480.0, Screen.Top - 200.0);
169    }
170    // Ball collision handling
171    void BallCollisionHandler(PhysicsObject Ball, PhysicsObject Subject)
172    {
173        if (Subject == RightBorder)
174        {
175            P1Score.Value += 1;
176        }
177        else if (Subject == LeftBorder)
178        {
179            P2Score.Value += 1;
180        }
181    }
182}
Note: See TracBrowser for help on using the repository browser.