Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
151 changes: 150 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,150 @@
# Пустой репозиторий для работы с Java кодом в Android Studio
# Java Module Project YP

Учебный Java-проект с несколькими небольшими программами, демонстрирующими базовые принципы ООП, коллекции, циклы, случайные значения и консольный ввод.

## Описание

Репозиторий содержит несколько учебных задач на Java:

- модель автомобиля;
- простую логику гонки с определением лидеров;
- консольную игру / симуляцию с вводом данных о машинах;
- небольшую задачу с овечками и случайным порядком.

Проект показывает работу с:

- классами и объектами;
- коллекциями `List`;
- `Scanner` и вводом из консоли;
- генерацией случайных чисел;
- базовой бизнес-логикой. :contentReference[oaicite:0]{index=0}

## Состав проекта

### `Car`
Класс модели автомобиля.

Хранит:
- название машины;
- скорость.

Предоставляет геттеры для чтения данных.

### `Race`
Класс гонки.

Отвечает за:
- хранение списка автомобилей;
- отслеживание максимальной скорости;
- определение текущих лидеров;
- возврат списка самых быстрых машин. :contentReference[oaicite:1]{index=1}

### `Main`
Основная консольная программа.

Функциональность:
- ввод данных о трёх автомобилях;
- проверка корректности скорости;
- повторные попытки ввода;
- штраф к скорости за ошибочные попытки;
- определение победителя;
- возможность сыграть ещё раз. :contentReference[oaicite:2]{index=2}

### `SheepJump`
Небольшая отдельная программа с циклом и случайным порядком “прыжков овечек”.

Используется для тренировки:
- циклов;
- массивов;
- `Random`. :contentReference[oaicite:3]{index=3}

## Возможности

- создание объектов автомобилей;
- добавление машин в гонку;
- поиск текущих лидеров по максимальной скорости;
- консольный ввод данных;
- валидация скорости;
- обработка пустого имени;
- повторение игры;
- применение штрафов за неверный ввод;
- работа со случайными числами. :contentReference[oaicite:4]{index=4}

## Как работает гонка

1. Пользователь вводит название автомобиля.
2. Затем вводит его скорость.
3. Если скорость введена неверно, программа предлагает повторить ввод.
4. За каждую неверную попытку итоговая скорость уменьшается на 10%.
5. После ввода трёх машин определяется лидер.
6. Пользователь может начать новый раунд. :contentReference[oaicite:5]{index=5}

## Логика определения лидера

Класс `Race` при добавлении машины:

- сохраняет её в список;
- сравнивает скорость с текущей максимальной;
- если скорость выше — обновляет список лидеров;
- если скорость равна максимальной — добавляет машину в список лидеров. :contentReference[oaicite:6]{index=6}

## Используемые технологии

- Java
- `ArrayList`
- `List`
- `Scanner`
- `Random`
- базовые конструкции ООП

## Пример использования

Программа запрашивает:

- название автомобиля;
- скорость автомобиля.

После ввода выводит:
- лидера гонки;
- информацию о введённых значениях;
- итоговую скорость с учётом штрафов. :contentReference[oaicite:7]{index=7}

## Сборка и запуск

Компиляция:

```bash
javac *.java
````

Запуск основной программы:

```bash
java Main
```

Запуск отдельной задачи с овечками:

```bash
java SheepJump
```

## Назначение проекта

Проект демонстрирует:

* основы Java;
* создание простых классов;
* работу с коллекциями;
* обработку пользовательского ввода;
* базовую игровую / симуляционную логику;
* организацию небольшого учебного консольного приложения.

## Возможные улучшения

* разделить задачи по пакетам;
* вынести валидацию ввода в отдельные методы;
* добавить тесты;
* улучшить структуру консольного интерфейса;
* исправить проблемы с кодировкой вывода;
* добавить больше правил для гонки.
19 changes: 19 additions & 0 deletions src/main/java/Car.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
public class Car {

private final String name;
private final int speed;

public Car(String name, int speed){
this.name = name;
this.speed = speed;
}

public String getName(){
return name;
}

public int getSpeed(){
return speed;
}

}
Loading