鼠标单击图像消失后显示在新的随机位置。我该如何查看新职位? (加工)

时间:2017-11-18 19:24:25

标签: random position processing

我需要处理代码的帮助。它实际上是一个简短易用的代码,但我是编程的初学者,所以对我来说似乎一切都很困难...... :(

我的目标是......

  • 点击图片。
  • 单击鼠标后,图像将消失并显示在新的随机位置。
  • 然后我应该可以在新的随机位置点击图像,它应该再次执行相同的操作:消失并显示在新的随机位置。等等。

我已经编写了一些代码(见下文),但它无法正常工作。如果有人能帮助我找出我的代码有什么问题,我将非常感激。非常感谢你提前! :)

这是我的代码:

PImage pic; 

// Declare variables for the picture
float pic_x; 
float pic_y;
float pic_r = 100;

float pic_x_new = random(0, 400);
float pic_y_new = random(0, 400);

boolean mouseOverPic;

void setup(){
 size(500,500);
 background(0,100,0);

 //loading the picture
 pic = loadImage("pic.png");
 image(pic, pic_x, pic_y, pic_r, pic_r); 
}


void draw(){

 mouseOverPic = mouseX <= pic.width 
 && mouseX >= pic_x 
 && mouseY <= pic.height 
 && mouseY >= pic_y;

if (mousePressed && mouseOverPic) {
  background(100);
  image(pic, pic_x_new, pic_y_new, pic_r, pic_r);  
 }  
}

2 个答案:

答案 0 :(得分:1)

请您尝试更具体,而不是说您的代码无法正常运行?您是否尝试过debugging your code来缩小问题范围?哪一行代码的行为与您的预期不同?

您所拥有的代码并没有多大意义,因为您只需在点击图像时绘制图像。这听起来并不像你想做的那样。并且您的碰撞检测代码不正确。尝试使用一些示例值运行您的代码,以确切了解它正在做什么。我在Processing available here中编写了一个关于碰撞检测的教程。

要解决这个问题,你真的需要break your problem down into smaller pieces并一次一张。例如:

  • 你能创建一个简单的示例程序,只显示一个硬编码的矩形,如果鼠标在里面会改变颜色吗?
  • 你可以这样做,这样每次运行程序时矩形都会显示在一个随机位置吗?
  • 然后你可以点击矩形改变位置吗?

如果您遇到特定步骤,请缩小问题范围并在新问题中发布MCVE。祝你好运。

答案 1 :(得分:0)

我相信你会对pic_x进行测试,但会使用pic_x_new来绘制图片(与y相同)。您应该使用相同的var来放置和测试图像。

另一种方法是创建一个函数来测试鼠标对图像传递新值作为参数。