利用Leap Motion 抓取手指位置去進行簡易翻牌遊戲。
遇到困難為1. 翻牌時需要時間控制(停留多久時間翻面),但會因電腦設備問題造成leg問題。
2. 要怎樣讓牌兩個兩個配對翻面(用陣列解決)。
*程式碼
import de.voidplus.leapmotion.*;
LeapMotion leap;
import ddf.minim.*;
Minim minim;
AudioPlayer song;
PImage img, img2, img3, img4, img5, img6, img7;
int a[]=new int[12];
int n=0;
int b=0;
int d[]= new int[12];
boolean c=true;
int num[]=new int[2];
int time[]=new int[12];
int fingerX=-1, fingerY=-1;
int Stime=30;
void setup() {
size(900, 900);
leap = new LeapMotion(this);
background(255);
img = loadImage("1.jpg");
img2 = loadImage("2.jpg");
img3 = loadImage("3.jpg");
img4 = loadImage("4.jpg");
img5 = loadImage("5.jpg");
img6 = loadImage("6.jpg");
img7 = loadImage("back.jpg");
d[0]=1;
d[1]=2;
d[2]=3;
d[3]=4;
d[4]=5;
d[5]=6;
d[6]=5;
d[7]=1;
d[8]=4;
d[9]=2;
d[10]=6;
d[11]=3;
timeCount(-1);
minim = new Minim(this);
song = minim.loadFile("music.mp3");
song.play();
}
void draw() {
background(0);
image(img, 0, 0);
image(img2, 220, 0);
image(img3, 440, 0);
image(img4, 660, 0);
image(img5, 0, 300);
image(img6, 220, 300);
image(img5, 440, 300);
image(img, 660, 300);
image(img4, 0, 600);
image(img2, 220, 600);
image(img6, 440, 600);
image(img3, 660, 600);
if (a[0]==0)image(img7, 0, 0); //back of card
if (a[1]==0)image(img7, 220, 0);
if (a[2]==0)image(img7, 440, 0);
if (a[3]==0)image(img7, 660, 0);
if (a[4]==0)image(img7, 0, 300);
if (a[5]==0)image(img7, 220, 300);
if (a[6]==0)image(img7, 440, 300);
if (a[7]==0)image(img7, 660, 300);
if (a[8]==0)image(img7, 0, 600);
if (a[9]==0)image(img7, 220, 600);
if (a[10]==0)image(img7, 440, 600);
if (a[11]==0)image(img7, 660, 600);
for (Hand hand : leap.getHands()) {
for (Finger finger : hand.getFingers()) {
stroke(#FF0303);
strokeWeight(50);
finger.draw();
fingerX=(int)finger.getPosition().x;
fingerY=(int)finger.getPosition().y;
//println(fingerX+" "+fingerY);
}
}
if (c==false) {
if (Stime--==0) {
Stime=30;
if (d[num[0]]==d[num[1]]) {
a[num[0]]=1;
a[num[1]]=1;
time[num[1]]=60;
}
else {
a[num[0]]=0;
a[num[1]]=0;
time[num[1]]=60;
}
b=0;
c=true;
}
}
else {
if (fingerX>=0 && fingerX<=200 && fingerY>=0 && fingerY <=270) {
if (time[0]==0 && a[0]!=1) {
a[0]=1;
num[b]=0;
b++;
}
timeCount(0);
time[0]--;
}
else if (fingerX>=220 && fingerX<=420 && fingerY>=0 && fingerY <=270) {
if (time[1]==0 && a[1]!=1) {
a[1]=1;
num[b]=1;
b++;
}
timeCount(1);
time[1]--;
}
else if (fingerX>=440 && fingerX<=640 && fingerY>=0 && fingerY <=270) {
if (time[2]==0 && a[2]!=1) {
a[2]=1;
num[b]=2;
b++;
}
timeCount(2);
time[2]--;
}
else if (fingerX>=660 && fingerX<=860 && fingerY>=0 && fingerY <=270) {
if (time[3]==0 && a[3]!=1) {
a[3]=1;
num[b]=3;
b++;
}
timeCount(3);
time[3]--;
}
else if (fingerX>=0 && fingerX<=200 && fingerY>=300 && fingerY <=570) {
if (time[4]==0 && a[4]!=1) {
a[4]=1;
num[b]=4;
b++;
}
timeCount(4);
time[4]--;
}
else if (fingerX>=220 && fingerX<=420 && fingerY>=300 && fingerY <=570) {
if (time[5]==0 && a[5]!=1) {
a[5]=1;
num[b]=5;
b++;
}
timeCount(5);
time[5]--;
}
else if (fingerX>=440 && fingerX<=640 && fingerY>=300 && fingerY <=570) {
if (time[6]==0 && a[6]!=1) {
a[6]=1;
num[b]=6;
b++;
}
timeCount(6);
time[6]--;
}
else if (fingerX>=660 && fingerX<=860 && fingerY>=300 && fingerY <=570) {
if (time[7]==0 && a[7]!=1) {
a[7]=1;
num[b]=7;
b++;
}
timeCount(7);
time[7]--;
}
else if (fingerX>=0 && fingerX<=200 && fingerY>=600 && fingerY <=870) {
if (time[8]==0 && a[8]!=1) {
a[8]=1;
num[b]=8;
b++;
}
timeCount(8);
time[8]--;
}
else if (fingerX>=220 && fingerX<=420 && fingerY>=600 && fingerY <=870) {
if (time[9]==0 && a[9]!=1) {
a[9]=1;
num[b]=9;
b++;
}
timeCount(9);
time[9]--;
}
else if (fingerX>=440 && fingerX<=640 && fingerY>=600 && fingerY <=870) {
if (time[10]==0 && a[10]!=1) {
a[10]=1;
num[b]=10;
b++;
}
timeCount(10);
time[10]--;
}
else if (fingerX>=660 && fingerX<=860 && fingerY>=600 && fingerY <=870) {
if (time[11]==0 && a[11]!=1) {
a[11]=1;
num[b]=11;
b++;
}
timeCount(11);
time[11]--;
}
if (b==2)c=false;
}
}
void timeCount(int I) {
for (int i=0;i<12;i++) {
if (i!=I)time[i]=30;
}
}
*影片Demo
沒有留言:
張貼留言