float [][] randomball;
float [][] vball;
float mcX, mcY;
int num = 20;
boolean flag = false;
int x=0;
int y=0;
int []xx=new int [8];
int []yy=new int [5];
int []x2=new int [8];
int []y2=new int [5];
void drawflag(float x, float y)
{
ellipse(x, y, 20, 20);
line(x, y, x, y-30);
triangle(x, y-30, x, y-20, x+15, y-25);
}
boolean crash(float pX, float pY, float mX, float mY)
{
float dist = sqrt((pX-mX)*(pX-mX)+(pY-mY)*(pY-mY));
if (dist <= 20)
{
return true;
}
return false;
}
boolean flagcrash(float pX, float pY, float mX, float mY)
{
float R = sqrt((pX-mX)*(pX-mX)+(pY-mY)*(pY-mY));
if (R <= 20)
{
return true;
}
return false;
}
void setup()
{
size(800, 500);
//ランダムボールの初位置を設定
randomball = new float[num][2];
for (int i = 0; i < num; i++)
{
randomball[i][0] = random(800);
randomball[i][1] = random(500);
}
//ボールの位置を初期化する
mcX = 50;
mcY = 50;
//ランダムボールの速度を設定
vball = new float[num][2];
for (int i = 0; i < num; i++)
{
vball[i][0] = random(-1, 1);
vball[i][1] = random(-1, 1);
}
for (int i = 0; i<8; i++)
{
xx[i]=50+i*100;
x2[i]=0;
}
for (int i = 0; i<5; i++)
{
yy[i]=50+i*100;
y2[i]=0;
}
}
void draw()
{
if (flag == true)
{
background(255, 255, 0);
flag = false;
} else
{
background(255, 255, 255);
}
if (mcX < mouseX)
{
mcX += 2;
} else
{
mcX -= 2;
}
if (mcY < mouseY)
{
mcY += 2;
} else
{
mcY -= 2;
}
fill(0);
ellipse(mcX, mcY, 20, 20);
fill(255, 0, 0);
for (int i = 0; i < num; i++)
{
if (crash(randomball[i][0], randomball[i][1], mcX, mcY))
{
flag = true;
}
ellipse(randomball[i][0], randomball[i][1], 20, 20);
randomball[i][0] = randomball[i][0] + vball[i][0];
randomball[i][1] = randomball[i][1] + vball[i][1];
if (randomball[i][0] < 10)
{
vball[i][0]=-vball[i][0];
} else if (randomball[i][0] > 790)
{
vball[i][0]=-vball[i][0];
}
if (randomball[i][1] < 10)
{
vball[i][1]=-vball[i][1];
} else if (randomball[i][1] > 490)
{
vball[i][1]=-vball[i][1];
}
}
for (int i = 0; i<8; i++)
{
for (int p = 0; p<5; p++)
{
if (flagcrash(mcX, mcY, xx[i], yy[p]))
{
x2[i]=i;
y2[p]=p;
}
fill(240, 240, 240);
drawflag(i*100+50, p*100+50);
fill(0, 255, 0);
drawflag(x2[i]*100+50, y2[p]*100+50);
}
}
}
2019年06月15日 06点06分
3