Я пытаюсь рисовать автомобили, которые получают сгенерированные в ArrayList
называется Cars
внутри tryCar()
метода он печатает правильный размер, когда я называю System.out.println(Cars.size());
, но как только я пытаюсь сделать это внутри paint()
метод не распознает его. Вот мой код. r
является Random()
от java.util.Random
краски() не принимает обновленные переменные в Java
public void Update(){
if(r.nextInt(100)>85){
tryCar();
}
}
void tryCar(){
if(r.nextBoolean()){
Car c = new Car(r.nextInt(2), r.nextInt(6)+6, r.nextBoolean());
Cars.add(c);
cars++;
System.out.println(Cars.size());
}
}
public void paint(Graphics g) {
super.paint(g);
this.setVisible(true);
this.setBackground(Color.BLACK);
Road.drawLvl(g);
System.out.println(Cars.size());
g.fillRect(p1.X,p1.Y,p1.W,p1.H);
for(int i = 0; i<Cars.size(); i++){
System.out.println("s");
Car c = (Car) Cars.get(i);
g.setColor(new Color((r.nextInt(2)*255),(r.nextInt(2)*255),(r.nextInt(2)*255)));
g.fillRect(c.X,c.Y,c.W,c.H);
}
}
Вот весь класс:
public class Game extends JPanel {
private static final long serialVersionUID = 1L;
int CARS = 20;
int cars = 0;
ArrayList Cars = new ArrayList();
Player p1 = new Player(20,20);
Environment Road = new Environment(1);
Random r = new Random();
public void Update(){
System.out.println("c");
if(r.nextInt(100)>85){
System.out.println("e");
tryCar();
}
p1.Move(Main.c);
}
void tryCar(){
if(r.nextBoolean()){
System.out.println("v");
Car c = new Car(r.nextInt(2), r.nextInt(6)+6, r.nextBoolean());
Cars.add(c);
cars++;
System.out.println(Cars.size());
}
}
public void paint(Graphics g) {
super.paint(g);
this.setVisible(true);
this.setBackground(Color.BLACK);
Road.drawLvl(g);
g.setColor(new Color(255,0,0));
// System.out.println(p1.X);
System.out.println(Cars.size());
g.fillRect(p1.X,p1.Y,p1.W,p1.H);
for(int i = 0; i<Cars.size(); i++){
System.out.println("s");
Car c = (Car) Cars.get(i);
g.setColor(new Color((r.nextInt(2)*255),(r.nextInt(2)*255),(r.nextInt(2)*255)));
g.fillRect(c.X,c.Y,c.W,c.H);
}
}
}
'", но когда я пытаюсь сделать это внутри методы печати() он не признает это. "' - Какой 'print()' метод ?? И не рисуйте прямо внутри JFrame. Вместо этого прочитайте тут на рисунке в Swing. –
Извините, я имел в виду 'paint', исправит – user3800396
@HovercraftFullOfEels Даже если я рисую что-то еще, мне нужно использовать методы Swing' paint() 'или' paintComponent() ', правильно? – user3800396