2016-11-04 218 views
0

此作业必须是波普艺术,并且我已决定要使用pokeballs。我们必须使用2 for循环:一个用于顶行,一个用于底部并创建一个函数。我遇到的问题是如何在顶行中创建2个更多的pokeballs(总共有6个pokeballs:3个在顶部,3个在底部),这些都是随机的颜色,同时使用函数调用来实现。在for循环中调用的函数

var RANDCOL = random(0, 400); 
var XBALL = 65; 
var YBALL = 108; 

//dividing tiles 
fill(250, 0, 0); 
rect(0, 0, 130, 200); 
fill(0, 187, 255); 
rect(131, 0, 137, 200); 
fill(0, 0, 0); 
rect(269, 0, 130, 200); 
fill(167, 158, 235); 
rect(0, 200, 131, 199); 
fill(46, 184, 101); 
rect(131, 200, 137, 199); 
fill(255, 0, 0); 
rect(269, 200, 130, 199); 

//pokeball specifications 
var pokeBall = function(x) { 
    stroke(158, 214, 235); 
    ellipse(XBALL, YBALL, 99, 97); 
    fill(0, 0, 0); 
    stroke(0, 0, 0); 
    line(15, 109, 56, 109); 
    line(116, 109, 72, 109); 
    ellipse(64, 108, 19, 16); 
}; 

//loop for top row 
for(var i = 0; i < 3; i++) { 
    var x = i * 134; 
    fill(RANDCOL); 
    pokeBall(); 
} 
+0

为什么是用于VAR X,也可以指定您的预期输出 –

+0

var x = i * 134应该是第一个pokeball,并将其循环2次到其他2个方块,并且函数中的x参数是我仅仅在玩的东西,以查看它是否执行了任何操作。这是一个谷歌形象,它应该是什么样子,除了会有3行不是2. [image](https://www.google.com/search?q=pop+art+pokeballs&source=lnms&tbm=isch&sa= X&ved = 0ahUKEwiczKzsk47QAhUUSGMKHZ6BA7kQ_AUICCgB&biw = 1920&bih = 943#imgrc = mruoTaTG6KZ_lM%3A) – Smokeyflo

+0

这真的只是我有麻烦的循环。 (var y = 3; y <= 3; y ++){var x = 3; x <= 3; x ++){fill(RANDCOL); pokeBall(); } }' – Smokeyflo

回答

0

首先,这代码不能运行,因为你使用的处理功能被称为setup()函数之前。请尝试将代码发布为MCVE,我们可以复制并粘贴运行。

无论如何,要实现您的目标,您的pokeBall()函数需要指定球的位置的参数,并且您需要根据这些坐标来绘制球。你现在通过使用XBALLYBALL变量来做差不多,但是你需要将这些变量转换为参数并从你所描述的for循环中传入。

下面是一个例子。比方说,我有这样的功能:

function drawBall(){ 
    ellipse(100, 150, 20, 20); 
} 

这个函数总是打圈的坐标100,150。我可以改变,要使用参数,而不是:

function drawBall(ballX, ballY){ 
    ellipse(ballX, ballY, 20, 20); 
} 

然后我可以调用该函数并传递参数绘制在多个地方圈:

drawBall(100, 200); 
drawBall(200, 300); 
drawBall(60, 20); 
+0

谢谢!是否有可能在for循环中只调用一次函数,所以循环会绘制3次,而不是必须调用函数3次?因为我认为3次调用该函数会失去进行for循环的目的,不是吗? – Smokeyflo

+0

就像我试图做到这一点,所以pokeball分散了134个x单元,但for循环根本不执行,我尝试了许多不同的东西。 (var x = 0; x <= 3; x ++){var x_one = pokeBall * 134; (随机(0,400),随机(0,400),随机(0,400),随机(0,400)); pokeBall(68,107,x_one);' – Smokeyflo

+0

@Smokeyflo我三次调用函数只是一个例子。你可以绝对用'for'循环来调用它。 –