旋转处理后的位置变更

时间:2018-12-06 20:24:00

标签: user-interface rotation processing translation

我正在计算机科学课上使用Processing-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();
}

1 个答案:

答案 0 :(得分:2)

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

作为一个更一般的技巧(因为您正在学习):首先将重点放在功能上。例如,您可以使用println()和数字键盘作为输入来构建TicTacToe。当游戏机制发挥作用时,您可以添加漂亮的用户界面。同时执行这两个操作通常会使混乱的代码易于产生难以调试的错误。我本人曾多次撞到那堵墙;)