Gå til innhold

Trenger hjelp med obligatorisk innlevering i info132


Anbefalte innlegg

Hei! Så et lignende spørsmål innpå her, men oppgavene endrer seg litt fra år til år + at vi har valgt en liten annen løsning på det. Uansett, oppgaven er som følger: 
 
1. Det skal legges inn to ulike typer gjenstander (Items) i spillet:
a. Våpen som en spiller kan utruste seg med for å øke skaden som kan utføres. En spiller kan kun være utrustet med ett våpen, men kan ha flere våpen liggende i samlingen med gjenstander og spilleren skal kunne bytte mellom disse. (12%)
b. Helsedrikker som spilleren kan drikke under kamp for å øke helsen sin. (12%)

 

Både våpen og helsedrikker skal kunne ligge i spillerens samling med gjenstander.
 

 

Vi har laget to subklasser til Items kalt weapons og potions, som har en damageboost og en healthboost hver. Poenget er at spillet skal kunne spilles, noe vi tester i en terminal for mainmetoden vår, som bare heter Game. Inni terminalen kan vi skrive kommandoer som "attack" og "run", som resulterer i at spilleren angriper monsteret eller flykter fra spillet. Alt dette skjer i battleground, en egen klassen, som vi har lagt inn i main. Sånn her ser battleground ut forløbig: 
 
 

/**
 * Metode for å starte kampene
 */

    public void startBattle() {
        printWelcomeMessage();
        boolean finished = false;

        // Hent ut et random monster
        this.currentMonster = getRandomMonster();

        // Hvis currentMonster er null så vil vi bare avbryte, slik at vi ikke får nullPointerException senere
        if(this.currentMonster == null) {
            return;
        }

        System.out.println("A random monster is chosen for you. Prepare to meet the mighty " + this.currentMonster.getName());
        System.out.println("\n-------- Player Stats ---------");
        System.out.println(this.player);
        while(!finished && monsters.size() > 0) {
            HashSet<String> commands = reader.getInput();

            if(isValidCommand(commands)) {
                
                  
                
                // If player is a chicken and runs, finish game
                if(commands.contains("run")) {
                    finished = true;
                    System.out.println("You are a coward and you lose 50 gold pieces...\n");
                    this.player.changeGold(-50);
                    printFinalStats();
                    System.out.println("\nThanks for playing...");
                 
                }else if(commands.contains("drinkpotion") && !this.currentMonster.isDead()){
                    player.drinkPotion(potion);
                // If player attacks and the current monster is not yet dead
            	}else if(commands.contains("useweapon") && !this.currentMonster.isDead()){
					player.useWeapon(weapon);
                } else if(commands.contains("attack") && !this.currentMonster.isDead()) {

                    if(this.player.attack(this.currentMonster)) {
                            playerWon();
                        if(this.monsters.size() > 0) {
                            System.out.println("\nThere are " + this.monsters.size() + " more monsters to beat\nType \"attack\" if you want to attack another monster.");
                        } else {
                            System.out.println("\n\n#### Congratulations ####\nYou have beaten every single monster in the game. You are a true champion!");
                            printFinalStats();
                            finished = true;
                        }
                    } else if(this.currentMonster.attack(this.player)) {
                        printLosingMessage();
                        finished = true;
                    }
                // If the player types attack and the current monster is dead, but there are still more monsters left
                } else if(commands.contains("attack") && this.currentMonster.isDead() && this.monsters.size() > 0) {
                    this.currentMonster = getRandomMonster();
                    printContinueMessage(this.player, this.currentMonster);
                    this.player.changeHealth(50);
                }
                
            } else {
                System.out.println("Please write a valid command. Valid commands are:");
                printCommands();
            }
        }
    }

Vi har allerede laget metodene som skal brukest for å drikke en helsedrikk og øke skaden på våpenet. Både drinkPotion og useWeapon fungerer, men spilleren har ingen weapons/items med seg i kamp, så vi får bare fram print meldingen i terminalen. Vi vet ikke hvordan vi skal få lagt inn våpen/potions i terminalen/bytte mellom flere våpen, om dere fatter? Veldig vanskelig å formulere seg. Sånn her ser de metodene ut: 

   /**
     * 
     */
    public boolean drinkPotion(Potion potion) {
        if(this.items.containsValue(potion)) {
            this.health = potion.getHealthBoost() + this.health;
            System.out.println("You drank the "+ potion.getName() +" which gave you "+ potion.getHealthBoost() +" more healthpoints.");
            sellItem(potion);
            return true; 
        }else{
            System.out.println("There are no potions in your inventory.");
            return false; 

        }
    }
    
    /**
     * 
     */
    public boolean useWeapon(Weapons weapon){
        if(this.items.containsValue(weapon)){
            this.maxDamage = weapon.getDamageBoost() + this.maxDamage;
            System.out.println("You equiped a " + weapon.getName() +" which increases your damage with "+ weapon.getDamageBoost() +".");
            sellItem(weapon);
            return true;
        }else{
			System.out.println("There are no weapons in your inventory."); 
            return false;
        }
    }

Setter pris på all hjelp!

Lenke til kommentar
Videoannonse
Annonse

Hei! Jeg vet ikke om du trenger hjelp til dette fremdeles, men det jeg ville gjort er å lage et objekt som heter "inventory", med metoder for å legge inn og hente ut våpen og andre items. Når du skal bruke en item fra inventory, vil du iterere gjennom bojekter i inventory til du finner tingen du leter etter. Du vil utføre effekten av denne tingen, og så fjerne den fra eller redusere antall alt ettersom.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...