Last active
May 25, 2016 15:35
-
-
Save edmorais/b22d7a07a6bfa922e3ebcd0436344b2f to your computer and use it in GitHub Desktop.
Pequeno jogo de superação de obstáculos. A tecla de espaço faz saltar.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*_ ___ ___ ___ __ _ __ | |
| | / __|_ _|_ ) \/ |/ / | |
| |__\__ \| | / / () | / _ \ | |
|____|___/___/___\__/|_\___/ | |
Aula de 23/05/2016: | |
Pequeno jogo de superação de obstáculos. | |
Por Eduardo Morais / FBAUP - www.eduardomorais.pt/fbaup/ | |
*/ | |
int base = 500; // coordenadas da linha de base | |
float y = 500; // coordenada y do jogador | |
float vel = 0; // velocidade y do jogador | |
float velObstaculos = 2; // velocidade x dos obstaculos (pixels/frame) | |
int acel = 20; // aceleração inicial do salto | |
int[] obstaculos; // array de posições x dos obstáculos | |
/* | |
Função setup(): | |
Executada automaticamente no início do programa: | |
*/ | |
void setup() { | |
size(600,600); | |
background(0); | |
noStroke(); | |
fill(255); | |
ellipseMode(CENTER); | |
obstaculos = new int[2]; // temos dois obstáculos | |
for (int i = 0; i < obstaculos.length; i++) { | |
// percorremos o array dos obstáculos e atribuimos as posições iniciais | |
// fora do ecrã (daí entre 1*width e 2* width) | |
obstaculos[i] = round(random(width, width*2)); | |
} | |
} | |
/* | |
Função draw(): | |
Executada repetidamente a cada 'frame'/fotograma de animação. | |
*/ | |
void draw() { | |
// desenhamos o jogador | |
background(0); | |
fill(255); | |
ellipse(width/2, y, 30, 30); | |
// subtraimos a velocidade à coordenada y do jogador (assim ele sobe) | |
y = y - vel; | |
if (y < base) { | |
// se o valor de y estiver acima da base (em salto) | |
// reduzimos a velocidade gradualmente | |
vel -= 0.5; | |
} else { | |
// senão mantemos o jogador na base | |
y = base; | |
vel = 0; | |
} | |
// desenhamos os obstaculos | |
fill(#FF0000); | |
for (int i = 0; i < obstaculos.length; i++) { | |
// percorremos o array dos obstáculos e desenhamos cada um... | |
rect(obstaculos[i], 400, 30, 100); | |
// ... e actualizamos a posição, subtraindo o valor da velocidade dos obstaculos | |
obstaculos[i] -= velObstaculos; | |
// se os obstaculos tiverem ambos saído pela esquerda do ecrã, | |
// voltamos a sortear a sua posição: | |
if (obstaculos[i] < 0) { | |
obstaculos[i] = round(random(width, width*2)); | |
} | |
} | |
} | |
/* | |
Função keyPressed(): | |
Executada automaticamente quando largamos numa tecla! | |
Dá-nos a variável key com a tecla que carregámos. | |
*/ | |
void keyPressed() { | |
// se a tecla for espaço e o jogador estiver na posição base | |
// (isto é, não estiver a meio de um salto) | |
if (key == ' ' && y == base) { | |
// atribui à velocidade o valor da aceleração inicial | |
vel = acel; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment