pong game added to the main sketch

Dependencies:   RTC-DS1307 SPI_TFT_ILI9341 TFT_fonts mbed tsi_sensor

Fork of MainSketch by IoT Ox

Files at this revision

API Documentation at this revision

Comitter:
tunagonen
Date:
Thu May 25 09:13:00 2017 +0000
Parent:
11:1da15361a35b
Commit message:
ping pong game without the reset function;

Changed in this revision

2manpong.cpp Show annotated file Show diff for this revision Revisions of this file
2manpong.h Show annotated file Show diff for this revision Revisions of this file
singlepong.cpp Show annotated file Show diff for this revision Revisions of this file
singlepong.h Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/2manpong.cpp	Thu May 25 09:13:00 2017 +0000
@@ -0,0 +1,30 @@
+
+#include "libs.h"
+#include "2manpong.h"
+
+int main() {
+
+    AnalogIn Player1(); //reading analog inputs from the potentiometers
+    AnalogIn Player2(); 
+    int SCREENH = 239 ; //screen height
+    int SCREENW = 319 ; //screen width
+    int PADDLEW  = 10 ; // paddle width
+    int PADDLEH  = 40 ; // paddle height
+    int PADDLEG =  10 ; // paddle gap from the touchscreen
+    int ABALL = 10 ;   // ball size
+    int PADDLE_A = 0 ; // location paddle A
+    int PADDLE_B = 0 ; // location paddle B 
+    int PADDLE_AF = 0 ; // final location paddle A 
+    int PADDLE_BF = 0 ; // final location paddle B  
+    float XBALL = 0 ; // ball's x location
+    float YBALL = 0 ; // ball's y location
+    
+    float VXball = 3 ; // velocity in x-direction 
+    float VYball = 2 ; // velocity in y-direction
+    
+    while(1) {
+        draw();
+        move(); 
+    } 
+}   
+         
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/2manpong.h	Thu May 25 09:13:00 2017 +0000
@@ -0,0 +1,89 @@
+#include "libs.h"
+
+float map(float in, float inMin, float inMax, float outMin, float outMax) {
+      // check it's within the range
+        if (inMin<inMax) { 
+            if (in <= inMin) 
+              return outMin;
+            if (in >= inMax)
+              return outMax;
+            } 
+        else {  // cope with input range being backwards.
+            if (in >= inMin) 
+              return outMin;
+            if (in <= inMax)
+              return outMax;
+        }
+      // calculate how far into the range we are
+      float scale = (in-inMin)/(inMax-inMin);
+      // calculate the output.
+      return outMin + scale*(outMax-outMin);
+}
+
+
+void move() {
+    
+    int player1 = Player1 ; 
+    int player2 = Player2 ;
+    PADDLE_A = map(player1 , 0 , 1023 , 0 , SCREENH - PADDLEH) ;
+    PADDLE_B = map(player2 , 0 , 1023 , 0 ,SCREENH - PADDLEH) ;
+    int VPADDLE_A = PADDLE_AF - PADDLE_A ; // speed of paddle A
+    int VPADDLE_B = PADDLE_BF - PADDLE_B ; // speed of paddle B 
+    
+    XBALL += VXBALL ; //x location of the ball 
+    YBALL += VYBALL ; //y location of the ball 
+    
+    //bounce from the top and bottom
+    
+    if (YBALL >= SCREENH - ABALL || YBALL <=0) 
+    {
+    VYBALL *= -1 ; 
+    }
+    
+    //bounce from Paddle A
+    if (XBALL >= PADDLEG && XBALL <= PADDLEG + ABALL && VXBALL < 0) 
+    {
+        if (YBALL > PADDLE_A - ABALL && YBALL < PADDLE_A + PADDLEH)
+        {
+        
+        VXBALL *= -1 ;
+        }
+    }
+    
+    // bounce from Paddle B   
+    if ( XBALL >= SCREENW - PADDLEW - PADDLEG - ABALL && XBALL <= SCREENW - PADDLEG - ABALL && VXBALL >0 )
+    { 
+        if (YBALL > PADDLE_B - ABALL && YBALL < PADDLE_B + PADDLEH) 
+        {
+            VXBALL *= -1 ;
+            }
+            }
+            
+            
+   // if someone scores, reset
+   
+   if (XBALL >= SCREENW - ABALL || XBALL <= 0 ) {
+        
+        // reset function //
+        
+        }
+       
+       }
+       
+ void draw() 
+{  
+   
+
+   fillcircle(XBALL , YBALL , ABALL , 1 ) ;  //draw ball 
+   
+   fillrect( PADDLEG , PADDLE_A , PADDLEW , PADDLEH , 1) ; //draw paddle A
+   
+   fillrect( SCREENW - PADDLEW - PADDLEG , PADDLE_B , PADDLEW , PADDLEH , 1) ; // draw paddle B 
+   
+   }
+
+
+
+        
+         
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/singlepong.cpp	Thu May 25 09:13:00 2017 +0000
@@ -0,0 +1,28 @@
+
+#include "libs.h"
+#include "singlepong.h"
+
+int main() {
+
+    float location_player = 120 - ( 120 * tsi_d() ); //reading analog inputs from the potentiometers
+    int SCREENH = 239 ; //screen height
+    int SCREENW = 319 ; //screen width
+    int PADDLEW  = 10 ; // paddle width
+    int PADDLEH  = 40 ; // paddle height
+    int PADDLEG =  10 ; // paddle gap from the touchscreen
+    int ABALL = 10 ;   // ball size
+    int PADDLE_A = 0 ; // location paddle A
+    int PADDLE_AF = 0 ; // final location paddle A   
+    float XBALL = 0 ; // ball's x location
+    float YBALL = 0 ; // ball's y location
+    
+    float VXball = 3 ; // velocity in x-direction 
+    float VYball = 2 ; // velocity in y-direction
+    
+    while(1) {
+        draw();
+        move();
+        wait(0.01) ;  
+    } 
+}   
+         
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/singlepong.h	Thu May 25 09:13:00 2017 +0000
@@ -0,0 +1,81 @@
+#include "libs.h"
+
+float map(float in, float inMin, float inMax, float outMin, float outMax) {
+      // check it's within the range
+        if (inMin<inMax) { 
+            if (in <= inMin) 
+              return outMin;
+            if (in >= inMax)
+              return outMax;
+            } 
+        else {  // cope with input range being backwards.
+            if (in >= inMin) 
+              return outMin;
+            if (in <= inMax)
+              return outMax;
+        }
+      // calculate how far into the range we are
+      float scale = (in-inMin)/(inMax-inMin);
+      // calculate the output.
+      return outMin + scale*(outMax-outMin);
+}
+
+
+void move() {
+    
+    int player = location_player ; ;
+    PADDLE_A = map(player , 0 , 1023 , 0 , SCREENH - PADDLEH) ;
+    int VPADDLE_A = PADDLE_AF - PADDLE_A ; // speed of paddle A
+
+    
+    XBALL += VXBALL ; //x location of the ball 
+    YBALL += VYBALL ; //y location of the ball 
+    
+    //bounce from the top and bottom
+    
+    if (YBALL >= SCREENH - ABALL || YBALL <=0) 
+    {
+    VYBALL *= -1 ; 
+    }
+    
+    //bounce from Paddle A
+    if (XBALL >= PADDLEG && XBALL <= PADDLEG + ABALL && VXBALL < 0) 
+    {
+        if (YBALL > PADDLE_A - ABALL && YBALL < PADDLE_A + PADDLEH)
+        {
+        VXBALL *= -1 ;
+        }
+    }
+    
+    //bounce from the opposite wall   
+    
+    if ( XBALL >= SCREENW )
+    { 
+      VXBALL *= -1 ;
+                }
+            
+            
+   // if the the wall scores
+   
+   if (XBALL <= 0 ) {
+        
+        // reset function //
+        
+        }           
+       
+       }
+       
+ void draw() 
+{  
+   
+
+   fillcircle(XBALL , YBALL , ABALL , 1 ) ;  //draw ball 
+   
+   fillrect( PADDLEG , PADDLE_A , PADDLEW , PADDLEH , 1) ; //draw paddle A
+   
+   
+   }
+
+
+
+        
\ No newline at end of file