2010-04-07 36 views
0

如果有人能指出我为这个代码的正确方向为我的assigment我真的很感激。公共课DiscoLight帮助

我已经粘贴了需要完成的整个代码,但我需要以下方法的帮助:public void changeColour(Circle aCircle)这意味着允许随机更改圆的颜色,如果为0,圆的亮度应该改变红色,1为绿色,2为紫色。

public class DiscoLight 
{ 
    /* instance variables */ 
    private Circle light; // simulates a circular disco light in the Shapes window 
    private Random randomNumberGenerator; 

    /** 
    * Default constructor for objects of class DiscoLight 
    */ 
    public DiscoLight() 
    { 
     super(); 
     this.randomNumberGenerator = new Random();   
    } 


    /** 
    * Returns a randomly generated int between 0 (inclusive) 
    * and number (exclusive). For example if number is 6, 
    * the method will return one of 0, 1, 2, 3, 4, or 5. 
    */ 
    public int getRandomInt(int number) 
    { 
     return this.randomNumberGenerator.nextInt(number); 
    } 


    /** 
    * student to write code and comment here for setLight(Circle) for Q4(i) 
    */ 
    public void setLight(Circle aCircle) 
    { 
     this.light = aCircle; 

    } 


    /** 
    * student to write code and comment here for getLight() for Q4(i) 
    */ 
    public Circle getLight() 
    { 
     return this.light; 
    } 

    /** 
    * Sets the argument to have a diameter of 50, an xPos 
    * of 122, a yPos of 162 and the colour GREEN. 
    * The method then sets the receiver's instance variable 
    * light, to the argument aCircle. 
    */ 
    public void addLight(Circle aCircle) 
    { 
     //Student to write code here, Q4(ii) 
     this.light = aCircle; 
     this.light.setDiameter(50); 
     this.light.setXPos(122); 
     this.light.setYPos(162); 
     this.light.setColour(OUColour.GREEN); 
    } 


    /** 
    * Randomly sets the colour of the instance variable 
    * light to red, green, or purple. 
    */ 
    public void changeColour(Circle aCircle) 
    { 
     //student to write code here, Q4(iii) 
     if (getRandomInt() == 0) 
     { 
      this.light.setColour(OUColour.RED); 
     } 
     if (this.getRandomInt().equals(1)) 
     { 
      this.light.setColour(OUColour.GREEN); 
     } 
     else 
     if (this.getRandomInt().equals(2)) 
     { 
      this.light.setColour(OUColour.PURPLE); 
     } 
    } 


    /** 
    * Grows the diameter of the circle referenced by the 
    * receiver's instance variable light, to the argument size. 
    * The diameter is incremented in steps of 2, 
    * the xPos and yPos are decremented in steps of 1 until the 
    * diameter reaches the value given by size. 
    * Between each step there is a random colour change. The message 
    * delay(anInt) is used to slow down the graphical interface, as required. 
    */ 
    public void grow(int size) 
    { 
     //student to write code here, Q4(iv) 
    } 


    /** 
    * Shrinks the diameter of the circle referenced by the 
    * receiver's instance variable light, to the argument size. 
    * The diameter is decremented in steps of 2, 
    * the xPos and yPos are incremented in steps of 1 until the 
    * diameter reaches the value given by size. 
    * Between each step there is a random colour change. The message 
    * delay(anInt) is used to slow down the graphical interface, as required. 
    */  
    public void shrink(int size) 
    { 
     //student to write code here, Q4(v) 
    } 


    /** 
    * Expands the diameter of the light by the amount given by 
    * sizeIncrease (changing colour as it grows). 
    * 
    * The method then contracts the light until it reaches its 
    * original size (changing colour as it shrinks). 
    */  
    public void lightCycle(int sizeIncrease) 
    { 
     //student to write code here, Q4(vi) 
    } 


    /** 
    * Prompts the user for number of growing and shrinking 
    * cycles. Then prompts the user for the number of units 
    * by which to increase the diameter of light. 
    * Method then performs the requested growing and 
    * shrinking cycles. 
    */  
    public void runLight() 
    { 
    //student to write code here, Q4(vii) 
    } 


    /** 
    * Causes execution to pause by time number of milliseconds 
    */ 
    private void delay(int time) 
    { 
     try 
     { 
     Thread.sleep(time); 
     } 
     catch (Exception e) 
     { 
     System.out.println(e); 
     } 
    } 

} 
+0

您可能需要使用一些代码块,使您的文章更容易阅读...用4个空格缩进每行代码,你将更有可能得到答案:) – ChrisR 2010-04-07 14:29:03

+0

你拼写错误。 – Gandalf 2010-04-07 14:33:07

+1

甘道夫,这就是我们如何拼写它在池塘的这一边... – James 2010-04-07 14:37:46

回答

0
/** 
    * Randomly sets the colour of the instance variable 
    * light to red, green, or purple. 
    */ 
    public void changeColour(Circle aCircle) 
    { 
     int i = getRandomInt(3); 
     if (i == 0) 
     { 
      this.light.setColour(OUColour.RED); 
     } 
     else if (i == 1) 
     { 
      this.light.setColour(OUColour.GREEN); 
     } 
     else 
     { 
      this.light.setColour(OUColour.PURPLE); 
     } 
    } 
+0

嘿非常感谢你对你的指导 – luvthug 2010-04-07 14:59:04

+0

嗨甘道夫, 为下一部分,我做了以下 公共无效成长(INT大小) { 而(int i = 0; i luvthug 2010-04-07 18:16:48

+0

确切的错误是什么? – Gandalf 2010-04-07 18:59:45

1

你已经忘记调用下面//student to write code here的第一行getRandomInt()时传递参数。不过,你的编译器应该已经指出了这一点。

getRandomInt()方法上方的文档注释告诉您它期望什么作为参数,以及您可以期待什么作为返回值。另外,如果您希望灯具为红色,绿色或紫色的机会相等,则您应该可以通过单一调用getRandomInt()来完成此操作。在一个变量中存储的值,使用switch语句来打开正确的光:

int randomValue = getRandomInt(/* I am not telling you what to put here */); 

switch (randomValue) { 
    case 0: light.setColour(OUColour.RED); break; 
    case 1: light.setColour(OUColour.GREEN); break; 
    case 2: light.setColour(OUColour.PURPLE); break; 
} 
+0

非常感谢您的指导 – luvthug 2010-04-07 15:00:05

0

getRandomInt返回int的方法,所以你不能使用equals比较。使用:

if (getRandomInt(3) == 1) { 
    ... 
} 

你只需要调用一次。将随机整数存储在变量中,并将其值与您想要的值进行比较。

+0

嘿非常感谢您的指导 – luvthug 2010-04-07 14:59:40

0

你几次调用getRandomInt,每次都返回一个新的(随机)值。 你应该在开始方法的调用它一次,然后检查它是否是0,1或2

问候 纪尧姆

+0

谢谢您的帮助和建议,我已经设法完成整个代码 – luvthug 2010-04-08 15:49:38