gpt4 book ai didi

java - 标准绘图中线的长度限制

转载 作者:太空宇宙 更新时间:2023-11-04 07:53:53 24 4
gpt4 key购买 nike

我目前有一个带有网格和将在网格中的点之间绘制的线的程序。它使用标准绘图。我希望限制线的长度,以便它们只能从相邻点开始,但不知道我会如何做到这一点。

谢谢

StdDraw.setCanvasSize(400, 400);
StdDraw.setXscale(0, 10);
StdDraw.setYscale(0, 10);

//dots
double radius = .15;
double spacing = 2.0;

for (int i = 0; i <= 4; i++) {
for (int j = 0; j <= 4; j++) {
StdDraw.setPenColor(StdDraw.GRAY);
StdDraw.filledCircle(i * spacing, j * spacing, radius );
}
}
StdDraw.setPenColor(StdDraw.BLUE);
StdDraw.text(0, 9.5, player1_name);
StdDraw.setPenColor(StdDraw.RED);
StdDraw.text(5, 9.5, player2_name);
int turn = 1;
for (int i = 0; i <= 40; i++) {
if (turn % 2 == 0)
StdDraw.setPenColor(StdDraw.RED);
else
StdDraw.setPenColor(StdDraw.BLUE);

while(!StdDraw.mousePressed()) { }
double x = StdDraw.mouseX();
double y = StdDraw.mouseY();
System.out.println(x + " " + y);
StdDraw.setPenRadius(.01);
StdDraw.show(200);
while(!StdDraw.mousePressed()) { }
double x2 = StdDraw.mouseX();
double y2 = StdDraw.mouseY();
StdDraw.show(200);
double xround = Math.round(x);
double yround = Math.round(y);
double x2round = Math.round(x2);
double y2round = Math.round(y2);
int xroundb = (int) xround;
int yroundb = (int) yround;
int x2roundb = (int) x2round;
int y2roundb = (int) y2round;
StdDraw.line(xround, yround, x2round, y2round);
System.out.println("Line Drawn");
StdDraw.show();

最佳答案

啊我明白了。您并不是在询问正确工作的实际 line 方法,您想要的逻辑是,如果未选择相邻点,则不会调用 line

首先我们需要知道允许哪些相邻连接。那就是我们可以有垂直吗?水平的?对角线?我将逐一解释以防万一

所以你有spacing = 2.0。嗯,这应该足以检查邻接性。

if (Math.abs(x2round - xround) > spacing) {
// don't draw
} else if (Math.abs(y2round - yround) > spacing)) {
// don't draw
} else if (Math.abs(y2round - yround) > 0.0) && Math.abs(x2round - xround) > 0.0) {
// don't draw if diagonal connections are forbidden
// if diagonal is allowed, remove this else if condition
} else {
StdDraw.line(xround, yround, x2round, y2round);
}

所以如果你不画画,那么你就必须强制执行你的游戏逻辑。也许玩家会失去回合。也许玩家还有另一次选择相邻点的机会。它是由你决定。由于舍入,比较 double 值总是有点疯狂,因此您可能希望选择一个非常小的 epsilon double 值,而不是使用 0.0,以确保捕获所有情况。

关于java - 标准绘图中线的长度限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13920368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com