Так что я ломал голову над этим программным заданием, и я понятия не имею, как его закончить. Я уже выполнил 80%, но в последней части я не знаю даже общей идеи. Вопрос
"Затем напишите метод randomVehicle
, который случайным образом генерирует Vehicle
ссылки с равной вероятностью для построения легковых и грузовых автомобилей со случайными позициями. Назовите его 10 раз и нарисуйте все из них."
У меня есть основной метод, абстрактный суперкласс Vehicle
и два подкласса автомобилей и грузовиков. Я знаю, как делать вероятности с помощью циклов, но я не знаю, как взять этот вероятностный ответ (1 будет грузовиком, а 2 - автомобилем) и использовать его для ссылки на заранее определенные формы автомобиля и грузовика.
Другими словами, как бы я создал программу, которая после того, как я нажму, скомпилирует и запустит, сделает эти случайно выбранные легковые и грузовые автомобили и покажет их.
Извините, если вопрос запутанный, но я только изучаю абстрактные классы.
Вот код на данный момент:
Основной метод
import java.awt.*;
@SuppressWarnings("serial")
class drawTest extends Canvas{
public drawTest(){
setSize(800, 600);
setBackground(Color.white);
}
public static void main(String[] argS){
drawTest canvas = new drawTest();
Frame aFrame = new Frame();
aFrame.setSize(800, 600);
aFrame.add(canvas);
aFrame.setVisible(true);
}
public void paint(Graphics canvas){
Vehicle car = new CarTest();
car.paint(canvas);
paint(canvas);
}
}
CarTest
Класс
import java.awt.*;
@SuppressWarnings("serial")
public class CarTest extends Vehicle{
public void paint(Graphics canvas){
canvas.drawOval(10+super.x, 30+super.y, 15, 15); // Front Wheel
canvas.drawOval(45+super.x, 30+super.y, 15, 15); // Back Wheel
canvas.drawRect(5+super.x, 10+super.y, 60, 20); // Bottom of Car
canvas.drawRect(15+super.x, 5+super.y, 40, 5); // Bottom of Car
}
}
TructTest
Класс
import java.awt.*;
@SuppressWarnings("serial")
public class TruckTest extends Vehicle{
public void paint(Graphics canvas){
canvas.drawRect(30+super.x, 5+super.y, 100, 30); // Cargo Section
canvas.drawOval(30+super.x, 35+super.y, 15, 15); // Wheel Under Cargo
canvas.drawOval(45+super.x, 35+super.y, 15, 15); // Wheel Under Cargo
canvas.drawOval(100+super.x, 35+super.y, 15, 15); // Wheel Under Cargo
canvas.drawOval(115+super.x, 35+super.y, 15, 15); // Wheel Under Cargo
canvas.drawRect(5+super.x, 15+super.y, 20, 20); // Driver Section
canvas.drawOval(5+super.x, 35+super.y, 15, 15); // Wheel Under Driver
}
}
Аннотация Vehicle
Класс
import javax.swing.*;
import java.awt.*;
@SuppressWarnings("serial")
public abstract class Vehicle extends JApplet{
public Vehicle(){
// Generates Random position
x = (int)(Math.random()*700);
y = (int)(Math.random()*550);
}
public abstract void paint(Graphics canvas);
public void randomVehicle(){
int carTruckChoice = (int)(1+Math.random()*2);
if (carTruckChoice == 1){
// don't know if this is the right implementation
}
else if (carTruckChoice == 2){
// don't know if this is the right implementation
}
}
public int x;
public int y;
}