///////////////// ///// //Slot Machine by Lena Stonewell (Schott) ///// ///////////////// //This interactive toy allows you to use the lever on the //slot machine, which randomizes the 3 slots. If you get a //matching 3 images, you win and coins spit out. // variable to determine whether you win boolean win; //variables related to slots boolean crown1 = true; boolean crown2 = true; boolean crown3 = true; boolean alien1 = false; boolean alien2 = false ; boolean alien3 = false; boolean cherry1 = false; boolean cherry2 = false; boolean cherry3 = false; //variables related to lever boolean lever; float leverY = 130; int leverspeed = 8; boolean slotstart = false; int coinspeed = 1; //variables related to coins boolean coingenerate = false; int coinX = 50; int coinY = 50; int coinhere = 0; float coinspawn = 0; // sets up canvas void setup() { size(400, 400); noCursor(); smooth(); rectMode(CORNER); frameRate(25); } void draw() { background (mouseY, mouseX, 255); // draws basic framework of slotmachine drawSlots(); drawBanner(); drawLever(); drawDispenser(); // updates conditions of slots outcomeSlots(); drawOutcome(); bannerWin(); bannerLose(); coinSpit(); // draws each slot with random images slotOne(); slotTwo(); slotThree(); } // determines whether or not the conditions are met for winning or losing the slots void outcomeSlots () { if ((alien1 == true && alien2 == true && alien3 == true) || (crown1 == true && crown2 == true && crown3 == true) || (cherry1 == true && cherry2 == true && cherry3 == true) ) { win = true; } else { win = false; } } // draws the final outcome from the updated slots void drawOutcome() { if (lever == false && slotstart == true) { // draws either crown, cherry or alien in slot 1 if (crown1 == true) { noStroke(); fill(255, 255, 51); triangle(60, 210, 80, 220, 70, 240); triangle(85, 200, 70, 220, 100, 220); triangle(90, 220, 110, 210, 100, 240); rect(60, 240, 50, 10); rect(70, 220, 30, 30); fill(51, 255, 255); quad(85, 220, 80, 230, 85, 240, 90, 230); } else if (cherry1 == true) { strokeWeight(6); stroke(102, 204, 0); line(70, 240, 90, 210); line(97, 240, 90, 210); line(80, 200, 105, 215); noStroke(); fill(255, 51, 51); ellipse(70, 250, 20, 20); ellipse(100, 250, 20, 20); } else if (alien1 == true) { noStroke(); fill(128, 255, 0); ellipse(85, 230, 50, 50); strokeWeight(6); stroke(128, 255, 0); line(60, 200, 70, 195); line(110, 200, 100, 195); line(65, 198, 70, 210); line(105, 198, 100, 210); strokeWeight(2); stroke(128, 200, 0); fill(mouseX, mouseY, 100); ellipse(70, 230, 10, 30); ellipse(100, 230, 10, 30); } // draws either crown, cherry or alien in slot 2 if (crown2 == true) { noStroke(); fill(255, 255, 51); triangle(60+75, 210, 80+75, 220, 70+75, 240); triangle(85+75, 200, 70+75, 220, 100+75, 220); triangle(90+75, 220, 110+75, 210, 100+75, 240); rect(60+75, 240, 50, 10); rect(70+75, 220, 30, 30); fill(51, 255, 255); quad(85+75, 220, 80+75, 230, 85+75, 240, 90+75, 230); } else if (cherry2 == true) { strokeWeight(6); stroke(102, 204, 0); line(70+75, 240, 90+75, 210); line(97+75, 240, 90+75, 210); line(80+75, 200, 105+75, 215); noStroke(); fill(255, 51, 51); ellipse(70+75, 250, 20, 20); ellipse(100+75, 250, 20, 20); } else if (alien2 == true) { noStroke(); fill(128, 255, 0); ellipse(85+75, 230, 50, 50); strokeWeight(6); stroke(128, 255, 0); line(60+75, 200, 70+75, 195); line(110+75, 200, 100+75, 195); line(65+75, 198, 70+75, 210); line(105+75, 198, 100+75, 210); strokeWeight(2); stroke(128, 200, 0); fill(mouseX, mouseY, 100); ellipse(70+75, 230, 10, 30); ellipse(100+75, 230, 10, 30); } // draws either crown, cherry or alien in slot 3 if (crown3 == true) { noStroke(); fill(255, 255, 51); triangle(60+150, 210, 80+150, 220, 70+150, 240); triangle(85+150, 200, 70+150, 220, 100+150, 220); triangle(90+150, 220, 110+150, 210, 100+150, 240); rect(60+150, 240, 50, 10); rect(70+150, 220, 30, 30); fill(51, 255, 255); quad(85+150, 220, 80+150, 230, 85+150, 240, 90+150, 230); } else if (cherry3 == true) { strokeWeight(6); stroke(102, 204, 0); line(70+150, 240, 90+150, 210); line(97+150, 240, 90+150, 210); line(80+150, 200, 105+150, 215); noStroke(); fill(255, 51, 51); ellipse(70+150, 250, 20, 20); ellipse(100+150, 250, 20, 20); } else if (alien3 == true) { noStroke(); fill(128, 255, 0); ellipse(85+150, 230, 50, 50); strokeWeight(6); stroke(128, 255, 0); line(60+150, 200, 70+150, 195); line(110+150, 200, 100+150, 195); line(65+150, 198, 70+150, 210); line(105+150, 198, 100+150, 210); strokeWeight(2); stroke(128, 200, 0); fill(mouseX, mouseY, 100); ellipse(70+150, 230, 10, 30); ellipse(100+150, 230, 10, 30); } } } // intiates "WIN!" on the banner if you win the slots void bannerWin() { int screen = 55; strokeWeight(11); stroke(255); if (win == true && lever == false || slotstart == false) { line(120, 60, 130, 100); line(130, 100, 145, 80); line(145, 80, 160, 100); line(160, 100, 170, 60); line(200, 60, 200, 100); line(230, 100, 230, 60); line(230, 60, 270, 100); line(270, 100, 270, 60); line(290, 100, 290, 100); line(290, 80, 290, 60); strokeWeight(2); stroke(0); while (screen <= 105) { line(60, screen, 346, screen); screen=screen+5; } } } //initiates "LOSE!" on the banner if you lose the slots void bannerLose() { int screen = 55; strokeWeight(11); stroke(255); if (win == false && lever == false && slotstart == true) { line(100, 60, 100, 100); line(100, 100, 130, 100); line(150, 100, 180, 100); line(180, 100, 180, 60); line(180, 60, 150, 60); line(150, 60, 150, 100); line(200, 60, 230, 60); line(200, 60, 200, 80); line(200, 80, 230, 80); line(230, 80, 230, 100); line(230, 100, 200, 100); line(250, 60, 250, 100); line(250, 60, 280, 60); line(250, 100, 280, 100); line(250, 80, 270, 80); line(310, 100, 310, 100); line(310, 80, 310, 60); strokeWeight(2); stroke(0); while (screen <= 105) { line(60, screen, 346, screen); screen=screen+5; } } } // sets up slot 1 randomizer, creating illusion of flickering images like a slotmachine void slotOne() { if (slotstart == true && lever == true) { for (int slotroll = 0; slotroll < 2; slotroll=slotroll+1) { float slotgen = random(3); if (slotgen < 1) { noStroke(); fill(255, 255, 51); triangle(60, 210, 80, 220, 70, 240); triangle(85, 200, 70, 220, 100, 220); triangle(90, 220, 110, 210, 100, 240); rect(60, 240, 50, 10); rect(70, 220, 30, 30); fill(51, 255, 255); quad(85, 220, 80, 230, 85, 240, 90, 230); crown1=true; cherry1=false; alien1=false; } else if (slotgen >= 1 && slotgen < 2) { strokeWeight(6); stroke(102, 204, 0); line(70, 240, 90, 210); line(97, 240, 90, 210); line(80, 200, 105, 215); noStroke(); fill(255, 51, 51); ellipse(70, 250, 20, 20); ellipse(100, 250, 20, 20); crown1=false; cherry1=true; alien1=false; } else if (slotgen > 2) { noStroke(); fill(128, 255, 0); ellipse(85, 230, 50, 50); strokeWeight(6); stroke(128, 255, 0); line(60, 200, 70, 195); line(110, 200, 100, 195); line(65, 198, 70, 210); line(105, 198, 100, 210); strokeWeight(2); stroke(128, 200, 0); fill(mouseX, mouseY, 100); ellipse(70, 230, 10, 30); ellipse(100, 230, 10, 30); crown1=false; cherry1=false; alien1=true; } } } } // sets up slot 2 randomizer, creating illusion of flickering images like a slotmachine void slotTwo() { if (slotstart == true && lever == true) { for (int slotroll = 0; slotroll < 2; slotroll=slotroll+1) { float slotgen = random(3); if (slotgen < 1) { noStroke(); fill(255, 255, 51); triangle(60+75, 210, 80+75, 220, 70+75, 240); triangle(85+75, 200, 70+75, 220, 100+75, 220); triangle(90+75, 220, 110+75, 210, 100+75, 240); rect(60+75, 240, 50, 10); rect(70+75, 220, 30, 30); fill(51, 255, 255); quad(85+75, 220, 80+75, 230, 85+75, 240, 90+75, 230); crown2=true; cherry2=false; alien2=false; } else if (slotgen >= 1 && slotgen < 2) { strokeWeight(6); stroke(102, 204, 0); line(70+75, 240, 90+75, 210); line(97+75, 240, 90+75, 210); line(80+75, 200, 105+75, 215); noStroke(); fill(255, 51, 51); ellipse(70+75, 250, 20, 20); ellipse(100+75, 250, 20, 20); crown2=false; cherry2=true; alien2=false; } else if (slotgen > 2) { noStroke(); fill(128, 255, 0); ellipse(85+75, 230, 50, 50); strokeWeight(6); stroke(128, 255, 0); line(60+75, 200, 70+75, 195); line(110+75, 200, 100+75, 195); line(65+75, 198, 70+75, 210); line(105+75, 198, 100+75, 210); strokeWeight(2); stroke(128, 200, 0); fill(mouseX, mouseY, 100); ellipse(70+75, 230, 10, 30); ellipse(100+75, 230, 10, 30); crown2=false; cherry2=false; alien2=true; } } } } // sets up slot 3 randomizer, creating illusion of flickering images like a slotmachine void slotThree() { if (slotstart == true && lever == true) { for (int slotroll = 0; slotroll < 2; slotroll=slotroll+1) { float slotgen = random(3); if (slotgen < 1) { noStroke(); fill(255, 255, 51); triangle(60+150, 210, 80+150, 220, 70+150, 240); triangle(85+150, 200, 70+150, 220, 100+150, 220); triangle(90+150, 220, 110+150, 210, 100+150, 240); rect(60+150, 240, 50, 10); rect(70+150, 220, 30, 30); fill(51, 255, 255); quad(85+150, 220, 80+150, 230, 85+150, 240, 90+150, 230); crown3=true; cherry3=false; alien3=false; } else if (slotgen >= 1 && slotgen < 2) { strokeWeight(6); stroke(102, 204, 0); line(70+150, 240, 90+150, 210); line(97+150, 240, 90+150, 210); line(80+150, 200, 105+150, 215); noStroke(); fill(255, 51, 51); ellipse(70+150, 250, 20, 20); ellipse(100+150, 250, 20, 20); crown3=false; cherry3=true; alien3=false; } else if (slotgen > 2) { noStroke(); fill(128, 255, 0); ellipse(85+150, 230, 50, 50); strokeWeight(6); stroke(128, 255, 0); line(60+150, 200, 70+150, 195); line(110+150, 200, 100+150, 195); line(65+150, 198, 70+150, 210); line(105+150, 198, 100+150, 210); strokeWeight(2); stroke(128, 200, 0); fill(mouseX, mouseY, 100); ellipse(70+150, 230, 10, 30); ellipse(100+150, 230, 10, 30); crown3=false; cherry3=false; alien3=true; } } } } // if winning conditions are met, coins spit out from the bottom void coinSpit() { if (win == true && lever == false && slotstart == true) { for (int coins = 0; coins < 10; coins=coins+1) { coinspawn = random(80, 320); coinhere = coinhere + coinspeed; if (coinhere >190) { coinhere = 0; } strokeWeight(4); stroke(193, 162, 2); fill(255, 213, 0); ellipse(coinspawn, 360+ coinhere, coinX, coinY); } } } // draws the banner and create the illusion of flashing lights void drawBanner() { int a = 40; int b = 40; int c = 80; int d = 40; int e = 60; int f = 10; int tri = 40; int light = 10; int h = 45; int p = 55; strokeWeight(3); stroke(225, 0, 0); fill(225, 0, 0); rect(40, 40, 320, 80); fill(0); rect(50, 50, 300, 60); // creates different colours for top of banner fill(255, mouseY, mouseX); while (a <= 320) { triangle(a, b, c, d, e, f); a=a+tri; c=c+tri; e=e+tri; } // creates illusion of flashing lights using mouse location if (mouseY < 200) { fill(255); for (int maxdots = 0; maxdots < 39; maxdots += 1) { if (maxdots < 15) { fill(255); ellipse(p+maxdots*20, h, light, light); fill(0); ellipse(p+maxdots*20+10, h, light, light); } else if (maxdots < 19) { fill(255); ellipse(300+p, h, light, light); fill(0); ellipse(300+p, h+10, light, light); h=h+20; } else if (maxdots < 35) { fill(255); ellipse(p-10, h-10, light, light); fill(0); ellipse(p, h-10, light, light); p=p+20; } else if (maxdots < 39) { fill(255); ellipse(p-330, h-10, light, light); fill(0); ellipse(p-330, h-20, light, light); h=h-20; } } } else if (mouseY > 200) { fill(0); for (int maxdots = 0; maxdots < 39; maxdots += 1) { if (maxdots < 15) { fill(0); ellipse(p+maxdots*20, h, light, light); fill(255); ellipse(p+maxdots*20+10, h, light, light); } else if (maxdots < 19) { fill(0); ellipse(300+p, h, light, light); fill(255); ellipse(300+p, h+10, light, light); h=h+20; } else if (maxdots < 35) { fill(0); ellipse(p-10, h-10, light, light); fill(255); ellipse(p, h-10, light, light); p=p+20; } else if (maxdots < 39) { fill(0); ellipse(p-330, h-10, light, light); fill(255); ellipse(p-330, h-20, light, light); h=h-20; } } } } // draws basic framework for slotmachine void drawSlots() { float r = random(255); float g = random(255); float b = random(255); strokeWeight(5); stroke(0); if (lever == true && slotstart == true) { fill(r, g, b); } else { fill(225, 0, 0); } rect(41, 124, 240, 200); rect(285, 124, 74, 200); fill(55); rect(317, 140, 10, 170); noStroke(); rect(51, 140, 70, 170); rect(126, 140, 70, 170); rect(201, 140, 70, 170); } // draws lever and its conditions void drawLever() { strokeWeight(3); stroke(0); fill(225, 0, 0); rect(292, leverY+2, 60, 20); if (lever == true) { rect(292, leverY, 60, 20); leverY=leverY+leverspeed; } if (leverY > 295 || leverY <= 130) { leverspeed = leverspeed * -1; } if (leverY == 130) { lever = false; } } // draws basic framework for dispenser at bottom void drawDispenser() { float r = random(255); float g = random(255); float b = random(255); strokeWeight(5); stroke(0); if (lever == true && slotstart == true) { fill(r, g, b); } else { fill(225, 0, 0); } rect(41, 320, 318, 50); fill(0); rect(60, 340, 280, 20); } // releasing mousekey initiates slot machine void mouseReleased() { if (lever == false) { lever = true; slotstart = true; if (lever == false && slotstart == true) { outcomeSlots(); } } }