【问题标题】:How to rotate this arm upwards?如何向上旋转这个手臂?
【发布时间】:2021-11-12 10:45:05
【问题描述】:

我正在使用名为 Processing 的程序学习 Java。 但是,我不明白为什么我的代码不能正常工作。 我做了一个有这个问题的手臂,当我按住鼠标按钮时它应该向上或向下旋转,但是当我按住鼠标左键时它才起作用,当我按住鼠标右键时它不起作用。 问题是我不知道我的代码的问题如下。

float angle=0;
float angleDirection=1;
float speed=0.005;

void setup(){
  size(800,600);
}

void draw(){
  background(255,255,255);
  stroke(20,20,255);
  
  translate(400,300);
  rotate(angle);
  strokeWeight(18);
  line(0,0,140,0);
  pushMatrix();
  
  translate(140,0);
  rotate(angle*2.0);
  strokeWeight(14);
  line(0,0,100,0);
  
  translate(100,0);
  rotate(angle*2.5);
  strokeWeight(10);
  line(0,0,60,0);
  
  popMatrix();
  rotate(-angle*2.0);
  strokeWeight(18);
  line(0,0,-140,0);
  
  translate(-140,0);
  rotate(-angle*2.0);
  strokeWeight(14);
  line(0,0,-100,0);
  
  translate(-100,0);
  rotate(-angle*2.5);
  strokeWeight(10);
  line(0,0,-60,0);
  
if(mousePressed){
  if(mouseButton==LEFT){
     angle=angle+speed*angleDirection;
     if((angle>QUARTER_PI)||(angle<0)){
      angle=QUARTER_PI;
      }
      
   if(mouseButton==RIGHT){ 
       angle=angle+speed*angleDirection;
     if((angle>QUARTER_PI)||(angle<0)){
       angleDirection=-angleDirection;
       angle=QUARTER_PI;
       }
      }
     }
    }
}

【问题讨论】:

  • processing.org 与 Java 有什么关系?
  • @HiranChaudhuri Processing is written in java 您可以将其用作 java 库。最小的编辑器和财富或实用功能使以更简单的形式绘制/原型程序变得容易。 (有其他语言的处理端口,如 JS (p5.js)、Python 等,但主要/原始实现是在 java 中)。
  • 嗯。 Java 是用 C++ 编写的。我们不应该也加上那个标签吗?
  • @HiranChaudhuri 就我个人而言,我会将 c++ 和 java 标签分开,否则将很难管理。有点牵强,但想象一下在没有成为 C++ 和 Java 程序员的情况下参加 Java 面试,并被要求用 C++ 编写代码,因为 Java 是用 C++ 编写的。如果您好奇,可以在meta 上提问。我确信存在 c++ 和 java 标签都有效的问题,例如在为 c++ 库创建 java 绑定时(通过 jni/jna/swig 等)。我的观点是,在这个问题的上下文中,没有 c++ 标签的 java 标签就足够了。
  • 由于处理本身就是一种语言,我相信即使是 java 标签也太多了。出于同样的原因,C++ 对于 Java 面试来说太过分了。另一方面,如果您坚持应该提及它,因为处理是用 java 编程的,那么您上面提到的端口呢?

标签: java processing


【解决方案1】:

您快到了,但不小心犯了一个逻辑错误:右键条件嵌套在左键条件中。由于mouseButton 只能是左或右(但不能同时是两者),所以永远不会触发右键条件。只需将其移到左键条件之外:

if (mousePressed) {
    if (mouseButton==LEFT) {
      angle=angle+speed*angleDirection;
      if ((angle>QUARTER_PI)||(angle<0)) {
        angle=QUARTER_PI;
      }
    }
    if (mouseButton==RIGHT) {
      angle=angle+speed*angleDirection;
      if ((angle>QUARTER_PI)||(angle<0)) {
        angleDirection=-angleDirection;
        angle=QUARTER_PI;
      }
    }
  }

(编辑 > 自动格式化(Ctrl+T / CMD + T)将更容易发现{} 问题)

学习愉快!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    • 2019-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    相关资源
    最近更新 更多