求助,想做一个小球躲避随机小球同时过旗门的游戏。可以有偿
processing吧
全部回复
仅看楼主
level 3
2019年06月15日 06点06分 1
level 3
自己代码已经写了一半了 就最后变绿那个地方不知道错在哪 一直有问题
2019年06月15日 06点06分 2
level 3
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
level 3
代码如上,说是有偿也给不了多少钱,学生想做个作业不太懂而已。希望会的大神帮帮忙~
2019年06月15日 06点06分 4
level 3
喔喔喔 求大佬
2019年06月15日 06点06分 5
level 1
老哥
2019年06月18日 01点06分 6
搞定了 谢谢大家帮忙
2019年06月19日 00点06分
level 3
最后用了个多重配列来分开记录坐标就可以单独弄了
2019年06月19日 00点06分 8
改了一个大括号的位置就可以了
2019年06月19日 06点06分
level 1
老哥 你QQ多少 我想问你点问题
2019年06月20日 08点06分 9
额 我只是学校要做个作业 瞎弄的而已 processing没学多久。。。
2019年06月23日 16点06分
level 8
好厉害哦👍
2019年06月22日 11点06分 10
1