Задать вопрос
Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (1)

Наибольший вклад в теги

Все теги (12)

Лучшие ответы пользователя

Все ответы (4)
  • Как решить эту задачку?

    @whatislov
    У меня как-то так получилось. Немного доработал условие, чтобы интереснее было.
    Смысл программы:
    Монстры находятся в списке, список каждую итерацию сортируется(по убыванию жизней). У охотника имеется какое-то количество патрон и он имеет урон наносимый за один выстрел(сколько за один выстрел отнимаем жизней у монстра). Охотник делает выстрел и от жизни самого "жирного" монстра(который всегда будет находиться на 0 позиции списка) отнимается урон охотника. После чего делается проверка на количество жизней монстра, если их меньше 0, то удаляем монстра из списка и выводим сообщение о том, что он побежден.
    Если у охотника остаются патроны и все монстры побеждены(список монстров пуст), то охотник победил, иначе победили монстры(патронов у охотника нет, а список не пуст).
    Код конечно некрасивый и скорее все неэффективный(из-за постоянной сортировки списка монстров), так как сам ещё учусь, но может Вам поможет. С радостью приму советы по коду.

    Файл Monster.java
    class Monster implements Comparable<Monster>{
    	private String nameMonster;
    	//количество жизней монстра
    	private int health;
    	
    	public Monster(int health){
    		nameMonster = "unknown";
    		this.health = health;
    	}
    	
    	public Monster(String name, int health){
    		nameMonster = name;
    		this.health = health;
    	}
    	
    	public void setHealth(int health){
    		this.health = health;
    	}
    	
    	public String getName(){
    		return nameMonster;
    	}
    	
    	public int getHealth(){
    		return health;
    	}
    	
    	public int compareTo(Monster m){
    		return m.getHealth() - this.health;
    	}
    	
    	@Override
    	public String toString(){
    		return "Имя: " + nameMonster + ", жизни: " + health;
    	}
    }


    Файл Hunter.java
    class Hunter{
    	private String nameHunter;
    	// количество патрон
    	private int numOfBullets;
    	// урон наносимый за один выстрел
    	private int damage;
    	
    	public Hunter(int numOfBullets){
    		this.numOfBullets = numOfBullets;
    	}
    	
    	public Hunter(String nameHunter, int numOfBullets){
    		this.nameHunter = nameHunter;
    		this.numOfBullets = numOfBullets;
    	}
    	
    	public Hunter(String nameHunter, int numOfBullets, int damage){
    		this.nameHunter = nameHunter;
    		this.numOfBullets = numOfBullets;
    		this.damage = damage;
    	}
    	
    	public int shot(){
    		numOfBullets--;
    		System.out.println("патрон осталось: " + numOfBullets);
    		return damage;
    	}
    	
    	public int getNumOfBullets(){
    		return numOfBullets;
    	}
    	
    	@Override
    	public String toString(){
    		return "Охотник:" + nameHunter + "\nКоличество патрон:" + numOfBullets + "\n";
    	}
    }


    Файл MainClass.java
    import java.util.ArrayList;
    import java.util.Collections;
    
    public class MainClass{
    	public static void main(String[] args){
    		//объект класса охотник
    		Hunter hunter = new Hunter("Sebastian", 5, 5);
    		
    		//список монстров
    		ArrayList<Monster> listMonster = new ArrayList<>();
    		
    		listMonster.add(new Monster("Скелет", (int)(((Math.random() * (10 - 1)) + 1))));
    		listMonster.add(new Monster("Призрак", (int)(((Math.random() * (10 - 1)) + 1))));
    		listMonster.add(new Monster("Зомби", (int)(((Math.random() * (10 - 1)) + 1))));
    		
    		System.out.println(hunter);
    		
    		while(hunter.getNumOfBullets() > 0){
    			Collections.sort(listMonster);
    			
    			System.out.println(listMonster);
    			
    			//всегда будем стрелять в самого жирного монстра
    			Monster monster = listMonster.get(0);
    			
    			System.out.print("Охотник выстрелил в " + monster.getName() + ", ");
    			monster.setHealth(monster.getHealth() - hunter.shot());
    				
    			// если у монстра не осталось жизней, то удаляем его из списка	
    			if(monster.getHealth() <= 0){
    				System.out.println("Монстр " + monster.getName() + " убит");
    				listMonster.remove(monster);
    			}		
    			
    			// если список пуст, то все монстры убиты
    			if(listMonster.isEmpty()){
    				System.out.println("Все монстры убиты");
    				return;
    			}	
    		}	
    		//если все патроны потрачены, то охотник проиграл
    		System.out.println("Монстры победили, охотнику не хватило патрон");		
    	}
    }
    Ответ написан

Лучшие вопросы пользователя

Все вопросы (62)