can't debug error "unexpected token: float"
in
Programming Questions
•
1 year ago
i'm having trouble to control my pong's paddle with a potentiometer, for those of you non-electronic people, you can still help me as my problem lies in processing.
my goal is to succesfully read the serial port and use it's information to control the paddle's position.
this is the code, english speakers please ignore my spanish comments:
i realised that if i coment lines 201 to 205 the error dissapears, but then i'm not able to read the serial port
my goal is to succesfully read the serial port and use it's information to control the paddle's position.
this is the code, english speakers please ignore my spanish comments:
- import processing.serial.*;
- Serial port;
- Ball myBall; //declaro objeto Ball
- Paddle myPaddle1; //declaro objeto Paddle1
- Paddle myPaddle2;
- int score1;
- int score2;
- float yposPot;
- float yposBall;
- float yposPaddle;
- float yposPaddleR;
- float yposPaddleL;
- void setup()
- {
- size(1000, 500); //declaro tamaño
- myBall = new Ball(500, 250, 20, 1); //creo Ball
- myPaddle1 = new Paddle(true, false, false, false, true, 0); //creo Paddle1
- myPaddle2 = new Paddle(false, true, false, true, false, 0); //creo paddle2
- score1 = 0;
- score2 = 0;
- serial();
- }
- void draw()
- {
- cancha(); //dibuja todo lo relacionado a la cancha
- myBall.calculate(); // calcula la posicion de la pelota y sus rebotes
- myBall.display(); //dibuja la pelota
- myPaddle1.calculate(); //calcula la posicion de la paleta1
- myPaddle1.display(); //dibuja la paleta1
- myPaddle2.calculate(); //calcula la posicion de la paleta2
- myPaddle2.display(); //dibuja la paleta2
- }
- void cancha()
- {
- background(0); //fondo negro
- PFont font = loadFont("Serif-70.vlw"); //carga fuente
- textFont(font, 70); //setea el tamaño de la fuente
- fill(255, 255, 255, 180); //dibuja blanco transparente
- text(score1, width/2-100, 100); //dibuja el puntaje del jugador 1
- text(score2, width/2+70, 100); //dibuja el puntaje del jugador 2
- rectMode(CENTER);
- rect(width/2, 50, 10, 75);
- rect(width/2, 150, 10, 75); //estos rectangulos dibujan la linea punteada del medio
- rect(width/2, 250, 10, 75);
- rect(width/2, 350, 10, 75);
- rect(width/2, 450, 10, 75);
- }
- class Ball
- {
- float xpos; //declara la posicion a lo ancho
- float ypos; //declara la posicion a lo alto
- float xspeed; //declara la variacion de la posicion a lo ancho
- float yspeed; //declara la variacion de la posicion a lo alto
- Ball(float tempXpos, float tempYpos, float tempXspeed, float tempYspeed) //constructor
- {
- xpos = tempXpos;
- ypos = tempYpos;
- xspeed = tempXspeed;
- yspeed = tempYspeed;
- }
- void calculate() //hace todos los calculos referentes a la posicion de la pelota
- { xpos = xpos + xspeed; //refresca la posicion a lo ancho de acerdo a la velocidad
- ypos = ypos + yspeed; //refresca la posicion a lo alto de acuerdo a la velocidad
- if(xpos<500)yposPaddle=yposPaddleL;
- if(xpos>500)yposPaddle=yposPaddleR;
- if(xpos>=925) //que pasa cuando la pelota llega a la derecha
- {if(ypos <= yposPaddle + 50 && ypos >= yposPaddle - 50) //si la pelota choca contra la paleta
- {
- if(ypos<= yposPaddle + 50) //si pega en la parte baja
- {yspeed=map(ypos, yposPaddle, yposPaddle + 50, 1, 15); // y rebota hacia abajo
- xspeed=-20; //velocidad de x al rebotar
- }
- else if(ypos >= yposPaddle -50) //si pega en la parte alta
- {
- xspeed=-20; //velocidad de x al rebotar
- yspeed=map(ypos, yposPaddle, yposPaddle - 50, -1, -15); //y rebota hacia arriba
- }
- }
- if((ypos> yposPaddle + 50 && xpos>=988) || (ypos < yposPaddle -50 && xpos>=988)) //si la paleta no alcanza a la pelota
- {score1(); //punto
- }
- }
- if(xpos<=75) //que pasa cuando la pelota llega a la izquierda
- {if(ypos <= yposPaddle + 50 && ypos >= yposPaddle - 50) //si la pelota choca contra la paleta
- {
- if(ypos<= yposPaddle + 50) //si pega en la parte baja
- {yspeed=map(ypos, yposPaddle, yposPaddle + 50, 1, 15); // y rebota hacia abajo
- xspeed=20; //velocidad de x al rebotar
- }
- else if(ypos >= yposPaddle -50) //si pega en la parte alta
- {
- xspeed=20; //velocidad de x al rebotar
- yspeed=map(ypos, yposPaddle, yposPaddle - 50, -1, -15); //y rebota hacia arriba
- }
- }
- if((ypos> yposPaddle + 50 && xpos<=12) || (ypos < yposPaddle -50 && xpos<=12)) //si la paleta no alcanza a la pelota
- {score2(); //punto
- }
- }
- if(ypos>=475)yspeed=-yspeed; // rebotes contra el piso
- if(ypos<=25)yspeed=-yspeed; //rebotes contra el techo
- yposBall = ypos;
- }
- void score1() //se activa cuando hay punto
- {
- score1 ++; //suma un pùnto
- xpos=750; //pone la pelota en el medio del eje x
- ypos=250; //pone la pelota en el medio del eje y
- delay(100);
- xspeed=-15; //asigna nueva velocidad en x
- yspeed=15-random(30); //asigna nueva velocidad en y
- }
- void score2() //se activa cuando hay punto
- {
- score2 ++; //suma un pùnto
- xpos=250; //pone la pelota en el medio del eje x
- ypos=250; //pone la pelota en el medio del eje y
- delay(100);
- xspeed=15; //asigna nueva velocidad en x
- yspeed=15-random(30); //asigna nueva velocidad en y
- }
- void display()
- {
- noStroke(); //desactiva el contorno
- fill(255); //dibuja en blanco
- ellipse(xpos, ypos, 50, 50); //dibuja un elipse de tamaño 50x50 cuya posicion esta dada por xpos e ypos
- }
- }
- class Paddle
- {
- boolean side; //define si la paleta va a estar a la derecha o la izquierda
- boolean manual;
- boolean mouse;
- boolean potentiometer;
- boolean ai;
- float ypos;
- Paddle (boolean tempSide, boolean tempManual,boolean tempMouse, boolean tempPotentiometer, boolean tempAi, float tempYpos) //constructor
- {
- side = tempSide;
- manual = tempManual;
- mouse = tempMouse;
- potentiometer = tempPotentiometer;
- ai = tempAi;
- ypos = tempYpos;
- }
- void calculate()
- {if(manual==true)//si se activa el modo manual
- {
- if(mouse==true)
- {
- ypos = constrain(mouseY, 50, 450); //evita que la paleta se dibuje a medias al llegar a un costado
- if(side==false)yposPaddleL = ypos;
- else if(side==true)yposPaddleR = ypos;
- }
- if(potentiometer==true)
- {
- ypos = yposPot;
- if(side==false)yposPaddleL = ypos;
- else if(side==true)yposPaddleR = ypos;
- }
- }
- if(ai==true) //si se activa el BOT
- {ypos = constrain (ypos +(yposBall-ypos)*0.01, 50, 450); //sigue a la pelota
- if(side==false)yposPaddleL = ypos;
- else if(side==true)yposPaddleR = ypos;
- }
- }
- void display() //funcion encargada de dibujar
- {noStroke(); //desactiva los contornos
- fill(255); //dibuja en blanco
- rectMode(CENTER); //setea la manera de dibujar los rectangulos
- if(side==false) rect(25, ypos, 50, 100); //dibuja la paleta izquierda
- else rect(975, ypos, 50, 100); //dibuja la paleta derecha
- }
- }
- void serial ()
- {
- port = new Serial(this, "/dev/tty.usbserial-A700fjm3", 9600);
- port.bufferUntil('\n');
- }
- void serialEvent (Serial port)
- {
- float ypos = (port.readStringUntil('\n');
- yposPot = map(ypos, 0, 1023, 50, 450);
- }
i realised that if i coment lines 201 to 205 the error dissapears, but then i'm not able to read the serial port
1