Pong Game Tea Term

Dependencies:   HCSR04 mbed

Fork of contest_IOT2 by Contest IOT GSE5

main.cpp

Committer:
Alex_Hochart
Date:
2015-10-14
Revision:
3:6bcdaa2636ec
Parent:
2:35466dfc81fe
Child:
4:ed21ec4a79ad

File content as of revision 3:6bcdaa2636ec:

#include "mbed.h"
#include "HCSR04.h"

#define ECHO_1  PA_8
#define ECHO_2  PB_4
#define TRIG_1  PB_10
#define TRIG_2  PB_5
#define PUSH    USER_BUTTON //PC_13
#define LED_1   LED1

//------------------------------------
// Hyperterminal configuration
// 9600 bauds, 8-bit data, no parity
//------------------------------------


Serial pc(USBTX, USBRX);    //UART
DigitalOut led(LED_1);      //Led d'état
InterruptIn button(PUSH);   //Bouton d'interruption

HCSR04 sensor1(TRIG_1, ECHO_1);
HCSR04 sensor2(TRIG_2, ECHO_2); 

void pong_init(){

    pc.printf("\033[2J");       //Efface la console
    pc.printf("\033[?25l");     //Cache le curseur
    
    for(int i=0; i <= 128 ; i++){
        pc.printf("\033[0;%dH",i);     //Place le curseur à 0:0
        pc.printf("X");     //Place le curseur à 0:0
        pc.printf("\033[32;%dH",i);     //Place le curseur à 0:0
        pc.printf("X");     //Place le curseur à 0:0
    }
    
    for(int i=0; i <= 32 ; i++){
        pc.printf("\033[%d;0H",i);     //Place le curseur à 0:0
        pc.printf("X");     //Place le curseur à 0:0
        pc.printf("\033[%d;128H",i);     //Place le curseur à 0:0
        pc.printf("X");     //Place le curseur à 0:0
    }
    
}

int main() {
    int distance1;
    int distance2;
    int pos1prec[30];
    int pos2prec[30];
    int pos1[30];
    int pos2[30];

    pc.baud(115200);
    pong_init();
    wait(1);
    //Initialisation de l'interruption : en appuyant sur le bouton bleu de la carte, le programme change d'état
    
    
    //Boucle d'exécution du programme
    while(1) { 
            led=1;
            for(int i=0; i<=29; i++){
                pos1prec[i]= pos1[i];
                pos2prec[i]= pos2[i];
                pos1[i]= 0;
                pos2[i]= 0;
            }
            distance1 = sensor1.distance(1);               //Mesure de la distance
            distance2 = sensor2.distance(1);               //Mesure de la distance
            
            if(distance1 <= 10){
                for(int i=0;i<=5;i++){
                    pos1[i] = 1;
                }
            }
            else if(distance1 >= 34){
                for(int i=24;i<=29;i++){
                    pos1[i] = 1;
                }
            }
            else{
                for(int i=(distance1-10);i<=(distance1-4);i++){
                    pos1[i] = 1;
                }
            }
            
            
            if(distance2 <= 10){
                for(int i=0;i<=5;i++){
                    pos2[i] = 1;
                }
            }
            else if(distance2 >= 34){
                for(int i=24;i<=29;i++){
                    pos2[i] = 1;
                }
            }
            else{
                for(int i=(distance2-10);i<=(distance2-4);i++){
                    pos2[i] = 1;
                }
            }  
            
            for(int i=0;i<=29;i++){
                if( pos1[i] != pos1prec[i] ){
                    if(pos1[i] == 1){
                        pc.printf("\033[%d;3H",i+2);     //Place le curseur à 0:0
                        pc.printf("X");     //Place le curseur à 0:0  
                    }
                    else{
                        pc.printf("\033[%d;3H",i+2);     //Place le curseur à 0:0
                        pc.printf(" ");     //Place le curseur à 0:0  
                    }
                }
                if( pos2[i] != pos2prec[i] ){
                    if(pos2[i] == 1){
                        pc.printf("\033[%d;126H",i+2);     //Place le curseur à 0:0
                        pc.printf("X");     //Place le curseur à 0:0  
                    }
                    else{
                        pc.printf("\033[%d;126H",i+2);     //Place le curseur à 0:0
                        pc.printf(" ");     //Place le curseur à 0:0  
                    }
                }   
            }
            wait(0.1);
    }
}