super fun girls time presents:
shake-your-booty-fun! (abi, emily, ieva, and nicole)
press ‘1’ to start player 1’s round. press ‘2’ to start player 2’s round. press ‘w’ to see who won. press ‘q’ to restart and play again!


link to all the media files-
https://drive.google.com/folderview?id=0B-scoLsJ5PclSy1ZYmJtQ1lPQ2c&usp=sharing
import processing.video.*; import ddf.minim.*; Capture video; PImage prevFrame; Movie instructionsScreen; Movie player1_screen; Movie player2_screen; Movie scoreBar1; Movie scoreBar2; Movie player1_wins; Movie player2_wins; Movie stop1; Movie stop2; Minim minim; AudioPlayer player; float threshold = 50; int counter = 0; int counter2 = 0; boolean round1 = false; boolean round2 = false; float ypos1, ypos2; //location of score bar Timer theStartTimer1; Timer theGameTimer1; Timer theStartTimer2; Timer theGameTimer2; boolean gameStart1 = false; boolean gameStart2 = false; void setup() { size(1280, 720); smooth(); noStroke(); video = new Capture(this, width, height); video.start(); prevFrame = createImage(video.width, video.height, RGB); instructionsScreen = new Movie(this, "instructions.mov"); player1_screen = new Movie(this, "player1_screen.mov"); player2_screen = new Movie(this, "player2_screen.mov"); scoreBar1 = new Movie(this, "score_bar.mov"); scoreBar2 = new Movie(this, "score_bar.mov"); player1_wins = new Movie(this, "player1_wins.mov"); player2_wins = new Movie(this, "player2_wins.mov"); stop1 = new Movie(this, "stop1.mov"); stop2 = new Movie(this, "stop2.mov"); minim = new Minim(this); player = minim.loadFile("Caramelldansen.wav"); theStartTimer1 = new Timer(6000); theGameTimer1 = new Timer (26000); //actual gameplay is 20sec theStartTimer2 = new Timer(6000); theGameTimer2 = new Timer (26000); } void draw() { image(instructionsScreen, 0, 0); instructionsScreen.play(); if (gameStart1 == true) { instructionsScreen.stop(); player.play(); //round 1 if (theStartTimer1.timeOver()) { if (theGameTimer1.timeOver()) { image(stop1, 0, 0); stop1.play(); round1 = true; } else { image(player1_screen, 0, 0); player1_screen.play(); theGameTimer1.countDown(); textSize(height/10); fill(255, 0, 255); text (counter, width/30, height/10); textSize(height/10); fill(0, 255, 255); text (counter2, width-width/7.5, height/10); // Capture video if (video.available()) { // Save previous frame for motion detection prevFrame.copy(video, 0, 0, video.width, video.height, 0, 0, video.width, video.height); prevFrame.updatePixels(); video.read(); } loadPixels(); video.loadPixels(); prevFrame.loadPixels(); float totalMotion = 0; // Sum the brightness of each pixel for (int i = 0; i < video.pixels.length; i ++ ) { // Step 2, what is the current color color current = video.pixels[i]; // Step 3, what is the previous color color previous = prevFrame.pixels[i]; // Step 4, compare colors (previous vs. current) float r1 = red(current); float g1 = green(current); float b1 = blue(current); float r2 = red(previous); float g2 = green(previous); float b2 = blue(previous); // Motion for an individual pixel is the difference between the previous color and current color. float diff = dist(r1, g1, b1, r2, g2, b2); // totalMotion is the sum of all color differences. totalMotion += diff; } // averageMotion is total motion divided by the number of pixels analyzed. float avgMotion = totalMotion / video.pixels.length; // average motion smooth(); noStroke(); fill(0); counter += avgMotion/20; float ypos = map (counter, 0, 1200, 0, height); image(scoreBar1, width/32, height-ypos); ypos1 = height-ypos; scoreBar1.loop(); } } else { image(player1_screen, 0, 0); player1_screen.play(); } } //round 2 if (gameStart2 == true) { player1_screen.stop(); if (theStartTimer2.timeOver()) { if (theGameTimer2.timeOver()) { image(stop2, 0, 0); stop2.play(); } else { image(player2_screen, 0, 0); player2_screen.play(); theGameTimer2.countDown(); textSize(height/10); fill(255, 0, 255); text (counter, width/30, height/10); textSize(height/10); fill(0, 255, 255); text (counter2, width-width/7.5, height/10); image(scoreBar1, width/32, ypos1); // Capture video if (video.available()) { // Save previous frame for motion detection prevFrame.copy(video, 0, 0, video.width, video.height, 0, 0, video.width, video.height); prevFrame.updatePixels(); video.read(); } loadPixels(); video.loadPixels(); prevFrame.loadPixels(); float totalMotion = 0; // Sum the brightness of each pixel for (int i = 0; i < video.pixels.length; i ++ ) { // Step 2, what is the current color color current = video.pixels[i]; // Step 3, what is the previous color color previous = prevFrame.pixels[i]; // Step 4, compare colors (previous vs. current) float r1 = red(current); float g1 = green(current); float b1 = blue(current); float r2 = red(previous); float g2 = green(previous); float b2 = blue(previous); // Motion for an individual pixel is the difference between the previous color and current color. float diff = dist(r1, g1, b1, r2, g2, b2); // totalMotion is the sum of all color differences. totalMotion += diff; } // averageMotion is total motion divided by the number of pixels analyzed. float avgMotion = totalMotion / video.pixels.length; // average motion smooth(); noStroke(); fill(0); counter2 += avgMotion/20; float ypos2A = map (counter2, 0, 1200, 0, height); image(scoreBar2, width- width/7, height-ypos2A); ypos2 = height-ypos2A; scoreBar2.loop(); } } else { image(player2_screen, 0, 0); player2_screen.play(); } } if (round1 == true && round2 == true) { //instructionsScreen.stop(); player1_screen.stop(); player2_screen.stop(); //image(scoreBar1, width/32, ypos1); image(scoreBar2, width - width/7, ypos2); //if player2 wins if (counter2 > counter) { image(player2_wins, 0, 0); player2_wins.play(); } //if player1 wins if (counter > counter2) { image(player1_wins, 0, 0); player1_wins.play(); } } } void keyPressed() { if (key == '2') { gameStart2 = true; theStartTimer2.start(); theGameTimer2.start(); } else { gameStart2 = false; } if (key == '1') { gameStart1 = true; theStartTimer1.start(); theGameTimer1.start(); } if (key == 'w') { round2 = true; } if (key == 'q') { gameStart1 = false; gameStart2 = false; round1 = false; round2 = false; counter2 = 0; counter = 0; ypos1 = height; ypos2 = height; scoreBar1.stop(); scoreBar2.stop(); } } void movieEvent(Movie m) { m.read(); }
//New Class PFont font; class Timer { int savedTime; int totalTime; int countDown; int passedTime; int screenSeconds; Timer(int temp_totalTime) { totalTime = temp_totalTime; } void start() { savedTime = millis(); } void countDown(){ screenSeconds = passedTime / 1000; countDown = 26 - screenSeconds; font = loadFont("KarmaSuture.vlw"); fill(50, 255, 0); textFont(font, 100); text(countDown, width/2.2, height/7); } boolean timeOver() { passedTime = millis() - savedTime; if (passedTime > totalTime) { return true; } else { return false; } } }