遊戲玩法:
玩家必須利用旁邊的箭頭,想辦法讓貓咪老師到達最後終點(crown),且在最短的步數之內,分數越高,每吃到一顆星星加10分,分數從100分開始算,每多走一步路,或多用一個箭頭扣一分。
void setup(){
minim = new Minim(this);
player = minim.loadFile("walking by the sea.mp3");
player.play();
size(700,600);
start=loadImage("start.png");
start.resize(100,100);
up=loadImage("up.png");
down=loadImage("down.png");
left=loadImage("left.png");
right=loadImage("right.png");
delete=loadImage("X.png");
delete.resize(50,50);
host=loadImage("HAT.png");
host.resize(100,100);
goal=loadImage("goal.png");
goal.resize(700,500);
gameover=loadImage("Game_Over.png");
gameover.resize(700,600);
star=loadImage("host.png");
star.resize(100,100);
crown=loadImage("crown.png");
crown.resize(100,100);
}
void draw()
{
background(0, 102, 153);
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
rect(i*100,j*100,100,100);
}
}
if(go<1)
image(host,0,0);
image(up,600,0);
image(down,600,100);
image(left,600,200);
image(right,600,300);
image(delete,600,400);
image(start,600,500);
image(crown,400,400);
if(count==0){
star();
count++;
}
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
if(starCount[i][j]==1) image(star,i*100,j*100);
}
}
if(mY<100 && mX>600){
image(up,mouseX,mouseY); s=1;}
else if(mY<200 && mX>600){
image(down,mouseX,mouseY); s=2;}
else if(mY<300 && mX>600){
image(left,mouseX,mouseY); s=3;}
else if(mY<400 && mX>600){
image(right,mouseX,mouseY); s=4;}
else if(mY<500 && mX>600){
image(delete,mouseX,mouseY); s=5;}
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
if(block[i][j]==1)
image(up,i*100+25,j*100+25);
else if(block[i][j]==2)
image(down,i*100+25,j*100+25);
else if(block[i][j]==3)
image(left,i*100+25,j*100+25);
else if(block[i][j]==4)
image(right,i*100+25,j*100+25);
else
block[i][j]=0;
}
}
if(mouseX>600 && mouseY>500 && mousePressed)
{
go=1;
}
if(go==1 && finish==0)
{
hostMove(block[countX][countY]);
print(countX+","+countY+","+sum+" ");
}
if(finish==1)
{
image(host,countX*100,countY*100);
image(gameover,0,0);
if(mousePressed==true)
restart();
}
if(finish==2)
{
image(host,countX*100,countY*100);
tint(255, 126);
image(goal,0,0);
noTint();
textSize(32);
text("your score="+sum, 200, 550);
text("CLICK TO RESTART",200,580);
if(mousePressed==true)
restart();
}
}
void mousePressed()
{
mX=mouseX;mY=mouseY;
if(mY<500 && mX<500 && s>0)
{
block[(int)mX/100][(int)mY/100]=s;
}
s=0;
}
void hostMove(int x)
{
if(x>0)
g=x;
if(countX+countY!=8 && sum>0){
switch(g)
{
case 1:{
if(countY>0){
image(host,(countX*100),(countY*100-100));
bonous();
countY--;}
sum--;break;}
case 2:{
if(countY<4){
image(host,(countX*100),(countY*100+100));
bonous();
countY++;}
sum--;break;}
case 3:{
if(countX>0){
image(host,(countX*100-100),(countY*100));
bonous();
countX--;}
sum--;break;}
case 4:{
if(countX<4){
image(host,(countX*100+100),(countY*100));
bonous();
countX++;}
sum--;break;}
}
}
else if(sum==0)
finish=1;
else
finish=2;
}
void star(){
for(int i=0;i<5;i++){
rabonousX=(int)(random(0,500)/100);
rabonousY=(int)(random(0,500)/100);
if(rabonousX==0 && rabonousY==0){
starCount[rabonousX+1][rabonousY+1]=1;
}
else if(starCount[rabonousX][rabonousY]==1) i--;
else if(rabonousX==4 && rabonousY==4) i--;
else starCount[rabonousX][rabonousY]=1;
}
}
void bonous(){
if(starCount[countX][countY]==1) sum+=10;
starCount[countX][countY]=0;
}
void restart()
{
mX=0;mY=0;
countX=0;countY=0;go=0;g=2;sum=100;finish=0;count=0;
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
starCount[i][j]=0;
block[i][j]=0;
}
}
}
沒有留言:
張貼留言