Contest IOT GSE5
/
contest_IOT2
Pong Game Tea Term
Fork of contest_IOT by
Revision 4:ed21ec4a79ad, committed 2015-10-23
- Comitter:
- Alex_Hochart
- Date:
- Fri Oct 23 14:53:46 2015 +0000
- Parent:
- 3:6bcdaa2636ec
- Commit message:
- Pong1
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 6bcdaa2636ec -r ed21ec4a79ad main.cpp --- a/main.cpp Wed Oct 14 08:58:18 2015 +0000 +++ b/main.cpp Fri Oct 23 14:53:46 2015 +0000 @@ -1,5 +1,6 @@ #include "mbed.h" #include "HCSR04.h" +#include <math.h> #define ECHO_1 PA_8 #define ECHO_2 PB_4 @@ -10,7 +11,7 @@ //------------------------------------ // Hyperterminal configuration -// 9600 bauds, 8-bit data, no parity +// 115200 bauds, 8-bit data, no parity //------------------------------------ @@ -21,7 +22,7 @@ HCSR04 sensor1(TRIG_1, ECHO_1); HCSR04 sensor2(TRIG_2, ECHO_2); -void pong_init(){ +void pong_init_ttempro(){ pc.printf("\033[2J"); //Efface la console pc.printf("\033[?25l"); //Cache le curseur @@ -42,88 +43,122 @@ } +void print_cursor_ttempro(int *pos1, int *pos1prec, int *pos2, int *pos2prec){ + 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 + } + } + } +} + +void set_pos_vector(int *pos, int distance){ + + if(distance <= 10){ + for(int i=0;i<=5;i++){ pos[i] = 1; } + } + else if(distance >= 34){ + for(int i=24;i<=29;i++){ pos[i] = 1; } + } + else{ + for(int i=(distance-10);i<=(distance-4);i++){ pos[i] = 1; } + } +} + + int main() { - int distance1; - int distance2; int pos1prec[30]; int pos2prec[30]; int pos1[30]; int pos2[30]; + double posBallX; + double posBallY; + double angBall; + int distance1; + int distance2; pc.baud(115200); - pong_init(); + pong_init_ttempro(); + posBallX = 5; + posBallY = 19; + angBall = 25; 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; - } + 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); + distance2 = sensor2.distance(1); + set_pos_vector(pos1,distance1); + set_pos_vector(pos2,distance2); + print_cursor_ttempro(pos1,pos1prec,pos2,pos2prec); + pc.printf("\033[%d;%dH",(int)posBallY, (int)posBallX); //Place le curseur à 0:0 + pc.printf(" "); //Place le curseur à 0:0 + posBallX = posBallX + 2.0*cos((double)angBall*3.1415/180.0); + posBallY = posBallY - 2.0*sin((double)angBall*3.1415/180.0); + if(posBallX <= 4){ + if(pos1[(int)posBallY] == 1){ + posBallX = 8 - posBallX; + angBall = 180 - angBall; } - 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 { + pc.printf("\033[2J"); //Efface la console + pc.printf("\033[16;60H"); + pc.printf("P1 Loose"); + wait(5); } - else if(distance2 >= 34){ - for(int i=24;i<=29;i++){ - pos2[i] = 1; - } + } + else if(posBallX >= 125){ + if(pos2[(int)posBallY] == 1){ + posBallX = 250 - posBallX; + angBall = 180 - angBall; + } + else { + pc.printf("\033[2J"); //Efface la console + pc.printf("\033[16;60H"); + pc.printf("P2 Loose"); + wait(5); } - 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); + } + + + if(posBallY <= 2){ + posBallY = -posBallY+4; + angBall = -angBall; + } + else if(posBallY >= 31){ + posBallY = 62 - posBallY; + angBall = -angBall; + } + pc.printf("\033[%d;%dH",(int)posBallY, (int)posBallX); //Place le curseur à 0:0 + pc.printf("o"); //Place le curseur à 0:0 + + wait(0.1); } }