/* //Block Collection Sim// Use arrow keys to move to bring the block to the win point and avoid the lasers */ //Sets up variables for the blocks int block1X = 175; int block1Y = 225; int block1W = 50; int block1H = 50; int block1LeftSpeed = 50; int block1RightSpeed = 50; int block1DownSpeed = 50; int block1UpSpeed = 50; int block2X = 75; int block2Y = 75; int block2W = 50; int block2H = 50; int block2LeftSpeed = 10; int block2RightSpeed = 10; int block2DownSpeed = 10; int block2UpSpeed = 10; int block5X = 350; int block5Y = 100; int block5W = 50; int block5H = 50; int block5LeftSpeed = 50; int block5RightSpeed = 50; int block5DownSpeed = 50; int block5UpSpeed = 50; int block6X = 75; int block6Y = 75; int block6W = 50; int block6H = 50; int block6LeftSpeed = 50; int block6RightSpeed = 50; int block6DownSpeed = 50; int block6UpSpeed = 50; int right = block1X + block1W/2; int top = block1Y - block1H/2; int left = block1X - block1W/2; int bottom = block1Y + block1H/2; //Sets up variables for laser int laserX1 = -25; int laserY1 = 425; boolean shootBullet; //Sets up time check int lastTimeCheck; int timeIntervalFlag = 1000; //Setup with time check void setup() { lastTimeCheck=millis(); size(400, 400); } //Main draw function void draw() { background(155); grid(); fill(255); //Sets up blocks and collision block1(); block2(); collision2(); collision1(); //Sets up block addtion addBlock(); addBlock2(); //Sets up win win(); //Sets up laser getHurt(); loop(); bullet(); laserShark1(); bulletCount(); } //Movement functions void keyPressed() { //First block movement if (key == CODED) { if (keyCode == UP) { block1Y -= block1UpSpeed; } else if (keyCode == DOWN) { block1Y += block1DownSpeed; } else if (keyCode == LEFT) { block1X -= block1LeftSpeed; } else if (keyCode == RIGHT) { block1X += block1RightSpeed; } } //Movement for added block if (key == CODED) { if (keyCode == UP) { block6Y -= block6UpSpeed; } else if (keyCode == DOWN) { block6Y += block6DownSpeed; } else if (keyCode == LEFT) { block6X -= block6LeftSpeed; } else if (keyCode == RIGHT) { block6X += block6RightSpeed; } } } //Draws grid void grid() { // line(50, 0, 50, 400); line(100, 0, 100, 400); line(150, 0, 150, 400); line(200, 0, 200, 400); line(250, 0, 250, 400); line(300, 0, 300, 400); line(350, 0, 350, 400); line(0, 50, 400, 50); line(0, 100, 400, 100); line(0, 150, 400, 150); line(0, 200, 400, 200); line(0, 250, 400, 250); line(0, 300, 400, 300); line(0, 350, 400, 350); } //Sets up block functions void block1() { rectMode(CENTER); rect(block1X, block1Y, block1W, block1H); } void block2() { fill(255, 0, 0); rectMode(CENTER); rect(block2X, block2Y, block2W, block2H); fill(255); } void block6() { rectMode(CENTER); rect(block6X, block6Y, block6W, block6H); fill(255); } //Sets up first part of collision function that detects if a corner is in another block void collision1() { int right = block1X + block1W/2; int top = block1Y - block1H/2; int left = block1X - block1W/2; int bottom = block1Y + block1H/2; //top right corner if (pointIsInBlock( right, top, block2X, block2Y, block2W, block2H)) { trCollide=true; println("Collision: TR1!"); } else { trCollide=false; } //top left corner if (pointIsInBlock( left, top, block2X, block2Y, block2W, block2H)) { tlCollide=true; println("Collision: TL1!"); } else { tlCollide=false; } //bottom right corner if (pointIsInBlock( right, bottom, block2X, block2Y, block2W, block2H)) { brCollide=true; println("Collision: BR1!"); } else { brCollide=false; } //bottom left corner if (pointIsInBlock( left, bottom, block2X, block2Y, block2W, block2H)) { blCollide=true; println("Collision: BL1!"); } else { blCollide=false; } } //Sets up second part of collision function that detects if a side of a block is coliding with another side of a block and changes variables void collision2() { if (trCollide && tlCollide) { addBlock1=true; block1UpSpeed=0; } else { block1UpSpeed=50; } if (brCollide && trCollide) { addBlock2=true; block1RightSpeed=0; } else { block1RightSpeed=50; } if (brCollide && blCollide) { addBlock3=true; block1DownSpeed=0; } else { block1DownSpeed=50; } if (tlCollide && blCollide) { addBlock4=true; block1LeftSpeed=0; } else { block1LeftSpeed=50; } } //Sets up the block add function with directional imput void addBlock() { if (addBlock1) { placeCollectBlock=true; block2Y=(1000); block6X = 75; block6Y = 75; addBlock1=false; } if (addBlock2) { placeCollectBlock=true; block2Y=(1000); block6X = 75; block6Y = 75; addBlock2=false; } if (addBlock3) { placeCollectBlock=true; block2Y=(1000); block6X = 75; block6Y = 75; addBlock3=false; } if (addBlock4) { placeCollectBlock=true; block2Y=(1000); block6X = 75; block6Y = 75; addBlock4=false; } } void addBlock2() { if (placeCollectBlock) { fill( random(255), random(255), random(255), random(255)); block6(); } } //Sets up win function that only activates with the added block void win() { winBlocks(); if (winSquare(block6X, block6Y, 325, 275)) { block6X = 1000; block6Y = 1000; block2Y=75; block1X=175; block1Y=225; } } void winBlocks() { rectMode(CENTER); fill( random(255), random(255), random(255), random(255)); rect(325, 275, 50, 50); fill(255); } //Sets up the laser void laserShark1() { fill(140, 0, 142); rect(0, laserY1, 25, 25); laserY1 = laserY1 - 1; if (laserY1 < 0) { laserY1 = 425; } noFill(); } //Sets up getting hurt by setting the player back to the middle of the screen void getHurt() { if (pointIsInBlock( laserX1, laserY1, block1X, block1Y, block1W, block1H)) { block1X = 175; block1Y = 225; block6X = 1000; block6Y = 1000; block2Y=75; } else { } } //Sets up bullet counter void bulletCount() { if ( millis() > lastTimeCheck + timeIntervalFlag ) { lastTimeCheck = millis(); shootBullet=true; } } //Sets up bullet using the universal collision function void bullet() { if (shootBullet==(true)) { //println("oh boi"); fill((255), random(255), random(255)); rect(laserX1, laserY1, 10, 10); laserX1 = laserX1 + 5; } if (laserX1 > 400) { laserX1 = -25; } } //Universal collision function and booleans boolean pointIsInBlock(int px, int py, int rx, int ry, int rw, int rh) { if (px >= rx-rw/2 && px <= rx+rw/2 && py >= ry-rh/2 && py <= ry+rh/2) { return true; } else { return false; } } boolean trCollide = pointIsInBlock(right, top, block2X, block2Y, block2W, block2H); boolean tlCollide = pointIsInBlock(left, top, block2X, block2Y, block2W, block2H); boolean brCollide = pointIsInBlock(right, bottom, block2X, block2Y, block2W, block2H); boolean blCollide = pointIsInBlock(left, bottom, block2X, block2Y, block2W, block2H); //Win square collision booleans boolean winSquare(int x1, int y1, int x2, int y2) { if (x1 == x2 && y1 == y2) { return true; } else { return false; } } //Add block booleans boolean addBlock1 = (trCollide && tlCollide); boolean addBlock2 =(brCollide && trCollide); boolean addBlock3 =(brCollide && blCollide); boolean addBlock4 =(tlCollide && blCollide); boolean placeCollectBlock; { block6X = 0; block6Y = 0; }