color hatBrown = color(125, 80, 35);
color gun = color(140);
color ponchoOne = color(random(0, 255), random(0, 255), random(0, 255));
color ponchoTwo = color(random(0, 255), random(0, 255), random(0, 255));
color shirt = color(210, 210, 255);
color shirtDark = color(200, 200, 245);
color skin = color(250, 220, 190);
color pantsBrown = color(210, 130, 62);
color sky = color(130,205,240);
boolean movePlayerOne = false;
int playerOneXPos = 140;
boolean playerOneWin = false;
int playerOneWinSpot = 60;
boolean movePlayerTwo = false;
int playerTwoXPos = 260;
boolean playerTwoWin = false;
int playerTwoWinSpot = 340;
int time;
int wait = 1000;
int timeDisplay = 4;
boolean countDownStarted = false;
boolean gameOver = false;
int cloudPosX = 80;
void setup() {
size(400, 400);
time = millis();
}
void draw() {
background(230);
drawSky();
drawClouds();
drawMountains();
drawGround();
drawHalfLine();
countDown();
updatePlayerOne();
updatePlayerTwo();
drawPlayerOne();
drawPlayerTwo();
}
void drawSky() {
fill(sky);
rect(0, 0, 400, 200);
}
void drawClouds() {
for (int i = 0; i < 400; i = i+ 180) {
fill(255);
quad(i + cloudPosX - 110, 40, i + cloudPosX - 90, 20, i + cloudPosX - 90, 80, i + cloudPosX - 110, 60);
rect(i + cloudPosX - 90, 20, i + cloudPosX - 70, 80);
quad(i + cloudPosX - 70, 20, i + cloudPosX - 50, 40, i + cloudPosX - 50, 60, i + cloudPosX - 70, 80);
rect(i + cloudPosX - 80, 30, i + cloudPosX, 50);
quad(i + cloudPosX - 80, 50, i + cloudPosX, 50, i + cloudPosX - 20, 70, i + cloudPosX - 80, 70);
quad(i + cloudPosX - 70, 30, i + cloudPosX - 50, 10, i + cloudPosX - 20, 10, i + cloudPosX, 30);
}
}
void keyPressed() {
//and the player presses V
if (key == 'v') {
//start the game
countDownStarted = true;
}
//If the game hasnt ended
if (gameOver == false) {
//and the countdown is finished
if (timeDisplay == 0) {
//If X is pressed, player one moves
if (key == 'x' || key =='X') {
movePlayerOne = true;
}
//If N is pressed, player two moves
if (key == 'n' || key == 'N') {
movePlayerTwo = true;
}
}
} else if (gameOver == true) {
if (key == 'v' || key == 'V') {
playerOneXPos = 140;
playerTwoXPos = 260;
playerOneWin = false;
playerTwoWin = false;
countDownStarted = true;
gameOver=false;
}
}
}
//Draw the Mountains
void drawMountains() {
fill(225, 160, 225);
quad(220, 20, 260, 20, 280, 200, 180, 200);
quad(260, 60, 280, 60, 320, 200, 220, 200);
triangle(280, 100, 380, 200, 260, 200);
quad(380, 0, 400, 0, 400, 200, 360, 200);
triangle(380, 80, 380, 200, 300, 200);
triangle(260, 80, 260, 200, 80, 200);
triangle(120, 80, 220, 200, 120, 200);
quad(105, 65, 130, 65, 140, 200, 65, 200);
quad(60, 90, 80, 90, 100, 200, 20, 200);
quad(20, 10, 40, 10, 60, 200, 0, 200);
quad(0, 50, 10, 50, 40, 200, 0, 200);
}
//Draw the ground
void drawGround() {
fill(250, 240, 180);
rect(0, 200, 400, 400);
}
//Draw the Halfway Line
void drawHalfLine() {
fill(0);
rectMode(CORNERS);
rect(198, 240, 202, 360);
}
//Count Down
void countDown() {
if (countDownStarted == false) {
textSize(32);
fill(0);
text("Press Start", 120, 100);
}
if (countDownStarted == true) {
if (timeDisplay != 0) {
fill(0);
text(timeDisplay, 190, 150);
} else if (timeDisplay == 0) {
if (gameOver == false) {
textSize(32);
fill(0);
text("GO!", 175, 150);
}
}
if (timeDisplay != 0) {
if (millis() - time >= wait) {
println("time until start: " + timeDisplay);
timeDisplay = timeDisplay-1;
time = millis();
}
}
}
}
//Update the First PLayer
void updatePlayerOne() {
// println("player one x position: " + playerOneXPos);
//If the key is pressed move left
if (movePlayerOne == true && playerOneXPos > playerOneWinSpot) {
playerOneXPos = playerOneXPos - 6;
movePlayerOne = false;
}
//If player one reache the win spot
if (playerOneXPos <= playerOneWinSpot) {
textSize(32);
fill(0);
text("Press Start", 120, 100);
textSize(16);
text("Player One Wins", 135, 180);
playerOneWin = true;
gameOver = true;
}
}
//Update the Second Player
void updatePlayerTwo() {
// println("player two x position: " + playerTwoXPos);
//If the key is pressed move right
if (movePlayerTwo == true && playerTwoXPos < playerTwoWinSpot) {
playerTwoXPos = playerTwoXPos + 6;
movePlayerTwo = false;
}
//if player two wins
if (playerTwoXPos >= playerTwoWinSpot) {
playerTwoWin = true;
textSize(32);
fill(0);
text("Press Start", 120, 100);
textSize(16);
text("Player Two Wins", 135, 180);
playerTwoWin = true;
gameOver = true;
}
}
//Draw the First Player
void drawPlayerOne() {
if (playerOneWin == true) {
fill(pantsBrown);
quad(playerOneXPos - 30, 270, playerOneXPos - 40, 270, playerOneXPos - 39, 288, playerOneXPos - 31, 288);
//Boot
fill(hatBrown);
rectMode(CORNERS);
rect(playerOneXPos - 30, 286, playerOneXPos - 40, 290);
quad(playerOneXPos - 31, 288, playerOneXPos - 39, 288, playerOneXPos - 39, 300, playerOneXPos - 34, 300);
quad(playerOneXPos - 20, 297, playerOneXPos - 30, 297, playerOneXPos - 28, 300, playerOneXPos - 20, 300);
quad(playerOneXPos - 20, 297, playerOneXPos - 36, 290, playerOneXPos - 36, 296, playerOneXPos - 28, 300);
//Shirt
fill(shirtDark);
rect(playerOneXPos - 29, 260, playerOneXPos - 41, 275);
//Poncho
fill(ponchoOne);
quad(playerOneXPos - 25, 255, playerOneXPos - 30, 250, playerOneXPos - 40, 250, playerOneXPos - 45, 255);
triangle(playerOneXPos - 25, 255, playerOneXPos - 45, 255, playerOneXPos - 25, 275);
triangle(playerOneXPos - 25, 255, playerOneXPos - 45, 255, playerOneXPos - 45, 275);
//Gun
fill(gun);
rect(playerOneXPos - 15, 262, playerOneXPos - 21, 266);
fill(gun-50);
triangle(playerOneXPos - 21, 262, playerOneXPos - 24, 267, playerOneXPos - 21, 267);
rect(playerOneXPos - 10, 263, playerOneXPos - 16, 265);
//Hand
fill(skin);
rect(playerOneXPos - 22, 266, playerOneXPos - 28, 271);
rect(playerOneXPos - 18, 266, playerOneXPos - 23, 268);
//Arm
fill(shirt);
ellipseMode(CENTER);
ellipse(playerOneXPos - 35, 258, 8, 8);
rect(playerOneXPos - 31, 258, playerOneXPos - 39, 267);
rect(playerOneXPos - 27, 265, playerOneXPos - 39, 272);
//Head
noStroke();
fill(skin);
rectMode(CORNERS);
rect(playerOneXPos - 29, 240, playerOneXPos - 41, 250);
triangle(playerOneXPos - 29, 250, playerOneXPos - 41, 250, playerOneXPos - 29, 252);
triangle(playerOneXPos - 29, 240, playerOneXPos - 29, 247, playerOneXPos - 25, 247);
quad(playerOneXPos - 41, 240, playerOneXPos - 44, 240, playerOneXPos - 44, 244, playerOneXPos - 41, 246);
//Hat
noStroke();
fill(hatBrown);
triangle(playerOneXPos - 29, 230, playerOneXPos - 35, 225, playerOneXPos - 41, 230);
rectMode(CORNERS);
rect(playerOneXPos - 29, 230, playerOneXPos - 41, 235);
quad(playerOneXPos - 20, 240, playerOneXPos - 25, 234, playerOneXPos - 45, 234, playerOneXPos - 50, 240);
//Eye
fill(0);
rect(playerOneXPos - 30, 242, playerOneXPos - 34, 243);
} else {
//Leg
fill(pantsBrown);
quad(playerOneXPos + 30, 270, playerOneXPos + 40, 270, playerOneXPos + 39, 288, playerOneXPos + 31, 288);
//Boot
fill(hatBrown);
rectMode(CORNERS);
rect(playerOneXPos + 30, 286, playerOneXPos + 40, 290);
quad(playerOneXPos + 31, 288, playerOneXPos + 39, 288, playerOneXPos + 39, 300, playerOneXPos + 34, 300);
quad(playerOneXPos + 20, 297, playerOneXPos + 30, 297, playerOneXPos + 28, 300, playerOneXPos + 20, 300);
quad(playerOneXPos + 20, 297, playerOneXPos + 36, 290, playerOneXPos + 36, 296, playerOneXPos + 28, 300);
//Shirt
fill(shirtDark);
rect(playerOneXPos + 29, 260, playerOneXPos + 41, 275);
//Poncho
fill(ponchoOne);
quad(playerOneXPos + 25, 255, playerOneXPos + 30, 250, playerOneXPos + 40, 250, playerOneXPos + 45, 255);
triangle(playerOneXPos + 25, 255, playerOneXPos + 45, 255, playerOneXPos + 25, 275);
triangle(playerOneXPos + 25, 255, playerOneXPos + 45, 255, playerOneXPos + 45, 275);
//Gun
fill(gun);
rect(playerOneXPos + 15, 262, playerOneXPos + 21, 266);
fill(gun-50);
triangle(playerOneXPos + 21, 262, playerOneXPos + 24, 267, playerOneXPos + 21, 267);
rect(playerOneXPos + 10, 263, playerOneXPos + 16, 265);
//Hand
fill(skin);
rect(playerOneXPos + 22, 266, playerOneXPos + 28, 271);
rect(playerOneXPos + 18, 266, playerOneXPos + 23, 268);
//Arm
fill(shirt);
ellipseMode(CENTER);
ellipse(playerOneXPos + 35, 258, 8, 8);
rect(playerOneXPos + 31, 258, playerOneXPos + 39, 267);
rect(playerOneXPos + 27, 265, playerOneXPos + 39, 272);
//Head
noStroke();
fill(skin);
rectMode(CORNERS);
rect(playerOneXPos + 29, 240, playerOneXPos + 41, 250);
triangle(playerOneXPos + 29, 250, playerOneXPos + 41, 250, playerOneXPos + 29, 252);
triangle(playerOneXPos + 29, 240, playerOneXPos + 29, 247, playerOneXPos + 25, 247);
quad(playerOneXPos + 41, 240, playerOneXPos + 44, 240, playerOneXPos + 44, 244, playerOneXPos + 41, 246);
//Hat
noStroke();
fill(hatBrown);
triangle(playerOneXPos + 29, 230, playerOneXPos + 35, 225, playerOneXPos + 41, 230);
rectMode(CORNERS);
rect(playerOneXPos + 29, 230, playerOneXPos + 41, 235);
quad(playerOneXPos + 20, 240, playerOneXPos + 25, 234, playerOneXPos + 45, 234, playerOneXPos + 50, 240);
//Eye
fill(0);
rect(playerOneXPos + 30, 242, playerOneXPos + 34, 243);
}
}
void drawPlayerTwo() {
if (playerTwoWin == true) {
fill(pantsBrown);
quad(playerTwoXPos + 30, 270, playerTwoXPos + 40, 270, playerTwoXPos + 39, 288, playerTwoXPos + 31, 288);
//Boot
fill(hatBrown);
rectMode(CORNERS);
rect(playerTwoXPos + 30, 286, playerTwoXPos + 40, 290);
quad(playerTwoXPos + 31, 288, playerTwoXPos + 39, 288, playerTwoXPos + 39, 300, playerTwoXPos + 34, 300);
quad(playerTwoXPos + 20, 297, playerTwoXPos + 30, 297, playerTwoXPos + 28, 300, playerTwoXPos + 20, 300);
quad(playerTwoXPos + 20, 297, playerTwoXPos + 36, 290, playerTwoXPos + 36, 296, playerTwoXPos + 28, 300);
//Shirt
fill(shirtDark);
rect(playerTwoXPos + 29, 260, playerTwoXPos + 41, 275);
//Poncho
fill(ponchoOne);
quad(playerTwoXPos + 25, 255, playerTwoXPos + 30, 250, playerTwoXPos + 40, 250, playerTwoXPos + 45, 255);
triangle(playerTwoXPos + 25, 255, playerTwoXPos + 45, 255, playerTwoXPos + 25, 275);
triangle(playerTwoXPos + 25, 255, playerTwoXPos + 45, 255, playerTwoXPos + 45, 275);
//Gun
fill(gun);
rect(playerTwoXPos + 15, 262, playerTwoXPos + 21, 266);
fill(gun-50);
triangle(playerTwoXPos + 21, 262, playerTwoXPos + 24, 267, playerTwoXPos + 21, 267);
rect(playerTwoXPos + 10, 263, playerTwoXPos + 16, 265);
//Hand
fill(skin);
rect(playerTwoXPos + 22, 266, playerTwoXPos + 28, 271);
rect(playerTwoXPos + 18, 266, playerTwoXPos + 23, 268);
//Arm
fill(shirt);
ellipseMode(CENTER);
ellipse(playerTwoXPos + 35, 258, 8, 8);
rect(playerTwoXPos + 31, 258, playerTwoXPos + 39, 267);
rect(playerTwoXPos + 27, 265, playerTwoXPos + 39, 272);
//Head
noStroke();
fill(skin);
rectMode(CORNERS);
rect(playerTwoXPos + 29, 240, playerTwoXPos + 41, 250);
triangle(playerTwoXPos + 29, 250, playerTwoXPos + 41, 250, playerTwoXPos + 29, 252);
triangle(playerTwoXPos + 29, 240, playerTwoXPos + 29, 247, playerTwoXPos + 25, 247);
quad(playerTwoXPos + 41, 240, playerTwoXPos + 44, 240, playerTwoXPos + 44, 244, playerTwoXPos + 41, 246);
//Hat
noStroke();
fill(hatBrown);
triangle(playerTwoXPos + 29, 230, playerTwoXPos + 35, 225, playerTwoXPos + 41, 230);
rectMode(CORNERS);
rect(playerTwoXPos + 29, 230, playerTwoXPos + 41, 235);
quad(playerTwoXPos + 20, 240, playerTwoXPos + 25, 234, playerTwoXPos + 45, 234, playerTwoXPos + 50, 240);
//Eye
fill(0);
rect(playerTwoXPos + 30, 242, playerTwoXPos + 34, 243);
} else {
//Leg
fill(pantsBrown);
quad(playerTwoXPos - 30, 270, playerTwoXPos - 40, 270, playerTwoXPos - 39, 288, playerTwoXPos - 31, 288);
//Boot
fill(hatBrown);
rectMode(CORNERS);
rect(playerTwoXPos - 30, 286, playerTwoXPos - 40, 290);
quad(playerTwoXPos - 31, 288, playerTwoXPos - 39, 288, playerTwoXPos - 39, 300, playerTwoXPos - 34, 300);
quad(playerTwoXPos - 20, 297, playerTwoXPos - 30, 297, playerTwoXPos - 28, 300, playerTwoXPos - 20, 300);
quad(playerTwoXPos - 20, 297, playerTwoXPos - 36, 290, playerTwoXPos - 36, 296, playerTwoXPos - 28, 300);
//Shirt
fill(shirtDark);
rect(playerTwoXPos - 29, 260, playerTwoXPos - 41, 275);
//Poncho
fill(ponchoTwo);
quad(playerTwoXPos - 25, 255, playerTwoXPos - 30, 250, playerTwoXPos - 40, 250, playerTwoXPos - 45, 255);
triangle(playerTwoXPos - 25, 255, playerTwoXPos - 45, 255, playerTwoXPos - 25, 275);
triangle(playerTwoXPos - 25, 255, playerTwoXPos - 45, 255, playerTwoXPos - 45, 275);
//Gun
fill(gun);
rect(playerTwoXPos - 15, 262, playerTwoXPos - 21, 266);
fill(gun-50);
triangle(playerTwoXPos - 21, 262, playerTwoXPos - 24, 267, playerTwoXPos - 21, 267);
rect(playerTwoXPos - 10, 263, playerTwoXPos - 16, 265);
//Hand
fill(skin);
rect(playerTwoXPos - 22, 266, playerTwoXPos - 28, 271);
rect(playerTwoXPos - 18, 266, playerTwoXPos - 23, 268);
//Arm
fill(shirt);
ellipseMode(CENTER);
ellipse(playerTwoXPos - 35, 258, 8, 8);
rect(playerTwoXPos - 31, 258, playerTwoXPos - 39, 267);
rect(playerTwoXPos - 27, 265, playerTwoXPos - 39, 272);
//Head
noStroke();
fill(skin);
rectMode(CORNERS);
rect(playerTwoXPos - 29, 240, playerTwoXPos - 41, 250);
triangle(playerTwoXPos - 29, 250, playerTwoXPos - 41, 250, playerTwoXPos - 29, 252);
triangle(playerTwoXPos - 29, 240, playerTwoXPos - 29, 247, playerTwoXPos - 25, 247);
quad(playerTwoXPos - 41, 240, playerTwoXPos - 44, 240, playerTwoXPos - 44, 244, playerTwoXPos - 41, 246);
//Hat
noStroke();
fill(hatBrown);
triangle(playerTwoXPos - 29, 230, playerTwoXPos - 35, 225, playerTwoXPos - 41, 230);
rectMode(CORNERS);
rect(playerTwoXPos - 29, 230, playerTwoXPos - 41, 235);
quad(playerTwoXPos - 20, 240, playerTwoXPos - 25, 234, playerTwoXPos - 45, 234, playerTwoXPos - 50, 240);
//Eye
fill(0);
rect(playerTwoXPos - 30, 242, playerTwoXPos - 34, 243);
}
}