Так что я разобрался с этой программой, и я понятия не имею, как ее закончить. Я уже выполнил 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
}
}
Ab Класс 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;
}
С какой целью возникают проблемы? Создание случайных чисел? Или создание экземпляров класса a или класса b в зависимости от условия? – Thilo
Я знаю, как создавать случайные числа, я создал представление о том, как автомобиль и грузовик должны выглядеть с использованием основных форм, я знаю, как создать автомобиль или грузовик при определении их непосредственно в подклассе, но то, что я не знаю, t знать, как это сделать, - создать метод, который будет создавать 10 случайных экземпляров автомобиля или грузовика, которые являются как конкретными подклассами, так и абстрактным подклассом. – DOHtero
Обновлен с кодом. надеюсь, проблема будет иметь смысл – DOHtero