Gå til innhold

GUI. Hvordan lage knapp for å angripe den farligste fienden?


Anbefalte innlegg

Oblig 5 INFO132 V15 @ UiB

 

Går grunnkurs i programmering og trenger litt hjelp til en oppgave.
 
Temaet for oppgaven vi har fått er GUI, filhåndtering og unntak (exceptions).
En del av GUI'et er allerede implementert i et løsningsforslag vi har fått utlevert. Man finner knapper for blant annet 'Attack' og 'Run', men disse gjør ingenting enda. Vi skal også legge til flere knapper og menyer. Når vi skal legge til en handling på knapper og menyer, må vi legge til lyttere (ActionListeners). Disse skal legges til fra en klasse som heter Game.
 
Hvordan lager man en knapp for å angripe den farligste fienden i et spill?
 
Kan metoden se noe slik ut:
 
Public void selectHardest() {
    opponent hardest = null;
    int topScore = 0;
    for (opponent opponent : opponents) {
        int oppScore = opponent.getHealth() + opponent.getMaxDamage();
    if (oppScore > topScore) {
        hardest = opponent;
        topScore = oppScore;
        }
    }
    opponents.remove(hardest);
    return hardest;
}

Endret av javababe
Lenke til kommentar
Videoannonse
Annonse

Metoden du har kode for har noen feil som må rettes før den kan benyttes, men det finner du nok ut av. Den returnerer kun den fienden som er farligst, men lager ingen knapp.

 

Jeg vet ingenting om spillet, men hvilken fiende som er farligst kan sikkert diskuteres. Med ditt forslag vil f.eks. en fiende med 'health' = 100 og 'maxDamage' = 10 være farligere enn en fiende med 'health' = 80 og 'maxDamage' = 20. Faktorer som avstand fra fienden, treffsikkerheten til fienden og hastigheten til fienden vil kanskje være viktigere enn helsen?

Endret av jonny
Lenke til kommentar

hmm, burde iallfall bli no sånn her (bruk stor bokstav for klasser Opponent i Java ellers dreper læreren deg :p)

public Opponent selectHardest() 
{
    Opponent hardest = null;
    int topScore = 0;
    for(Opponent opponent : opponents) 
    {
        int oppScore = opponent.getHealth() + opponent.getMaxDamage();
        if (oppScore > topScore) 
        {
            hardest = opponent;
            topScore = oppScore;
        }
    }
    //opponents.remove(hardest); //why remove?
    return hardest;
}

Men denne koden vil ikke la deg gjøre noe i GUI'et, og er vanskelig å gi noen tips som passer inn i resten av koden uten å se noen eksempler..

 

Du må lage en knapp og legge den til på samme måte som allerede finnes i koden din, legge til en ActionListner på denne, få denne til å kalle selectHardest() for å så ta Opponent objektet denne metoden returnerer å få selectert denne på en måte i GUIet.

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...