/*///////////////////////////////////////////////////////////////////////////////////////////////// ** Dodge Balls! - Ken Ge ** ** Coding format inspired by: Gone Fishing project - An interactive toy by Nicolas Hesler. ** ** p1 movement: WASD p2 movement: IJKL /*//////////////////////////////////////////////////////////////////////////////////////////////// //player ball variables float p1X=50; float p1Y=350; float p1Xspeed=(0); float p1Yspeed=(0); //player rect variables float p2X=350; float p2Y=50; float p2Xspeed=(0); float p2Yspeed=(0); //enemy ball variables float enemyX=200; float enemyY=200; float enemyX2=180; float enemyY2=180; float enemyX3=180; float enemyY3=220; float enemyX4=220; float enemyY4=180; float enemyX5=220; float enemyY5=220; float enemyXspeed=(random(-3, 3)); float enemyYspeed=(random(-3, 3)); float enemyX2speed=(random(-3, 3)); float enemyY2speed=(random(-3, 3)); float enemyX3speed=(random(-3, 3)); float enemyY3speed=(random(-3, 3)); float enemyX4speed=(random(-3, 3)); float enemyY4speed=(random(-3, 3)); float enemyX5speed=(random(-3, 3)); float enemyY5speed=(random(-3, 3)); void setup() { size(400, 400); frameRate(60); smooth(); } void draw() { /////////////////////////////////////////////// // DRAW /////////////////////////////////////////////// background(0, 0, 0); drawLine(); // coppied directly from "Cylon Lander" by Nicolas Hesler drawStars(); ////////////////////////////////////////////// // UPDATE ////////////////////////////////////////////// initializePlayerLocation(); initializeEnemyLocation(); updateP1(); constrainP1ToCanvasBounds(); updateP2(); constrainP2ToCanvasBounds(); constrainEnemyBallToCanvasBounds(); } //set initial player location void initializePlayerLocation() { //set initial player ball location&speed fill(172, 255, 179); ellipse(p1X, p1Y, 20, 20); //p1 location = previous location + p1 speed p1X = p1X + p1Xspeed; p1Y = p1Y + p1Yspeed; //set initial player rect location&speed rectMode(CENTER); fill(134, 177, 255); rect(p2X, p2Y, 20, 20); //p2 velocity p2X = p2X + p2Xspeed; p2Y = p2Y + p2Yspeed; } // constrains void constrainP1ToCanvasBounds() { // if player crosses a certain point. * velocity by -1 if ((p1X > width) || (p1X < 0)) { p1Xspeed = p1Xspeed * -1; } if ((p1Y > height-25) || (p1Y < 25)) { p1Yspeed = p1Yspeed * -1; } } //p1 movements void updateP1() { //key bindings // if keypressed, change p1speed if (keyPressed) { if (key == 'w' || key == 'W') { p1Yspeed=-2; } if (key == 's' || key == 'S') { p1Yspeed=2; } if (key == 'a' || key == 'A') { p1Xspeed=-2; } if (key == 'd' || key == 'D') { p1Xspeed=2; } } } //constrain to p2 void constrainP2ToCanvasBounds() { if ((p2X > width) || (p2X < 0)) { p2Xspeed = p2Xspeed * -1; } if ((p2Y > height-25) || (p2Y < 25)) { p2Yspeed = p2Yspeed * -1; } } //p2 movements void updateP2() { //key bindings if (keyPressed) { if (key == 'i' || key == 'I') { p2Yspeed=-2; } if (key == 'k'|| key == 'K') { p2Yspeed=2; } if (key == 'j'|| key == 'J') { p2Xspeed=-2; } if (key == 'l'|| key == 'L') { p2Xspeed=2; } } } //set initial enemy location void initializeEnemyLocation() { // enemy ball spawns noStroke(); fill(255, 170, 210); ellipse(enemyX2, enemyY2, 20, 20); ellipse(enemyX3, enemyY3, 20, 20); ellipse(enemyX4, enemyY4, 20, 20); ellipse(enemyX5, enemyY5, 20, 20); ellipse(enemyX, enemyY, 20, 20); // enemy location = previous enemy location + enemy speed enemyX = enemyX + enemyXspeed; enemyY = enemyY + enemyYspeed; enemyX2 = enemyX2 + enemyX2speed; enemyY2 = enemyY2 + enemyY2speed; enemyX3 = enemyX3 + enemyX3speed; enemyY3 = enemyY3 + enemyY3speed; enemyX4 = enemyX4 + enemyX4speed; enemyY4 = enemyY4 + enemyY4speed; enemyX5 = enemyX5 + enemyX5speed; enemyY5 = enemyY5 + enemyY5speed; } // constrain for enemy ball void constrainEnemyBallToCanvasBounds() { if ((enemyX > width) || (enemyX < 0)) { enemyXspeed = enemyXspeed * -1; } if ((enemyY > height-25) || (enemyY < 25)) { enemyYspeed = enemyYspeed * -1; } if ((enemyX2 > width) || (enemyX2 < 0)) { enemyX2speed = enemyX2speed * -1; } if ((enemyY2 > height-25) || (enemyY2 < 25)) { enemyY2speed = enemyY2speed * -1; } if ((enemyX3 > width) || (enemyX3 < 0)) { enemyX3speed = enemyX3speed * -1; } if ((enemyY3 > height-25) || (enemyY3 < 25)) { enemyY3speed = enemyY3speed * -1; } if ((enemyX4 > width) || (enemyX4 < 0)) { enemyX4speed = enemyX4speed * -1; } if ((enemyY4 > height-25) || (enemyY4 < 25)) { enemyY4speed = enemyY4speed * -1; } if ((enemyX5 > width) || (enemyX5 < 0)) { enemyX5speed = enemyX5speed * -1; } if ((enemyY5 > height-25) || (enemyY5 < 25)) { enemyY5speed = enemyY5speed * -1; } } // two lines on bottom and top void drawLine() { float rectX=1; noStroke(); fill(200, 171, 232, 150); //while rectX < width, create more rects. new rect X = old rectX + 11 while (rectX<width) { rect(rectX, 390, 10, 10); rect(rectX, 10, 10, 10); rectX=rectX+11; } } // coppied directly from "Cylon Lander" by Nicolas Hesler void drawStars() { stroke(random(100, 255)); point(100, 100); stroke(random(100, 255)); point(150, 150); stroke(random(100, 255)); point(50, 300); stroke(random(100, 255)); point(250, 250); stroke(random(100, 255)); point(350, 200); stroke(random(100, 255)); point(300, 100); stroke(random(100, 255)); point(10, 180); stroke(random(100, 255)); point(200, 50); stroke(random(100, 255)); point(50, 20); stroke(random(100, 255)); point(320, 70); }