我无法让我的鱼充满随机颜色,但无论我做了什么,它都没有改变我的鱼。这是代码。
import java.awt.Color;
import java.util.Random;
import uwcse.graphics.*;
/**
* A fish in a graphics window
*/
public class Fish {
// The graphics window the fish belongs to
private GWindow window;
// The location of the fish
private int x;
private int y;
// Scale of the drawing of the fish
private double scale;
private Color color;
/**
* Draws a Fish in a graphics window
*
* @param x
* the x coordinate of the location of the fish
* @param y
* the y coordinate of the location of the fish
* @param scale
* the scale of the drawing of the fish
* @param window
* the graphics window the fish belongs to
*/
public Fish(int x, int y, double scale, GWindow window) {
// Initialize the instance fields
this.x = x;
this.y = y;
this.scale = scale;
this.window = window;
this.color = randomColor();
// Draw the fish
this.draw();
}
private Color randomColor(){
Random random = new Random();
int R = random.nextInt(256);
int G = random.nextInt(256);
int B = random.nextInt(256);
System.out.println(R + " " + B + " " + G);
return new Color(R,B,G);
}
/**
* Draws this fish
*/
private void draw() {
int Fsize = (int)(this.scale*15);
Oval O1 = new Oval(this.x - Fsize /3,
this.y - Fsize /7 ,
Fsize + 3*Fsize/3,
Fsize + Fsize/5,
Color.CYAN,true);
Triangle tail1 =new Triangle(this.x - Fsize,
this.y,
this.x - 2/Fsize,
this.y + Fsize/2,
this.x - Fsize,
this.y + Fsize,Color.CYAN,true);
Line eye1 = new Line(this.x + 12*Fsize/10,
this.y + 5*Fsize/10 ,
this.x + 12*Fsize/10,
this.y + 5* Fsize /10,
Color.BLACK);
Oval O2 = new Oval(this.x - 37*Fsize/5,
this.y+ 27*Fsize/5 ,
Fsize + 2*Fsize/3,
Fsize + Fsize/5,
Color.CYAN,true);
Line eye2 = new Line(
this.x - 35*Fsize/5,
this.y + 30*Fsize/5,
this.x - 35*Fsize/5,
this.y + 30*Fsize/5, Color.BLACK);
Triangle tail2 =new Triangle(this.x - Fsize*5 ,
this.y + 13*Fsize/2,
this.x - 10*Fsize/2,
this.y + 11*Fsize/2,
this.x - Fsize*6,
this.y + Fsize*6,Color.CYAN,true);
this.window.add(O1);
this.window.add(O2);
this.window.add(tail2);
this.window.add(tail1);
this.window.add(eye1);
this.window.add(eye2);
}
}
`
答案 0 :(得分:3)
您正在使用颜色常量变量。而不是Color.CYAN使用您的随机颜色
答案 1 :(得分:1)
正如@Michelle所说,在定义鱼类部件的颜色时,您实际上并未使用randomColor()
方法或this.color
的值,该值使用randomColor()
的值初始化在您的draw()
方法中。请尝试以下修改。
import java.awt.Color; import java.util.Random; import uwcse.graphics.*;
/** * A fish in a graphics window */
public class Fish {
// The graphics window the fish belongs to
private GWindow window;
// The location of the fish
private int x;
private int y;
// Scale of the drawing of the fish
private double scale;
private Color color;
/**
* Draws a Fish in a graphics window
*
* @param x
* the x coordinate of the location of the fish
* @param y
* the y coordinate of the location of the fish
* @param scale
* the scale of the drawing of the fish
* @param window
* the graphics window the fish belongs to
*/
public Fish(int x, int y, double scale, GWindow window) {
// Initialize the instance fields
this.x = x;
this.y = y;
this.scale = scale;
this.window = window;
this.color = randomColor();
// Draw the fish
this.draw();
}randomColor()
private Color randomColor(){
Random random = new Random();
int R = random.nextInt(256);
int G = random.nextInt(256);
int B = random.nextInt(256);
System.out.println(R + " " + B + " " + G);
return new Color(R,B,G);
}
/**
* Draws this fish
*/
private void draw() {
int Fsize = (int)(this.scale*15);
Oval O1 = new Oval(this.x - Fsize /3,
this.y - Fsize /7 ,
Fsize + 3*Fsize/3,
Fsize + Fsize/5,
randomColor(),true);
Triangle tail1 =new Triangle(this.x - Fsize,
this.y,
this.x - 2/Fsize,
this.y + Fsize/2,
this.x - Fsize,
this.y + Fsize,randomColor(),true);
Line eye1 = new Line(this.x + 12*Fsize/10,
this.y + 5*Fsize/10 ,
this.x + 12*Fsize/10,
this.y + 5* Fsize /10,
randomColor());
Oval O2 = new Oval(this.x - 37*Fsize/5,
this.y+ 27*Fsize/5 ,
Fsize + 2*Fsize/3,
Fsize + Fsize/5,
randomColor(),true);
Line eye2 = new Line(
this.x - 35*Fsize/5,
this.y + 30*Fsize/5,
this.x - 35*Fsize/5,
this.y + 30*Fsize/5, randomColor());
Triangle tail2 =new Triangle(this.x - Fsize*5 ,
this.y + 13*Fsize/2,
this.x - 10*Fsize/2,
this.y + 11*Fsize/2,
this.x - Fsize*6,
this.y + Fsize*6,randomColor(),true);
this.window.add(O1);
this.window.add(O2);
this.window.add(tail2);
this.window.add(tail1);
this.window.add(eye1);
this.window.add(eye2);
}
}
或者如果你想要整条鱼是相同的颜色尝试类似下面的修改
import java.awt.Color; import java.util.Random; import uwcse.graphics.*;
/** * A fish in a graphics window */
public class Fish {
// The graphics window the fish belongs to
private GWindow window;
// The location of the fish
private int x;
private int y;
// Scale of the drawing of the fish
private double scale;
private Color color;
/**
* Draws a Fish in a graphics window
*
* @param x
* the x coordinate of the location of the fish
* @param y
* the y coordinate of the location of the fish
* @param scale
* the scale of the drawing of the fish
* @param window
* the graphics window the fish belongs to
*/
public Fish(int x, int y, double scale, GWindow window) {
// Initialize the instance fields
this.x = x;
this.y = y;
this.scale = scale;
this.window = window;
this.color = randomColor();
// Draw the fish
this.draw();
}randomColor()
private Color randomColor(){
Random random = new Random();
int R = random.nextInt(256);
int G = random.nextInt(256);
int B = random.nextInt(256);
System.out.println(R + " " + B + " " + G);
return new Color(R,B,G);
}
/**
* Draws this fish
*/
private void draw() {
int Fsize = (int)(this.scale*15);
Oval O1 = new Oval(this.x - Fsize /3,
this.y - Fsize /7 ,
Fsize + 3*Fsize/3,
Fsize + Fsize/5,
this.color,true);
Triangle tail1 =new Triangle(this.x - Fsize,
this.y,
this.x - 2/Fsize,
this.y + Fsize/2,
this.x - Fsize,
this.y + Fsize,this.color,true);
Line eye1 = new Line(this.x + 12*Fsize/10,
this.y + 5*Fsize/10 ,
this.x + 12*Fsize/10,
this.y + 5* Fsize /10,
this.color);
Oval O2 = new Oval(this.x - 37*Fsize/5,
this.y+ 27*Fsize/5 ,
Fsize + 2*Fsize/3,
Fsize + Fsize/5,
this.color,true);
Line eye2 = new Line(
this.x - 35*Fsize/5,
this.y + 30*Fsize/5,
this.x - 35*Fsize/5,
this.y + 30*Fsize/5, this.color);
Triangle tail2 =new Triangle(this.x - Fsize*5 ,
this.y + 13*Fsize/2,
this.x - 10*Fsize/2,
this.y + 11*Fsize/2,
this.x - Fsize*6,
this.y + Fsize*6,this.color,true);
this.window.add(O1);
this.window.add(O2);
this.window.add(tail2);
this.window.add(tail1);
this.window.add(eye1);
this.window.add(eye2);
}
}