PushPush!!!
兩人互動遊戲.
藍色玩家使用Kinect操作,紅色玩家使用鍵盤操作
先將對方血量歸零或是推出場外者獲勝
自己退出場外也算對方獲勝請注意XD
場上隨機掉落物品可增加或扣血量
開發工具:Processing+FAAST+Kinect
江依紋 黃鈺婷共同製作
##開發過程與討論
初步構想圖
起初的程式碼,動作判定構想

程式碼與各個變數代表什麼
Kinect動作設定
Demo的稿子XD 遊戲的詳細解說
##心得
江依紋 (字超亂030
黃鈺婷
##Processing程式碼
int weigh=1300,high=650;
import ddf.minim.*;
AudioPlayer player;
Minim minim;
//*//*//Turn Stage
int stage=0;//imgBG[i];i=stage;
int Note=0;//1P hand Up=1,2P hand Up=2,3=imgBG[1] Look Note;
int Start=0;//1P hand Down=1,2P hand Down=2,3=imgBG[2] GameStart;
//*//*//Player1
int player1=1,p1blood=400;
//int p1nowBlood=p1blood;
int player1x=weigh/10,player1y=high/10*6;//Start sit
int p1nowX=player1x,p1nowY=player1y;//Now Stay
//*//*//Player2
int player2=1,p2blood=400,blood2x=0;
//int p1nowBlood=p1blood;
int player2x=weigh/10*8-25,player2y=high/10*6;
int p2nowX=player2x,p2nowY=player2y;
//*//*//Other
int Hit=122,back=51,Blood=50;
int BGM=0;
int ToolsI=1,THit1=40,THit2=45;
int ToolsType=0;
float[]ToolsX=new float[100];
float[]ToolsY=new float[100];
float APmoveY=0;
float CHmoveY=0;
PImage[]BG=new PImage[3];
PImage[]Player1=new PImage[6];
PImage[]Player2=new PImage[6];
PImage[]Tools=new PImage[2];
void setup()
{
size(weigh,high);
background(0,0,0);
minim = new Minim(this);
player = minim.loadFile("kaito.mp3");
player.play();
BG[0]=loadImage("bg1.png");//KaiTo ******
BG[1]=loadImage("note.png");//Note
BG[2]=loadImage("bg3.png");//GameStart ******
//imgPlayer1[0]=loadImage(".png");//Ready ********
Player1[1]=loadImage("L1.png");//Walk
Player1[2]=loadImage("L2.png");//Push
Player1[3]=loadImage("L3.png");//Fly
Player1[4]=loadImage("Lw.png");//Win
//imgPlayer1[5]=loadImage(".png");//Lose ********
//imgPlayer2[0]=loadImage(".png");//Ready
Player2[1]=loadImage("R1.png");//Walk
Player2[2]=loadImage("R2.png");//Push
Player2[3]=loadImage("R3.png");//Fly
Player2[4]=loadImage("Rw.png");//Win
//imgPlayer2[3]=loadImage(".png");//Lose *********
Tools[0]=loadImage("A1.png");//apple
Tools[1]=loadImage("ch.png");//chicken
//draw apples
for(int i=0;i<ToolsI;i++)
{
newTools(i);
}
}
//*//*//Tools random sit
void newTools(int i)
{
ToolsType=int(random(2));
ToolsY[i]=-random(200);
ToolsX[i]=100+random(weigh-200);
}
void draw()
{
//*//*//KaiTo
if(stage==0)
{
image(BG[0],0,0);
image(Player1[player1],p1nowX,p1nowY);
image(Player2[player2],p2nowX,p2nowY);
if(Note==3){stage=1;Note=0;}
if(Start==3){stage=2;Start=0;}
println("Note:"+Note+" Start:"+Start);
}
//*//*//Look Note
else if(stage==1)
{
background(255,255,255);
image(BG[1],370,30);
if(Start==3){stage=2;Start=0;}
println("Note:"+Note+" Start:"+Start);
}
//*//*//Game Start
else if(stage==2)
{
if(BGM==0)
{
player.close();
player = minim.loadFile("moPush.mp3");
player.play();
BGM=1;
}
image(BG[2],0,0);
image(Player1[player1],p1nowX,p1nowY);
image(Player2[player2],p2nowX,p2nowY);
fill(255,0,0);
rect(0,0,p1blood,50);
rect(1300-p2blood,0,p2blood,50);
//*//*//Tools draw & move
for(int i=0;i<ToolsI;i++)
{
image(Tools[ToolsType],ToolsX[i],ToolsY[i],40,60);
ToolsY[i]+=4;
if(ToolsY[i]>600)newTools(i);
//*//*//Player1&Tools Hit
if(dist(p1nowX,p1nowY,ToolsX[i],ToolsY[i])<THit2&&dist(p1nowX,p1nowY,ToolsX[i],ToolsY[i])>THit1)
{
if(p1blood>0&&ToolsType==0){p1blood=p1blood-Blood/2;}
else if(p1blood<400&&ToolsType==1){p1blood=p1blood+Blood/2;}
}
//*//*//Player1&Tools Hit
else if(dist(p2nowX,p2nowY,ToolsX[i],ToolsY[i])<THit2&&dist(p2nowX,p2nowY,ToolsX[i],ToolsY[i])>THit1)
{
if(p2blood>0&&ToolsType==0){p2blood=p2blood-Blood/2;}
else if(p2blood<400&&ToolsType==1){p2blood=p2blood+Blood/2;}
}
}
//*//*//1P&2P Hit
if(dist(p1nowX,p1nowY,p2nowX,p2nowY)<Hit&&dist(p1nowX,p1nowY,p2nowX,p2nowY)>back)
{
if(player1==1&&player2==2 || player1==3&&player2==2)
{
player1=3;p1nowX-=50;
image(Player1[player1],p1nowX,p1nowY);
p1blood=p1blood-Blood;
}
else if(player1==2&&player2==1 || player1==2&&player2==3)
{
player2=3;p2nowX+=50;
image(Player2[player2],p2nowX,p2nowY);
p2blood=p2blood-Blood;
blood2x=blood2x+Blood;
}
}
//*//*//Out of boder or Blood<0 GameOver
else if(p2nowX>1162||p2nowX<0||p2blood<=0)
{
player1=4;
stage=3;
}
else if(p1nowX>1162||p1nowX<0||p1blood<=0)
{
player2=4;
stage=3;
}
println("P1:"+player1+" P2:"+player2+" Dist"+dist(p1nowX,p1nowY,p2nowX,p2nowY)+" P1blood:"+p1blood+" P2blood:"+p2blood+" p1nowX:"+p1nowX+" p2nowX:"+p2nowX);
}
else if(stage==3)
{
if(BGM==1)
{
player.close();
player = minim.loadFile("win.mp3");
player.play();
BGM=2;
}
image(BG[2],0,0);
textSize(60);
fill(136,0,21);
if(player1==4)
{
image(Player1[player1],weigh/2-200,player1y);
text("Player1 Win !!",weigh/2-200,250);
// imageMode(CENTER);
}
else if(player2==4)
{
image(Player2[player2],weigh/2-250,player1y-20);
text("Player2 Win !!",weigh/2-200,250);
// imageMode(CENTER);
}
}
}
void keyPressed()
{
//*//*//1P Handup
if(key=='w')
{
if(stage==0&&Note==0)Note=1;
else if(stage==0&&Note==2)Note=3;
}
//*//*//2P Handup
if(keyCode==UP)
{
if(stage==0&&Note==0)Note=2;
else if(stage==0&&Note==1)Note=3;
}
//*//*//1P Ready
if(key=='s')
{
if(stage==0&&Start==0)Start=1;
else if(stage==0&&Start==2)Start=3;
else if(stage==1&&Start==0)Start=1;
else if(stage==1&&Start==2)Start=3;
}
//*//*//2P Ready
if(keyCode==DOWN)
{
if(stage==0&&Start==0)Start=2;
else if(stage==0&&Start==1)Start=3;
else if(stage==1&&Start==0)Start=2;
else if(stage==1&&Start==1)Start=3;
}
//*//*//1P Walk→
if(key=='d')
{
if (stage==2)
{
player1=1;
p1nowX+=5;
}
}
//*//*//1P Walk←
if(key=='a')
{
if (stage==2)
{
player1=1;
p1nowX-=5;
}
}
//*//*//2P Walk←
if(keyCode==LEFT)
{
if (stage==2)
{
player2=1;
p2nowX-=10;
}
}
//*//*//2P Walk→
if(keyCode==RIGHT)
{
if (stage==2)
{
player2=1;
p2nowX+=10;
}
}
//*//*//1P Push
if(key=='r')
{
if (stage==2)
{
player1=2;
}
}
//*//*//2P Push
if(key=='0')
{
if (stage==2)
{
player2=2;
}
}
}
##FAAST(Kinect動作指令)









沒有留言:
張貼留言