//This is a original ball game where two players play against each other
//by trying their best to get the ball to the other side
//Crowds are cheering whenever a player gets the ball to the other side
//as time past, players become tired.Play suffering sound instead of ‘haha’
//the game ends with a player not able to get the ball to the other side
//canvas turns black and the last sound is the man suffering.
sketch
//This is a original ball game where two players play against each other
//by trying their best to get the ball to the other side
//Crowds are cheering whenever a player gets the ball to the other side
//as time past, players become tired.Play suffering sound instead of 'haha'
//the game ends with a player not able to get the ball to the other side
//canvas turns black and the last sound is the man suffering.
var manSuffering;
var ballBouncing;
var crowdCheering;
var womanHaha;
var womanSuffering;
var manHaha;
var x = 50
var y = 170
var vx = 100
var vy = 1
//loading the sounds
function preload() {
manSuffering = loadSound("http://localhost:8000/man suffering.wav");
ballBouncing = loadSound("http://localhost:8000/ball bouncing.wav");
crowdCheering = loadSound("http://localhost:8000/crowd cheering.wav");
womanHaha = loadSound("http://localhost:8000/woman haha.wav");
manHaha = loadSound("http://localhost:8000/man haha.wav");
womanSuffering = loadSound("http://localhost:8000/woman suffering.wav");
}
function setup() {
createCanvas(400, 400);
createDiv("p5.dom.js library is loaded.");
useSound();
frameRate(10)
}
function soundSetup() { // setup for audio generation
manSuffering.setVolume(0.5);
ballBouncing.setVolume(0.5)
crowdCheering.setVolume(0.5)
womanHaha.setVolume(0.5)
womanSuffering.setVolume(0.5)
manHaha.setVolume(0.5)
}
function draw() {
background(192,100,150)
//draws the court
court()
//draws a moving male player
playerMale(20,random(100,220))
//draws a moving female player
playerFemale(380,random(100,220))
//draws a moving ball
ball()
//draws 7 spectators
for (var i = 0; i < 4; i++){
push()
fill(random(170,255))
spectator(50+100*i,300)
pop()
}
for (var i = 0; i < 3; i++){
push()
fill(random(170,255))
spectator(100+100*i,320)
pop()
}
//when the ball hits the edge and time is a 15 seconds, one player screams and game ends
if (frameCount > 150 & x+25 >= width){
manSuffering.play()
background(0)
noLoop();
}
}
function playerMale(x,y){
push()
strokeWeight(3)
ellipse(x,y,18,25)
//body
line(x,y+12,x,y+50)
line(x,y+30,x-10,y+15)
line(x,y+30,x+10,y+15)
line(x,y+50,x+10,y+65)
line(x,y+50,x-10,y+65)
//eyes
ellipse(x-3,y-2,1,1)
ellipse(x+3,y-2,1,1)
arc(x, y, 12, 15, 1, PI-1)
//hair
line(x,y-12,x,y-22)
line(x-3,y-11,x-10,y-18)
line(x+3,y-13,x+10,y-18)
pop()
}
function playerFemale(x,y){
push()
strokeWeight(3)
ellipse(x,y,18,25)
//body
line(x,y+12,x,y+50)
line(x,y+30,x-10,y+15)
line(x,y+30,x-20,y+30)
line(x,y+50,x+10,y+65)
line(x,y+50,x-10,y+65)
//eyes
ellipse(x-3,y-2,1,1)
ellipse(x+3,y-2,1,1)
arc(x, y, 12, 15, 1, PI-1)
//hair
line(x,y-12,x-10,y)
line(x-2,y-12,x-12,y+2)
line(x+2,y-12,x+12,y+2)
pop()
}
function court(){
push()
fill(0,130,0)
beginShape();
vertex(70, 50);
vertex(330, 50);
vertex(380, 320);
vertex(20, 320);
endShape(CLOSE);
pop()
}
function spectator(x,y){
push()
noStroke()
ellipse(x,y+120,100,200)
ellipse(x,y,50,70)
pop()
}
function ball(){
push()
ellipse(x,y,10,10) //draws the ball
x = x + vx //x-coordinate of ball moves according to x-velocity
y = y + vy //y-coordinate of ball moves according to y-velocity
if (x+25 >= width){ //when ball touches right side, bounces back
vx = random(-80,-30)
vy = random(-5,5)
//crowd cheers when a player gets the ball to the other side
//as time past, players become tired.Play suffering sound instead of 'haha'
ballBouncing.play()
if (frameCount < 125){
crowdCheering.play()
}
if (frameCount < 75){
womanHaha.play()
}else{
womanSuffering.play()
}
}
if (x-25 <= 0){ //when ball touches left side, bounces back
vx = random(30,80)
vy = random(-5,5)
ballBouncing.play()
if (frameCount < 125){
crowdCheering.play()
}
if (frameCount < 75){
manHaha.play()
}else{
manSuffering.play()
}
}
//ball doesn't go off the court
y = constrain(y,50,320)
pop()
}