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

如何在与圆的加工中创建积分系统?

咸琪
2023-03-14

因此,目标是每次锤子或水桶落下时添加一个黑色圆圈而不击中人,然后每次人进门时添加4个圆圈,当第一行圆圈被填满时,它将进入第二行,直到整个屏幕被填满,然后重新设置。而且,随着人被锤子或水桶击中,会出现一整排的红圈。我不知道该怎么做,谢谢。

// all the variables I need for two tools
int hammerPos = 0; 
int hammerVel = 1; 
int hammerPending = 0;
int bucketPos = 0; 
int bucketVel = 2; 
int bucketPending = 0;

int mrPos;
int jump = 60;
boolean doorOpen = true;

long timeAt;    // the time at which the door was last opened or closed
long waitTime; // the time to wait (in total) until the door opens next

void setup() {
  size(512, 348);
  mrPos = width/8;
  frameRate(30);
  waitTime = int(random(3000, 8000));
}

void draw() {
  if (millis() > timeAt + waitTime) {  // calculation will tell me if current time (millis) has gone past the last time the door opened plus waitTime
    doorOpen = !doorOpen;
    timeAt = millis();                // reset last opening time to now
    waitTime = int(random(3000, 8000));// choose new waiting time
  }

  background(159, 172, 173);
  rectMode(CORNERS);
  ellipseMode(CORNERS);
  noStroke();

  house();
  mrg();
  hazard();
  score();
}

void hazard() { 
  fill(0);
  stroke(0);
  strokeWeight(6);
  line(128, hammerPos+10, 148, hammerPos-12);
  strokeWeight(4);
  line(125, hammerPos+13, 129, hammerPos+11);
  strokeWeight(8);
  line(115, hammerPos+5, 130, hammerPos+20);

  // draw bucket
  fill(0);
  noStroke();
  triangle(167, bucketPos-5, 187, bucketPos-12, 188, bucketPos+12);
  triangle(167, bucketPos-5, 187, bucketPos+12, 169, bucketPos+14);
  noFill();
  stroke(0);
  strokeWeight(4);
  ellipse(183, bucketPos-11, 195, bucketPos+10);

  if (bucketPos >height) {
    bucketPos=0;
  }

  if (hammerPos>height) {
    hammerPos=0;
  }


  if (hammerPos > 240 && hammerPos < 300 && mrPos == width/4) {
    mrPos = width/8;
  }
  if (bucketPos > 240 && bucketPos < 300 && mrPos == 3*width/8) {
    mrPos = width/8;
  }


  // animate all automatically moving objects.. first update pending then decide if there is a jump this frame
  hammerPending = hammerPending + hammerVel;
  bucketPending = bucketPending + bucketVel;
  if (hammerPending > jump) {
    hammerPos = hammerPos + hammerPending;
    hammerPending = 0;
  }
  if (bucketPending > jump) {
    bucketPos = bucketPos + bucketPending;
    bucketPending = 0;
  }
}


void score() {
  if (hammerPos>height) {
    ellipse(40, 40, 40, 40);
  }
}




//draw house
void house() {
  strokeWeight(20);
  stroke(0);
  line(402, 206, 490, 169);
  line(490, 169, 512, 179);
  strokeWeight(2);
  noFill();
  line(411, 213, 411, 305);
  rect(419, 210, 468, 295);

  if (doorOpen) {
    line(479, 206, 499, 199);
    line(499, 199, 499, 314);
    line(499, 314, 478, 302);
    fill(0);
    noStroke();
    triangle(476, 225, 493, 219, 493, 243);
    triangle(476, 225, 493, 243, 476, 240);

    ellipse(487, 255, 493, 263);
    arc(499, 255, 507, 262, 3*HALF_PI, HALF_PI, CHORD);
  } else {
    fill(0);
    noStroke();
    rect(432, 225, 453, 243, 2);
    ellipse(425, 255, 431, 263);
  }
}



// draw MrGW
void mrg() {
  noStroke();
  fill(0);
  ellipse(mrPos-13, 232, mrPos+17, 263);
  fill(159, 172, 173);
  ellipse(mrPos+3, 250, mrPos+17, 260);
  fill(0);
  triangle(mrPos+2, 258, mrPos-11, 278, mrPos+1, 285);
}

void keyPressed() {
  if (keyCode == RIGHT && (mrPos < 7*(width/8)) && doorOpen) { // mr gw is moving right and the door is open
    mrPos = mrPos + width/8;
  } else if (keyCode == RIGHT && (mrPos < 6*(width/8))) {      // mr gw is moving right not including last slot
    mrPos = mrPos + width/8;
  } else if (keyCode == LEFT && (mrPos > width/8)) {           // mr gw is moving left.
    mrPos = mrPos - width/8;
  }
}

共有1个答案

岳俊晖
2023-03-14

基本上,您需要一个变量来表示点/圈的数量:points。圆圈本身应该在void循环中绘制,也许有两个for循环(见下文)。

此外,您还需要定义哪些圆圈应该是红色的。在下面的示例中,我使用了一个布尔数组,它为每个圆圈定义了是否应该是红色的。因此,如果第一个圆圈必须是红色的,则必须将redpoint[0]设置为true······

int i=0;
for(int y=10; y<height-10; y+=20) {
  for(int x=10; x<width-10; x+=20) {
    if(redPoint[i] == true) {
      fill(255,0,0);
    } else {
      fill(0);
    }
    if(i<points) {
      ellipse(x,y,15,15);
    }
    i++;
  }
}
 类似资料:
  • (附:我不太懂加工)

  • 我使用以下命令将数据从csv文件加载到Neo4j中。输入文件很大,有数百万行。当这个查询运行时,我可以查询节点的数量并检查进度。但是一旦它停止创建节点,我想它就会继续创建关系。但我无法检查这一步的进展。 我有两个疑问: 它是否处理每一行文件的命令,即为每一行源码创建节点和关系等?? 或者它一次创建所有节点,然后创建关系。 下面是加载文件的密码器。

  • 问题内容: 我想制作一个圆形的大拇指和大拇指向下的按钮。 我应该使用ImageView还是Button作为超类? 我将如何在Swift中做到这一点? 问题答案: 这是一个圆形按钮示例: 斯威夫特3: Swift 2.x:

  • 问题内容: 在课堂上,我们都是“学习”数据库,每个人都在使用Access。厌倦了这一点,我试图做该类其余部分的工作,但是要使用MySQL的原始SQL命令而不是使用Access。 我已经设法创建数据库和表,但是现在如何在两个表之间建立关系? 如果我有两个这样的表: 和 如何在两个表之间创建“关系”?我希望为每个帐户“分配”一个customer_id(以指示谁拥有它)。 问题答案: 如果表是innod

  • 我试图在android中创建一个具有圆形边缘的视图。到目前为止,我找到的解决方案是定义一个具有圆角的形状,并将其用作该视图的背景。 下面是我所做的,定义一个可绘制的,如下所示: 现在我用它作为我的布局背景,如下所示: 这工作非常好,我可以看到视图有圆形的边缘。 但是我的布局中有许多其他的子视图,比如ImageView或MapView。当我在上面的布局中放置时,图像的角落不会被裁剪/裁剪,而是显示为

  • 我是Android系统的初学者。为了学习,我使用android Studio开发了以下UI。 屏幕上的矩形是一个文本视图,圆形是一个我可以用手绘制的区域。 textview和circle的数量是动态的。