-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCaza la Manzana_Paso_12.pde
151 lines (134 loc) · 3.68 KB
/
Caza la Manzana_Paso_12.pde
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
/*
* Catch the Apple (Caza la Manzana)
*
* Creacion de un videojuego con Processing. El objetivo de este ejercicio es
* llevar la programacion un poco mas lejos y crear un pequeño videojuego donde
* nuestro aguerrido heroe, el famoso cientifico Newton, intenta no perder la
* oportunidad de que la manzana le caiga en la cabeza.
*
* Paso 12:
* - incluye imagenes para la manzana, el fondo y Newton
* - puedes hacer las imagenes tu mismo, buscarlas de internet,
* o usar las que te pasamos
* - es importante que las imagenes sean de tipo PNG si quieres
* que haya transparencia entre las imagenes y el fondo
* - ten en cuenta que, al cambiar las formas por imagenes, las proporciones
* tambien cambian, tendras que hacer encajar esos valores en tu diseño
*
* (c) 2013 D. Cuartielles, Arduino Verkstad, Suecia
*/
String[] imFiles = {"fondo.png", "manzana.png", "newton1.png", "newton2.png"};
PImage[] im = new PImage[4];
int nivel=0;
int nX = 0; // Coordenada X, Newton
int nY = 0; // Coordenada Y, Newton
float mY = 0; // Coordenada Y, manzanas
int mX = 15; // Coordenada X, manzanas
float mV = 0; // Velocidad Y, manzanas
float mA = 0.05; // Aceleracion Y, manzanas
int p = 0; // Puntos conseguidos
boolean pCount = true; // Almacena si se pueden contar puntos o no
long t = 0; // Almacena el tiempo
void setup() {
size(400, 400);
nY = height - 135;
t = millis();
// Carga las imagenes
for (int i = 0; i < 4; i = i + 1) {
im[i] = loadImage(imFiles[i]);
}
}
void draw() {
switch (nivel) {
case 0:
//pantalla de arranque
nivel0();//splashScreen
break;
case 1:
nivel1();
break;
case 2:
nivel2();
break;
}
}
void nivel0() {
background(200);
text("pantalla de arranque", 20, 100); // texto en pantalla de arranque
}
void nivel1() {
background(200);
image(im[0], 0, 0, width, height); // Imagen de fondo
// Movimiento de la manzana
mV = mV + mA;
mY = mY + mV;
if (mY > height) {
mY = 15;
mX = int(random(width - 20));
mV = 0;
pCount = true; // Al lanzar una nueva manzana, se podran volver a contar puntos
}
fill(255);
// Deteccion de la colision
if (mY + 50 > nY && mY < nY + 135) {
if (mX + 40 > nX && mX < nX + 128) {
fill(255, 0, 0);
// Si hay colision, incrementa un punto
if (pCount) p = p + 1;
if (p == 10) nivel = 2;
pCount = false; // En cualquier caso, cada vez que se entre
// aqui, ya no se pueden contar puntos
}
}
image(im[1], mX, mY); // Manzana
if (pCount) {
image(im[2], nX, nY); // Newton buscando manzanas
} else {
image(im[3], nX, nY); // Newton alcanzo una manzana
}
// Contabilizacion del tiempo
float timer = (millis() - t) / 1000;
// Fin del juego (GAME OVER)
if (timer >= 30) {
noLoop();
}
// Muestra el tiempo en la pantalla
fill(0);
textSize(20); // Incrementa el tamaño de la fuente de texto
text("Tiempo: " + (30 - timer), 10, 25);
// Muestra los puntos en pantalla
fill(0);
textSize(20);
text("Manzanazos: " + p, 3 * width / 5, 25);
}
void nivel2() {
background(200);
text("este es el nivel dos, come cebolla", 20, 100);
}
void keyPressed() {
switch (nivel) {
case 0:
if (key == ' ') nivel = 1;
break;
case 1:
// Incrementa las coordenadas en 3 unidades
if (keyCode == RIGHT) {
nX = nX + 3;
}
// Decrementa las coordenadas en 3 unidades
if (keyCode == LEFT) {
nX = nX - 3;
}
// Limita el valor de la coordenada X
if (nX < 0) {
nX = 0;
}
if (nX > width - 20) {
nX = width - 20;
}
break;
case 2:
if (key == ' ') nivel = 0;
break;
}
}