我有一个数学问题。我在做一个游戏,用户是一个12岁的孩子。孩子的目标是计算绘制形状的面积。在简单和中等模式下,形状被给出并且被硬编码,因此它们不是硬核。在硬模式中,5个坐标是随机生成的,这里就是问题出现的地方。我需要制作一个可以由12岁孩子计算的区域。随机坐标会出现各种困难的情况,例如交叉点,或连接其他两点的线上的奇点等等。有什么方法可以计算和避免这些问题吗?数学计算:比较坐标以使合理的形状
这里是我的代码,这使得随机点+吸引它在应用点网格:
private void gameHard()
{
//distance between points is 65 pixels, the numbers that are generated are 1-8
x1=(genRandomInt())*65;
x2=(genRandomInt())*65;
x3=(genRandomInt())*65;
x4=(genRandomInt())*65;
x5=(genRandomInt())*65;
y1=(genRandomInt())*65;
y2=(genRandomInt())*65;
y3=(genRandomInt())*65;
y4=(genRandomInt())*65;
y5=(genRandomInt())*65;
compareRCoordinates();
areaImage = new JPanel()
{
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.WHITE);
g2.fillRect(0,0,780,650);
g2.setColor(Color.BLACK);
int xnum = 65, ynum = 65;
for(ynum=65;ynum<650;ynum=ynum+65)
{
int x=0, y=0;
for(xnum = 65;xnum<780;xnum=xnum+65)
{
x = xnum-9;
y = ynum-9;
g2.fillOval(x,y,18,18);
}
xnum=xnum+65;
}
g2.setColor(Color.RED);
g2.setStroke(new BasicStroke(6));
g2.drawLine(x1,y1,x2,y2);
g2.drawLine(x2,y2,x3,y3);
g2.drawLine(x3,y3,x4,y4);
g2.drawLine(x4,y4,x5,y5);
g2.drawLine(x5,y5,x1,y1);
}
};
areaImage.setBounds(20,20,780,650);
areaImage.setBorder(BorderFactory.createLineBorder(Color.black));
this.add(areaImage);
roundsPlayed++;
}
你打算包含哪些类型的形状?它总是长方形吗?平行四边形,梯形,菱形?三角形?界?还是你想要这个硬模式有五个坐标的凸或凹形状? – mbomb007
查看http://stackoverflow.com/questions/19238608/randomly-generating-a-shape使用Java2D的简单随机形状的例子 – copeg
@ mbomb007一般任何形状的5分;) –