-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBox.pde
executable file
·94 lines (78 loc) · 2.16 KB
/
Box.pde
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/*
ボールを入れるべき場所のボックス
*/
class Box{
int x;
int y;
int sizeX;
int sizeY;
int num;
boolean fillFlag;
Box(int x, int y, int sizeX, int sizeY, int num){
this.x = x;
this.y = y;
this.sizeX = sizeX;
this.sizeY = sizeY;
this.num = num;
fillFlag = false;
}
void show(){
if(fillFlag == false)
fill(255,255,0,100);
else
fill(122,122,0,100);
rect(x,y,sizeX,sizeY);
fill(0, 100);
textSize(30);
textAlign(CENTER, CENTER);
text(num, x +sizeX/2, y +sizeY/2);
}
void collision( Ball[] ball , int allBallNum){
boolean[] fillFlags = new boolean[ball.length]; //ボールの数が要素数の配列を宣言
for( int i=0; i< allBallNum; i++){ //全てのボールに対して
if(this.pointSquareMatch( ball[i].getX(), ball[i].getY(), x, y, sizeX, sizeY)
&& num == ball[i].getNum() ) // 番号が同じの箱に触れているか判定する
fillFlags[i] = true;
else
fillFlags[i] = false;
}
if( this.totalFillFlag(fillFlags, true, ball.length) == this.totalBallNum(ball, num, allBallNum) )
fillFlag = true;
else
fillFlag = false;
}
//点と長方形の当たり判定の結果を返すメソッド
boolean pointSquareMatch(float x, float y, float sqX, float sqY, float sizeX, float sizeY){
boolean result;
if ( x > sqX && x < sqX +sizeX && y > sqY && y < sqY +sizeY)
result = true;
else
result = false;
return result;
}
// fillFlagsのtrueかfalseの合計を返すメソッド
int totalFillFlag(boolean[] fillFlags, boolean tf , int num){
int number = 0;
for(int i=0; i < num; i++){
if(fillFlags[i] == tf)
number ++;
}
return number;
}
// 番号がnumであるボールの数を返すメソッド
int totalBallNum(Ball[] ball, int num ,int allBallNum){
int number = 0;
for(int i=0; i < allBallNum; i++){
if(ball[i].getNum() == num)
number ++;
}
return number;
}
// 以下getterとsetter
int getNum(){
return num;
}
boolean getFillFlag(){
return fillFlag;
}
}