2015-11-06 59 views
0

试图编写一个程序,其中如果用户输入的名称比“Randy”要比Java生成0到255(RGB)之间的随机数。如果名称是“Prius”,则颜色仅为绿色。从那里我会通过随机数或绿色到我的坦克班。关于将颜色传递给类(Java)

import java.awt.*; 
import java.util.*; 

public class Program4 
{ 
public static void main(String[ ] args) 
{ 
    Scanner kb = new Scanner(System.in); 
    Random rand = new Random(); 

    System.out.print("Please enter in your name: "); 
    String name = kb.nextLine(); 

    if(name.equalsIgnoreCase ("Randy")) 
     { 
      for (int i=1 ; i<= 3; i++) 
       { 
       int color2 = rand.nextInt(255); 
       Color myColor = new Color (color2); 
       Tank myTank = new Tank(myColor, 25); 
       } 
     } 
    else if (name.equalsIgnoreCase ("Prius")) 
     { 
      Color myColor = new Color (0,255,0); 
      Tank myTank = new Tank(myColor,25); 
     } 

    //create a new instance of a Tank, get its dimension 
    Color myColor = new Color(255, 0, 255); 
    Tank myTank = new Tank(myColor, 25); 
    int dimension = myTank.getDimension(); 

    //create a new instance of a Landscape 
    Landscape myLS = new Landscape(); 

    //tell the landscape to add the tank to itself 
    myLS.addTank(myTank); 

    //tell the tank to turn around 
    myTank.turn("left"); 
    myTank.turn("left"); 

    //ask the landscape where is its green opening (as an int) 
    Point greenPoint = myLS.getGreenOpening(); 
    int greenY = (int)greenPoint.getY(); 

    //tell the tank to keep moving as long as it is above the green opening 
    while(myTank.getPositionY() + dimension < greenY) 
     myTank.move(); 

    //turn left 
    myTank.turn("left"); 

    //hopefully, move through the green wall 
    for (int i=0; i<200; i++) 
     myTank.move(); 

    Point orangePoint = myLS.getOrangeOpening(); 
    int orangeY = (int)orangePoint.getY(); 

    if (myTank.getPositionY() + dimension < orangeY) 
     { 
      myTank.turn("right"); 
      while (myTank.getPositionY() + dimension < orangeY) 
      { 
       myTank.move(); 
      } 
      myTank.turn("left"); 
     } 
    else 
     { 
      myTank.turn("left"); 
      while (myTank.getPositionY() + dimension > orangeY) 
      { 
       myTank.move(); 
      } 
      myTank.turn("right"); 
     } 
    for (int i=0 ; i<200 ; i++) 
     myTank.move(); 

    Point targetLocation = myLS.getTargetLocation(); 
    int targetY = (int)targetLocation.getY(); 

    if (myTank.getPositionY() + dimension <targetY) 
     { 
      myTank.turn("right"); 
      while (myTank.getPositionY() + dimension < targetY + 30) 
      { 
       myTank.move(); 
      } 
      myTank.turn("left"); 
     } 
    else 
     { 
      myTank.turn("left"); 
      while (myTank.getPositionY() + dimension > targetY + 30) 
      { 
       myTank.move(); 
      } 
      myTank.turn("right"); 
     } 
    for (int i=0 ; i<500 ; i++) 
     myTank.move(); 

    } 
} 

还有更多的程序,但我只是需要颜色的帮助。该程序编译和工作。唯一的问题是随机的颜色和绿色没有被传递到我的坦克班。默认的坦克颜色是紫色的。

谢谢你的帮助。

回答

0

你试过吗?

Color myColor; 
Tank myTank; 

if(name.equalsIgnoreCase ("Randy")) 
    { 
     for (int i=1 ; i<= 3; i++) 
      { 
      int color2 = rand.nextInt(255); 
      myColor = new Color (color2); 
      myTank = new Tank(myColor, 25); 
      } 
    } 
else if (name.equalsIgnoreCase ("Prius")) 
    { 
     myColor = new Color (0,255,0); 
     myTank = new Tank(myColor,25); 
    } 
else 
    { 
     myColor = new Color(255, 0, 255); 
     myTank = new Tank(myColor, 25); 
    } 
int dimension = myTank.getDimension(); 
+0

我试过,但是,最后一个不会工作,因为我有其他代码,如“int dimension = myTank.getDimension();”如果我这样做,我会得到28个错误,说它找不到myTank符号。 – Paincakes

+0

改变了..你可以试试吗?你会得到错误,因为你已经在if-else块内初始化了mytank – user9480