User interface 旋转处理后的位置变化

User interface 旋转处理后的位置变化,user-interface,rotation,processing,translation,User Interface,Rotation,Processing,Translation,在我的计算机科学课上,我正在用java处理程序做一个井字游戏。在我的程序中,在最右边有一个状态栏,上面写着该轮到哪个玩家,谁赢了,谁输了。这个状态栏也是垂直放置的,所以在我的代码中,我正在旋转它,虽然它旋转正确,但它导致了另一个问题。状态栏出现在游戏屏幕上的某个区域,但在放置一个X或O后,它会移动点,我不确定如何修复此问题。在放置另一个工件后,它会移动第二次,然后第三次,最后确定它在我不希望的区域中的位置。这是我关于文本和旋转的代码 void updateStatus(String status

在我的计算机科学课上,我正在用java处理程序做一个井字游戏。在我的程序中,在最右边有一个状态栏,上面写着该轮到哪个玩家,谁赢了,谁输了。这个状态栏也是垂直放置的,所以在我的代码中,我正在旋转它,虽然它旋转正确,但它导致了另一个问题。状态栏出现在游戏屏幕上的某个区域,但在放置一个X或O后,它会移动点,我不确定如何修复此问题。在放置另一个工件后,它会移动第二次,然后第三次,最后确定它在我不希望的区域中的位置。这是我关于文本和旋转的代码

void updateStatus(String status) { // function to update the status message
  fill(0);
  rect(statusX, sbh, width, height-1);
  stroke(#FFFFFF);
  strokeWeight(4);
  line(statusX, sbh, statusX, screenH); // Status line
  fill(255);

  String fullStatus = "It is player "+status+"'s turn";
  //String fullStatus = "It is player X's turn";
  float statusTxtX = width*15/16, statusTxtY = height*2.5/7;

  pushMatrix();
  translate(statusTxtX, statusTxtY);
  rotate(HALF_PI);
  textSize(55);
  textFont(mainFont);
  text(fullStatus, 0, 0);
  //textDraw(status, mainFont, height, 255, CENTER, CENTER, statusX, height*3/12, width, height*1/2);
  popMatrix();
}

问题在于文本对齐。placing()函数中有一个,textDraw()函数中有一个。禁用这些选项后,文本将保留在同一位置。但是,这会弄乱X和O,因此您需要在跟踪文本对齐设置的位置方面做一些工作


作为一个更一般的提示(因为您正在学习):将您的第一个重点放在功能上。例如,您可以使用println()和numpad作为输入构建TicTacToe。当游戏机制运行时,你可以添加一个漂亮的用户界面。同时执行这两项操作通常会导致代码混乱,容易出现难以调试的错误。我自己也曾多次撞上那堵墙;)

你能发布一个吗?你在绘制X/O时也使用translate()吗?谢谢你的回复,我的代码在这个github repo中,@J.D.,我在绘制X/O时不翻译我的代码,我只在使用状态栏时平移和旋转,这是因为状态栏是垂直的。有关更多信息,请访问我的github repo.,感谢您的回复,我尝试按照您的指示删除文本对齐,但当我这样做时,状态仍在移动至少一次。从placing()删除文本对齐时;,它额外停止移动2次。但是,当我尝试将其从放置位置删除时,我被迫重新编码我的放置位置,并对我打印的所有文本进行文本对齐(虽然是的,它确实会删除状态的移动,并将其保持在原来的位置)。有没有一种方法可以在不使其余代码失去平衡的情况下对此进行调试?您可以从
文本的位置放置新的文本对齐(fullStatus,0,0);
,这将阻止它移动。我建议您尝试此操作,但请注意,根据您的代码,if可能会影响其他文本()。谢谢你的回复,我明白你的意思,我不知道如何同时为这两个问题找到一个解决方案,我必须尽快为这两个问题找到一个解决方案,以便在不改变任何其他文本的情况下使其正常工作。感谢你花时间和精力帮助我找到这个问题的解决方案。如果可能,我将我也将很快发布另一个问题,关于一个我不太了解或如何解决的问题。如果您能够回答这个问题,那就太好了,如果您不能回答,那也很好,谢谢您的帮助。:)我找到了解决方案,我只需要调整状态,它就停止移动了,感谢您的回复和帮助!:)