Hi!
I require your help regarding a problem I’m encountering.
I need to make the ball in my game touch the rects, and I just can’t figure it out
Here is the code;
(Some of the comments are in danish, please don’t mind it haha)
//først variablerne for startskærmen
//Koordinaterne for knapperne
float x1 = 150;
float y1 = 250;
float w1 = 200;
float h1 = 50;
float x2 = 150;
float y2 = 350;
float w2 = 200;
float h2 = 50;
float x3 = 150;
float y3 = 550;
float w3 = 200;
float h3 = 50;
int counter = 0;
//så variablerne for selve spillet
Boolean spilletIGang = false;
//De forskellige farver bliver defineret, så de ikke skal kodes hver gang
//De forskellige farver er blå (colorB), rød, (colorR), gul (colorG), grøn (colorGR)
color colorB = color(0,0,255);
color colorR = color(255,0,0);
color colorG = color(255,204,0);
color colorGR = color(0,255,0);
int score=0;
int highScore=0;
//når man skriver int foran, skabes en heltals-variabel eller flere
int x, y, w, h, speedX, speedY; //egenskaber for bolden
int paddleXB, paddleYB, paddleW, paddleH, paddleS; //egenskaber for ketcherne
//når man skriver boolean foran, skabes sand/falsk variabler
boolean bouncerL, bouncerR;
//firkanter
int yPosBrick = 101;
int yPosBrick1 = 157;
void setup() {
//Stroke
size(500,700);
background(0);
fill(100);
rect(-1,-1,501,60);
textSize(40);
fill(255);
text(“BALL BOUNCER”,100,45);
//knapperne
stroke(0);
fill(100);
rect(150,250,200,50,20);
rect(150,350,200,50,20);
//knappernes tekst
textSize(30);
fill(255);
text(“PLAY”,210,285);
text(“TUTORIAL”,175,385);
//variabler initialiseres for spillet
//Ketchernes placering på canvas sættes og ketchernes størrelse sættes
paddleXB = 175; //x-koordinaten for ketcher
paddleYB = 600; //y-koordinaten for ketcher
paddleW = 150; //bredde på ketcherne
paddleH = 30;
paddleS = 12; //hastigheden på ketcherne
//x,y koordinaterne får bolden til at være i midten i starten af hver omgang.
x = width/2; //width er canvasets bredde til hver tid
y = height/2; //og height er tilsvarende højden
//w,h sætter bredde og højde på eclipsen, som er vores bold
w = 30;
h = 30;
//sætter hastigheden på bolden på hhv. x og y aksen
speedX = 3;
speedY = 3;
}
void draw(){
mousePressed();
if(spilletIGang){
spillet();
}
}
void mouseClicked(){
if(mouseX>x1 && mouseX<x1+w1 && mouseY>y1 && mouseY <y1+h1 && counter<1){
counter++;
//tror vi kan droppe denne her del
/*
background(0);
fill(100);
rect(-1,-1,501,60);
textSize(40);
fill(255);
text(“BALL BOUNCER”,100,45);*/
spilletIGang=true;
}
if(mouseX>x2 && mouseX<x2+w2 && mouseY>y2 && mouseY <y2+h2 && counter<2){
counter++;
//stroke for spillet
stroke(255);
fill(0);
rect(0,0,500,700);
rect(60,100,370,550);
fill(100);
rect(-1,-1,501,60);
textSize(40);
fill(255);
text(“BALL BOUNCER”,100,45);
fill(100);
//Nederste tekst
textSize(30);
fill(0,100,0);
text(“TUTORIAL”,167.5,150);
fill(255);
textSize(20);
fill(0,0,100);
text(“Velkommen til BALL BOUNCER!!!”, 80, 200);
fill(255);
textSize(15);
text("- I BALL BOUNCER skal du prøve at ødelægge ", 80, 240);
text("så mange blokke som muligt, uden at bolden ", 92, 260);
text("rammer bunden eller at blokkene kommer “, 92, 280);
text(“under den stribende linje.”, 92, 300);
text(”- Du skal bruge BOUNCER’en som hjælp til ", 80, 330);
text("at ødelægge blokkene. “, 92, 350);
text(”- For at rykke med BOUNCER’en, skal du bruge ", 80, 380);
text("piletasterne til højde og venstre. ", 92, 400);
textSize(25);
fill(100,0,100);
text(“Held og lykke XD”, 140, 500);
//play knap
stroke(0);
fill(100);
rect(x3,y3,w3,h3,20);
//knappens tekst
textSize(30);
fill(255);
text(“PLAY”,210,585);
}
if(mouseX>x3 && mouseX<x3+w3 && mouseY>y3 && mouseY <y3+h3 && counter<2){
counter++;
//Spillets omridse (den hvide firkant)
stroke(255);
fill(0);
rect(60,100,370,550);
//Viser scoren
textSize(20);
fill(255);
text("Score: " + score, 20,680);
text("Highscore: " + highScore, 310,680);
spilletIGang=true;
}
}
void spillet(){
// stroke for spillet
stroke(255);
fill(0);
rect(0,0,500,700);
rect(60,100,370,550);
fill(100);
rect(-1,-1,501,60);
textSize(40);
fill(255);
text(“BALL BOUNCER”,100,45);
//Nederste tekst
textSize(20);
fill(255);
text("Score: " + score, 20,680);
text("Highscore: " + highScore, 310,680);
//Game over stregen
fill(100);
stroke(100);
for(int i =90; i<width; i+=30){
ellipse (i-40,height-200,10,2);}
//firkanter for spillet
fill(colorGR);
int xPosBrick1 = 60;
for(int i = 0; i<7; i++){
rect(xPosBrick1, yPosBrick1,50,50);
xPosBrick1 = xPosBrick1 + 53;
}
fill(colorR);
int xPosBrick2 = 60;
for(int i = 0; i<7; i++){
rect(xPosBrick2,210,50,50);
xPosBrick2 = xPosBrick2 + 53;
}
fill(colorG);
int xPosBrick3 = 60;
for(int i = 0; i<7; i++){
rect(xPosBrick3, 265,50,50);
xPosBrick3 = xPosBrick3 + 53;
}
fill(colorB);
int xPosBrick = 60;
for(int i = 0; i<7; i++){
rect(xPosBrick, yPosBrick, 50, 50);
xPosBrick = xPosBrick + 53;
}
//Funktionen for at firkanterne rykker ned og stopper ved en given x-værdi
if(yPosBrick < 320){
yPosBrick = yPosBrick + 1;
}
drawPaddle();
movePaddle();
restrictPaddle();
drawCircle();
moveCircle();
bounceOff();
contactPaddle();
}
void contactPaddle() {
//x værdien for bolden skal være STØRRE end x værdien for paddlen, men den skal samtidig også være MINDRE end x for paddle + paddlebredde
if ( x < paddleXB+paddleW && x > paddleXB && y - h/2 < paddleYB + paddleH/2 && y + h/2 > paddleYB - paddleH/2) {
// if (speedX > 0) {
speedY = -speedY*1;
//} x + w/2 > paddleXB - paddleW/2
}
}
//denne funktion finder ud af om bolen ramte ketcheren eller ej
void bounceOff() {
if ( y > height - 50 - h/2) { //hvis boldens y position er større end kanvas-højde minus halvdelen af bold-bredden
setup(); //så start spillet forfra
speedX = -speedX;
}
//hvis bolden rammer muren til højre, venstre eller øverste, så skiftes retningen
if ( x > width - 60 - h/2) {
speedX = -speedX;
} else if ( x < 60 + h/2) {
speedX = -speedX;
} else if ( y < 100 + h/2) {
speedY = -speedY;
}
}
//ketcherne skabes
void drawPaddle() {
fill(255);
rect(paddleXB, paddleYB, paddleW, paddleH);
}
//denne funktion sørger for at bolden kan bevæge sig
void moveCircle() {
x = x + speedX2;
y = y + speedY2;
}
//denne funktion skaber bolden
void drawCircle() {
fill(255);
stroke(250);
ellipse(x, y, w, h);
stroke(100);
}
//vi gør sådan at ketcherne bevæger sig hvis der trykkes til side eller til den anden
void movePaddle() {
if (bouncerL) {
paddleXB = paddleXB - paddleS;
}
if (bouncerR) {
paddleXB = paddleXB + paddleS;
}
}
//denne funktion registrerer, om en ketcher har ramt væggen
void restrictPaddle() {
if (paddleXB - 60 < 0) { //hvis y-koordinaten for venstre ketcher minus halvdelen af ketcherhøjden er mindre end 0
paddleXB = paddleXB + paddleS; //skal ketcheren køre til siden.
}
if (paddleXB + paddleW/0.69 > width) {
paddleXB = paddleXB - paddleS;
}
}
//denne funktion registrerer om brugeren trykker på tasten
void keyPressed() {
if (keyCode == LEFT) {
bouncerL = true;
}
if (keyCode == RIGHT) {
bouncerR = true;
}
}
//denne funktion registrerer om brugeren giver slip på tasten
void keyReleased() {
if (keyCode == LEFT) {
bouncerL = false;
}
if (keyCode == RIGHT) {
bouncerR = false;
}}
//void showScores() {
//fill(255);
//textAlign(CENTER);
//textSize(45);
//text("Score: " + score, width/2, 70);
//textSize(20);
//text("Highscore: " + highScore, width/2, 100);}
Thank you so much in advance for your help!