Vamos ahora a implementar un contador que muestre cuántas manzanas golpean a Newton.
1 int nX=0;//coordenada X de Newton
2 int nY=0;//coordenada Y de Newton
3 float mY=0; //cambiamos el tipo de variable a float
4 int mX=15;//coordenada X de la manzana
5 float mV=0; //la velocidad inicial de caída de la manzana será cero
6 float mA=0.05; //aceleración inicial de la manzana
7 int p=0; //puntos
8
9 void setup() {
10 size(400,400);
11 nY=height-25;
12 }
13
14 void draw(){
15 background(200);
16
17 //Movimiento de la manzana
18 mV=mV+mA; // velocidad de la manzana en función de la aceleración
19 mY=mY+mV;//posición de la manzana en función de la velocidad
20 if (mY>height){
21 mY=15;//si toca el suelo elévala otra vez
22 mX=int(random(10,width-10));
23 mV=0;// para que empiece a caer con velocidad cero
24 }
25
26 fill(255);
27
28 //Detección de colisión
29 if(mY+10>nY && mY-10<nY+20){//está el círculo a la misma altura que el rectángulo?
30 if(mX+10>nX && mX-10<nX+20){//está el círculo sobre el rectángulo?
31 fill(255,0,0);//cambia el color a rojo
32 p=p+1; //si hay colisión se incrementan los puntos
33 }
34 }
35
36 ellipse(mX,mY,20,20);
37 rect(nX, nY,20,20);
38
39 //Mostramos los puntos en pantalla
40 fill(0);
41 text("Puntos: "+p, 2.8*width/4,20); //texto a la derecha de la pantalla
42 }
43
44 void keyPressed(){
45 if(keyCode == RIGHT){
46 nX=nX+3;
47 }
48 if(keyCode == LEFT){
49 nX=nX-3;
50 }
51 //Limita el valor de la coordenada X
52 if(nX<0){
53 nX=0;
54 }
55 if(nX>width-20){//Por la derecha tenemos en cuenta el tamaño del cuadrado
56 nX=width-20;
57 }
58 }
Hemos declarado una nueva variable p que se incrementa en una unidad cada vez que entra en contacto con Newton. Además, hacemos que se muestre el contador de puntos en la esquina superior derecha: