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

处理:当通过椭圆的中点时,增加一个计数器

墨星鹏
2023-03-14
void draw()
{
  background(255);
  fill(0);

  for(int i = 0; i < barriers.length; i++) {
    // Draw barriers
    ellipse(barriers[i][0], barriers[i][1], 50, 50);

    // Did we pass a barrier? (doesn't work!)
    if(y >= barriers[i][0] - 1 && y <= barriers[i][1] + 1) {
      counter++;
    }
  }

  // Draw the square
  rect(x, y, 25, 25);

  // Draw counter alongside square
  fill(255, 0, 0);
  text(counter, x + 25, y - 5);

  // Reset
  if(y < height) {
    y+=5;
  } else {
    y = -25;
    counter = 0;
  }
}

共有1个答案

范建华
2023-03-14

请看这部分代码:

if(y >= barriers[i][0] - 1 && y <= barriers[i][1] + 1) {
  counter++;
}

draw()函数每秒触发60次,因此这段代码将每秒触发60次。这意味着当您通过一个障碍时,counter变量将每秒递增60倍!

大概你只希望每一个屏障增加一次计数器。有许多方法可以做到这一点。您可以使用另一个数据结构来跟踪每个障碍是否已经通过,然后只检查尚未通过的障碍。或者你可以跟踪方块以前的位置,然后用它来确定方块何时开始通过障碍物。

 类似资料:
  • 在下图中,我想把分数作为绿色椭圆内的文本。但是,不管循环中的和函数的顺序如何,椭圆都会在文本上绘制。有人能提出原因吗?我的循环如下所示。

  • 本文向大家介绍请使用canvas画一个椭圆相关面试题,主要包含被问及请使用canvas画一个椭圆时的应答技巧和注意事项,需要的朋友参考一下 <script> var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); ctx.beginPath(); ctx.arc(95,50,40,0,2*Math.PI); ct

  • 这个题是从叶落为重生的一篇博客上看到的,觉得挺有想法,就整理了下,做个记录。 记录思路,不考虑兼容性。 题干如题,实现一个椭圆可点区域 分析与思考 思路一:DOM + border-radius 看到题后我的第一反应就是这个,但发现题主并没有采用border-radius的方式,以为这样行不通,自己试了下,是可以的。这个思路很简单,也很实用,就普通用border-radius实现一个椭圆的div,

  • 基础示例 <vuep template="#example"></vuep> <script v-pre type="text/x-template" id="example"> <template> <div class="amap-page-container"> <el-amap vid="amapDemo" :zoom="zoom" :center="c

  • SVG 椭圆 - <ellipse> 实例 1 <ellipse> 元素是用来创建一个椭圆: 椭圆与圆很相似。不同之处在于椭圆有不同的x和y半径,而圆的x和y半径是相同的: 下面是SVG代码:<svg xmlns="http://www.w3.org/2000/svg" version="1.1"> <ellipse cx="300" cy="80" rx="100" ry="50" style=

  • 问题内容: 背景/意图: 因此,我将从头开始创建一个事件跟踪器,并对如何执行操作有一些想法,但是我不确定继续进行数据库操作的最佳方法。我感兴趣的一件事是允许这些事件完全动态,但同时允许报告相关事件计数器。 例如,所有国家都按操作系统细分。理想的效果是: 美国事件数 iOS-在美国发生的事件数 Android-在美国发生的事件数 CA事件数 iOS-CA中发生的事件数 Android-CA中发生的事