//Posições X e Y do bastão e das bolas
int bastaoX = 250;
int bolaX = 300;
int bolaY = 550;
int dX = 5;
int dY = 5;
//Uma matriz de booleanos para guardar se a matriz de blocos está ou não "viva"
boolean[][] alive = new boolean[10][5];
void setup() {
size(600, 600);
noStroke();
colorMode(HSB, 2);
reset();
}
void draw() {
fill(0, 0, 0, 0.5);
rect(0, 0, width, height);
fill(sin(radians(frameCount))+1, 2, 2);
ellipse(bolaX, bolaY, 20, 20);
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 5; j++) {
block(75+50*i, 100+20*j, i, j);
}
}
fill(0, 0, 2);
rect(bastaoX, 580, 100, 20);
bolaX = bolaX += dX;
bolaY = bolaY += dY;
ballLimit();
teclas();
}
void teclas() {
if (keyPressed==true) {
if (keyCode==RIGHT) {
bastaoX += 5;
}
if (keyCode==LEFT) {
bastaoX -= 5;
}
if (key=='r'||key=='R'){
reset();
loop();
}
}
if (bastaoX >= 500) {
bastaoX = 500;
}
if (bastaoX <= 0) {
bastaoX = 0;
}
}
void ballLimit(){
if ((bolaX >= 570)||(bolaX <= 10)) {
dX *= -1;
}
if (bolaY <= 10) {
dY *= -1;
}
if ((bolaY >= 570)&&((bolaX >= bastaoX)&&(bolaX <= bastaoX + 100)&&(bolaY<600))) {
dY = -1*abs(dY);
dX += (bolaX - bastaoX + 50)/25;
}
if (bolaY > 600){
fill(sin(radians(frameCount))+1, 2, 2);
text("Game over", bastaoX + 20, 595);
}
}
void block(int x, int y, int i, int j) {
if (alive[i][j]) {
stroke(0, 0, 2);
fill(cos(radians(frameCount)+(i+1)*QUARTER_PI+(j+1)*QUARTER_PI)+1, 2, 2);
rect(x-25, y-10, 50, 20);
if (((bolaX >= x-35)&&(bolaX <= x+35))&&((bolaY >= y-10)&&(bolaY <= y+10))) {
alive[i][j] = false;
dX *= -1;
dY *= -1;
}
noStroke();
}
}
void reset(){
bastaoX = 250;
bolaX = 300;
bolaY = 550;
dX = 5;
dY = 5;
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 5; j++) {
alive[i][j] = true;
}
}
}
Nenhum comentário:
Postar um comentário
Pode falar, eu não mordo... Pelo menos não através da internet