xxxxxxxxxx
295
//Scene1
//Scene2
let pan,cookState,fire,plate,rawegg;
let catchfire,fires,exit,start;
let direction=90;
let ignite;
let node;
let angle=0;
let degree=0;
let level;
let egg;
let counter=0;
let timer=40;
let drawEgg=false;
let fireOn=false;
let overCooked=false;
let iscooking=false;
let coefficient =1;
let font;
let addEgg;
let textString=["Click the egg to crack one on the pan."," "];
let startover = false;
let startCounter=0;
//scene switch
let mode =0;
function preload(){
// cookedEgg=loadAnimation('assets/egg0.png','assets/egg7.png');
node =loadImage('assets/node.png');
font = loadFont('font/VT323-Regular.ttf');
plate =loadImage('assets/plate.png');
rawegg= loadImage('assets/egg.png');
}
function setup() {
createCanvas(400, 400);
frameRate(30);
rectMode(CENTER);
textAlign(CENTER);
imageMode(CENTER);
textFont(font);
//draw stove fire
fire= createSprite(width/2,height/2);
fire.addAnimation('fire','assets/fire0.png','assets/fire2.png');
fire.scale=(0);
//drawpan
pan=createSprite(width/2,height/2);
pan.addAnimation('pan','assets/pan1.png','assets/pan3.png');
pan.scale=(3,3);
//group of fires onFire
catchfire=new Group();
//plate
exit= createSprite(350,350);
exit.addImage('plate',plate);
//pick and crack egg
start = createSprite(350,35);
start.addImage('egg',rawegg);
// eggState=new Group();
cookState= createSprite(width/2,height/2,20,20);
cookState.addAnimation('Eggs','assets/egg0.png','assets/egg3.png');
cookState.addAnimation('CookedEgg','assets/egg3.png','assets/egg7.png');
cookState.addAnimation('OvercookedEgg','assets/overcooked0.png','assets/overcooked7.png');
cookState.scale=(2);
}
function draw() {
background("#3A8FB7");
textSize(10);
//drawstove
stroke(0);
strokeWeight(5);
fill(255);
rect(width/2,height/2,width,height/3);
noFill();
ellipse(width/2,height/2,100,100);
//pan
if(fireOn){
pan.position.x+=random(-3,3);
pan.position.y+=random(-3,3);
}else{
pan.position.x=pan.position.x;
pan.position.y=pan.position.y;
}
//egg switch state;
if(fire.scale>0){
fireOn=true;
}else{
fireOn=false;
}
//when you move your pan out of the stove
if(dist(pan.position.x,pan.position.y,width/2,height/2)>80){
iscooking=false;
print('iscooking: '+iscooking);
}else {
iscooking =true;
}
// print(cookingEgg);
if(fireOn&&drawEgg&&iscooking&&overCooked===false){
iscooking=true;
let rate =30*coefficient;
// print(rate);
if(frameCount%rate===0){
timer-=1;
}
}
// print('fireOn:'+fireOn+',DrawEgg:'+drawEgg+',overCooked:'+overCooked);
cookState.position.x=pan.position.x;
cookState.position.y=pan.position.y;
//timer and cooking stage raw->cooked->overcooked
if(timer<=40&&timer>30){
cookState.changeAnimation('Eggs');
}else if(timer<=30&&timer>0){
cookState.changeAnimation('CookedEgg');
cookState.animation.goToFrame(cookState.animation.getLastFrame());
textSize(15);
noStroke();
fill("#F17C67");
text("Cooked!!! Move it to the plate",150+random(-1,1),60+random(-1,1));
if(dist(cookState.position.x,cookState.position.y,exit.position.x,exit.position.y)<15){
//next Scene()
mode =3;//swtich to scene3
print(mode);
}
}else if(timer<=0){
cookState.changeAnimation('OvercookedEgg');
cookState.animation.goToFrame(cookState.animation.getLastFrame());
cookingEgg=false;
overCooked=true;
coefficient=0;
}
// print(catchfire.length);
//drawSprite(cookState);
if(catchfire.length!==0){
coefficient=1/3;
textSize(20);
noStroke();
fill(0);
text("On Fire",150+random(-1,1),50+random(-1,1));
}else{
coefficient=1;
}
noStroke();
fill(0);
textSize(20);
text("Time: "+timer,30,20);
//draw allSprites
drawSprite(exit);
drawSprite(start);
drawSprite(fire);
drawSprite(pan);
//draw switch
textSize(10);
push();
translate(50,350);
noStroke();
fill(0);
text("OFF",0,-32);
text("Mid",40,0);
text("Large",0,40);
rotate(angle);
image(node,0,0,64,64);
pop();
text("Put your food on the plate.",340,390);
if(drawEgg===false){
text(textString[0],320,60);
}else{
text(textString[1],320,60);
}
//swtich turning
if(angle<=0){
fire.scale=(0,0);
}else{
level=map(degree,0,180,2,4);
fire.scale=(level);
// print(level);
}
//fires
if(level>=3){
fires=createSprite(random(width),random(height));
fires.addAnimation('fire','assets/fire0.png','assets/fire2.png');
fires.scale=(random(0.5,1));
fires.addToGroup(catchfire);
}
for(let i=0;i<catchfire.length;i++){
let extFire= catchfire[i];
extFire.onMousePressed=function(){
this.remove();
}
if(catchfire.length>10){
catchfire[i].remove();
}
}
drawSprites(catchfire);
if(drawEgg){
drawSprite(cookState);
}
if(overCooked){
//startover= true;
//drawEgg=false;
textSize(20);
fill("#F17C67");
text("You Lose!!Click the egg to stat over.",width/2,height/2);
}
if(!startover){
fireOn=false;
overCooked=false;
iscooking=false;
level=0;
// catchfire.length=0;
// fires.remove();
timer=40;
pan.position.x=width/2;
pan.position.y=height/2;
angle=0;
level=0;
}
}
function mouseDragged(){
//put pan on the stove
if(dist(pan.position.x,pan.position.y,mouseX,mouseY)<80){
pan.position.x=mouseX;
pan.position.y=mouseY;
}
//rotation of node calculation
let v= createVector(mouseX-50,mouseY-350);
if(dist(mouseX,mouseY,50,350)<64){
angle =v.heading();
degree= degrees(angle).toFixed(2);
// print(degree);
}
}
function mousePressed(){
//draw egg
//crack eggs
if(dist(mouseX,mouseY,start.position.x,start.position.y)<30){
// oneEgg=createSprite(mouseX,mouseY);
// oneEgg.addImage('tobecooked',rawegg);
startCounter +=1;
startover=!startover;
print(startover,startCounter);
if(startCounter%2===0){
startover=false;
drawEgg=false;
}else{
drawEgg=true;
}
}
}