当前位置: 首页 > 知识库问答 >
问题:

如何使函数一步接一步地工作

郗缪文
2023-03-14
java prettyprint-override">long lastTime = 0;

int[] xpos = new int[1];
int[] ypos = new int[1];
int playerCount = 0;
long[] posCase = new long[50];
int[] playerNo = new int[50];
int delay = 500;
boolean f = true;
int count = 0;
int border = 20; // border on one side is 20 both is 40
int sqsize = 96;

void setup() {
  size(1000, 1000);
  xpos[playerCount] = border;
  ypos[playerCount] = border;
  frameRate(5);
}

void draw() {
  background(#767C7C);
  fill(255, 255, 255);

  // for start
  for (int w = 0; w < 10; w++) {
    int newBorderWidth = border + w*sqsize;

    for (int i = 0; i < 10; i++) {

      int newBorderLength = border + i*sqsize;
      fill(#F6F9EF);
      stroke(#BABAB6);
      strokeWeight(0.5);
      rect(newBorderLength, newBorderWidth, sqsize, sqsize);
    }
  }
  // for end

  switch(int(posCase[playerCount])) {

  case 1 :
    if (xpos[playerCount] < border + 9*sqsize)
      xpos[playerCount] = xpos[playerCount] + sqsize;
    posCase[playerCount] = 0;
    println("case 1");
    break;

  case 2 :
    if (xpos[playerCount] > border)
      xpos[playerCount] = xpos[playerCount] - sqsize;
    posCase[playerCount] = 0;
    println("case 2");
    break; 

  case 3 :
    if (ypos[playerCount] > border)
      ypos[playerCount] = ypos[playerCount] - sqsize;
    posCase[playerCount] = 0;
    println("case 4");
    break;

  case 4 :
    if (ypos[playerCount] < border + 9*sqsize)
      ypos[playerCount] = ypos[playerCount] + sqsize;
    posCase[playerCount] = 0;
    println("case 3");
    break;
  }

  fill(255);
  rect(xpos[0], ypos[0], sqsize, sqsize);
}

void rechts() {
  posCase[playerCount] = 1;
  delay(delay);
}

void links() {
  posCase[playerCount] = 2;
  delay(delay);
}

void oben() {
  posCase[playerCount] = 3;
  delay(delay);
}

void unten() {
  posCase[playerCount] = 4;
  delay(delay);
}  

共有1个答案

翁阳曜
2023-03-14

我做了一些改变,使您可以使用WASD键移动方块。通过创建一个二维数组来保存电路板的状态,可以大大简化整个代码。

不过,我将继续使用最初的实现,只添加使您能够继续工作所需的部分。重要的是添加keyPressed()方法(参见文档)和替换行

rect(xpos[0], ypos[0], sqsize, sqsize);

rect(xpos[playerCount], ypos[playerCount], sqsize, sqsize);
long lastTime = 0;

int[] xpos = new int[1];
int[] ypos = new int[1];
int playerCount = 0;
long[] posCase = new long[50];
int[] playerNo = new int[50];
int delay = 500;
boolean f = true;
int count = 0;
int border = 20; // border on one side is 20 both is 40
int sqsize = 96;

void setup() {
  size(1000, 1000);
  xpos[playerCount] = border;
  ypos[playerCount] = border;
  frameRate(5);
}

void draw() {
  background(#767C7C);
  fill(255, 255, 255);

  // for start
  for (int w = 0; w < 10; w++) {
    int newBorderWidth = border + w*sqsize;

    for (int i = 0; i < 10; i++) {
      int newBorderLength = border + i*sqsize;
      fill(#F6F9EF);
      stroke(#BABAB6);
      strokeWeight(0.5);
      rect(newBorderLength, newBorderWidth, sqsize, sqsize);
    }
  }
  // for end

  switch(int(posCase[playerCount])) {

  case 1 :
    if (xpos[playerCount] < border + 9*sqsize)
      xpos[playerCount] = xpos[playerCount] + sqsize;
    posCase[playerCount] = 0;
    println("case 1");
    break;
  case 2 :
    if (xpos[playerCount] > border)
      xpos[playerCount] = xpos[playerCount] - sqsize;
    posCase[playerCount] = 0;
    println("case 2");
    break; 

  case 3 :
    if (ypos[playerCount] > border)
      ypos[playerCount] = ypos[playerCount] - sqsize;
    posCase[playerCount] = 0;
    println("case 4");
    break;

  case 4 :
    if (ypos[playerCount] < border + 9*sqsize)
      ypos[playerCount] = ypos[playerCount] + sqsize;
    posCase[playerCount] = 0;
    println("case 3");
    break;
  }

  fill(255);
  rect(xpos[playerCount], ypos[playerCount], sqsize, sqsize);
}

void rechts() {
  posCase[playerCount] = 1;
  delay(delay);
}

void links() {
  posCase[playerCount] = 2;
  delay(delay);
}

void oben() {
  posCase[playerCount] = 3;
  delay(delay);
}

void unten() {
  posCase[playerCount] = 4;
  delay(delay);
}  

void keyPressed() {
  switch(key) {
  case 'a':
  case 'A':
    links();
    break;
  case 'd':
  case 'D':
    rechts();
    break;
  case 'w':
  case 'W':
    oben();
    break;
  case 's':
  case 'S':
    unten();
    break;
  }
}
 类似资料:
  • 我无法理解页面翻译机制。我保存在yml文件翻译中的特定语言的翻译可以通过两种方式获得: 在会话中保留当前选定的翻译 只有在什么时候语言才会改变?我创建了一个单独的控制器,使用GET将参数传递给该控制器,并在控制器中执行代码? 为了不在任何控制器中编写相同的代码,我应该有一个只更改语言并将页面返回到上一个页面的控制器。仅通过重定向返回到上一页不会使用新语言传递请求,只有文档中给出的类使用默认语言。

  • 我想对一个网站进行压力测试。主要目的是在并发用户数和命中视频数/秒(RPS)方面找到性能下降点。 我使用了ultimate thread group,并将用户数量设置为200,加速时间为200秒。我已经为终极线程组添加了吞吐量整形计时器,并将每秒请求数设置为8。(如果我每秒钟只有一次采样器点击,那就控制得很好,是8次点击/秒。如果我有一个以上的采样器点击不受控制,他们甚至达到20,25,40等..

  • 问题内容: 随着去除传统的C风格的for循环雨燕3.0的,我该怎么办下面? 在Python中,for-in控制流语句具有可选的step值: 但是Swift范围运算符似乎没有等效项: 问题答案: “步骤”的Swift同义词是“跨步”(stride)- 实际上是可跨步协议,由许多常见的数值类型实现。 等效于: 或者,要获取等价的,请使用变体: 请注意,返回/ ,这符合,所以任何你可以用序列做,你可以用

  • 我被要求创建一个名为的对象,它可以链接函数和。 例如: 在此场景中,它首先打印早餐,等待3秒钟,打印午餐,然后在3秒钟后打印晚餐。 我试过这样的东西,但没用。我错过了什么?

  • 先创建规范 在 NEI 平台 上点击“工程规范 -> 新建规范”,输入规范名称,比如 TodoSpec,点击“保存” 点击“工程结构”,新建一个文件,文件名为 ``,在右边选择“数据模型列表填充” 将 JavaBean 文件的示例模板中的内容复制到新创建的文件内容中 然后创建工程 点击“项目管理”,在某个项目组下创建一个项目,比如 TodoWeb 在刚才创建的 TodoWeb 项目下,点击“资源管

  • 问题内容: 如何从异步函数返回值?我试图喜欢这个 它给了我, 问题答案: 您不能超出范围。为了获得预期的结果,您应该将其包装到异步IIFE中,即 样品。 有关更多信息 由于返回一个Promise,因此可以将其省略,如下所示: 然后像以前一样做