INF100 Institutt for informatikk Universitetet i Bergen Øving 5 Høst 2013 Mål: Bruk av objekter. Innlevering: Adventure.java, Spiller.java og Rom.jav pakket i en zip fil. Innleveringsfrist: Torsdag 10. oktober, kl. 12:00 Denne uken skal vi fortsette med å lage et Adventure spill. Ofte i slike spill er det flere forskjellige områder, og spilleren kan bestemme fritt hvor hun beveger seg. I denne oppgaven skal vi lage den delen av spillet som gjør at spilleren kan bevege seg rundt. Spilleren skal være i et hus som har flere rom. Et rom kan ha dører til andre rom i retning sør, nord, vest og øst. 1
Hvert rom skal ha en farge (malingen på veggen). Rommene er lagt ut på følgende måte: N V S Ø Eksempel på kjøring Rommet er rødt. Gå sør Rommet er gult. Gå sør Det er ikke noe rom mot sør! Rommet er gult. Gå vest Rommet er oransje. Gå øst Rommet er gult. Gå øst Rommet er grønt. Gø øst Ukjent kommando, prøv igjen! Gå øst Det er ikke noe rom mot øst! Rommet er grønt. Gå vest Rommet er gult. Gå sør Det er ikke noe rom mot sør! Rommet er gult. Gå nord Rommet er rødt. Som sist har vi lagt ut et kodeskjellet som skal følges. Allt som er nød- 2
vendig er å fylle inn der det står. Oppgave 1 Fullfør sammenkoblingen av rom i Adventure.java. I Adventure.java er det røde og det gule rommet allerede koblet sammen, men det er nødvendig å sammenkoble alle rommene som vist på karte over. Oppgave 2 Skriv ferdig klassen Spiller.java. Vedlegg Adventure.java import java.util.scanner; Fag: INF100 V2013 Øving: 5 Et adventure spill der spilleren flytter seg rundt i rom som har forskjellig farge. Kartet over rom er som følger: N V - - Ø rødt S ------ oransje gult grøndt Spilleren starter i det røde rommet. public class Adventure { public static void main(string[] args){ Scanner tastatur = new Scanner(System.in); // Oppretter alle rommene Rom rodtrom = new Rom("Rommet er rødt."); 3
Rom grontrom = new Rom("Rommet er grønt."); Rom gultrom = new Rom("Rommet er gult."); Rom oransjerom = new Rom("Rommet er oransje."); // Kobler rommene sammen etter hvor // de befinner seg i forhold til hverandre. rodtrom.settromsoer(gultrom); gultrom.settromnord(rodtrom); //Oppgave 1 Spiller spiller = new Spiller(rodtRom); spiller.skrivutrombeskrivelse(); // Så lenge brukeren ikke skriver inn // "Hade!" leses inn nye kommandoer boolean fortsett = true; while(fortsett){ switch(tastatur.nextline()){ case "Gå øst": spiller.gaamotoest(); spiller.skrivutrombeskrivelse(); case "Gå vest": spiller.gaamotvest(); spiller.skrivutrombeskrivelse(); case "Gå nord": spiller.gaamotnord(); spiller.skrivutrombeskrivelse(); case "Gå sør": spiller.gaamotsoer(); spiller.skrivutrombeskrivelse(); 4
case "Hade!": System.out.println("Hade!"); fortsett = false; case "go west": System.out.println("Where the skies are blue..."); default: System.out.println("Ukjent kommando, prøv igjen!"); Spiller.java Fag: INF100 V2013 Øving: 5 Beskriver en spiller i et adventure spill. Spilleren står i et rom og kan flytte seg i en retning til et annet rom (nord,sør vest,øst) avhengig av om rommet fører til et nytt rom i den retningen. / public class Spiller{ Rommet som spilleren står i Rom staari; Konstruktør for klassen spiller @param staari rommet som spilleren står i. public Spiller(Rom staari){ this.staari = staari; Skriver ut beskrivelsen av rommet som spilleren 5
står i. public void skrivutrombeskrivelse(){ //Oppgave 2 Går i til rommet som er til øst for rommet som spilleren står i nå hvis det rommet finnes. Hvis ikke skrives en feilmelding ut. public void gaamotoest(){ //Oppgave 2 Går i til rommet som er til vest for rommet som spilleren står i nå hvis det rommet finnes. Hvis ikke skrives en feilmelding ut. public void gaamotvest(){ //Oppgave 2 Går i til rommet som er til nord for rommet som spilleren står i nå hvis det rommet finnes. Hvis ikke skrives en feilmelding ut. public void gaamotnord(){ //Oppgave 2 Går i til rommet som er til sør for rommet som spilleren står i nå hvis det rommet finnes. Hvis ikke skrives en feilmelding ut. public void gaamotsoer(){ 6
//Oppgave 2 Rom.java Fag: INF100 V2013 Øving: 5 Rom beskriver et rom i et adventure spill. Et rom kan føre til et rom i alle retninger (nord,sør,vest,øst). Det er også en beskrivelse av hvert rom. public class Rom{ Rom som dette rommet fører til. private Rom romvest; private Rom romoest; private Rom romnord; private Rom romsoer; Beskrivelsen av rommet private String beskrivelse; Konstruktør for Rom. @param beskrivelsen En beskrivelse av rommet. public Rom(String beskrivelse){ this.beskrivelse = beskrivelse; Setter hvilket rom rommet fører til i retning vest. Hvis gitt null er det ikke et rom til i denne retningen. @param rom Rommet som dette rommet skal føre til. 7
public void settromvest(rom rom){ romvest = rom; Setter hvilket rom rommet fører til i retning øst. Hvis gitt null er det ikke et rom til i denne retningen. @param rom Rommet som dette rommet skal føre til. public void settromoest(rom rom){ romoest = rom; Setter hvilket rom rommet fører til i retning nord. Hvis gitt null er det ikke et rom til i denne retningen. @param rom Rommet som dette rommet skal føre til. public void settromnord(rom rom){ romnord = rom; Setter hvilket rom rommet fører til i retning sør. Hvis gitt null er det ikke et rom til i denne retningen. @param rom Rommet som dette rommet skal føre til. public void settromsoer(rom rom){ romsoer = rom; Henter hvilket rom rommet fører til i retning vest. Returnerer null dersom det ikke er noe rom i denne retningen. @return rommet til vest for dette rommet. 8
public Rom hentromvest(){ return romvest; Henter hvilket rom rommet fører til i retning øst. Returnerer null dersom det ikke er noe rom i denne retningen. @return rommet til øst for dette rommet. public Rom hentromoest(){ return romoest; Henter hvilket rom rommet fører til i retning nord. Returnerer null dersom det ikke er noe rom i denne retningen. @return rommet til nord for dette rommet. public Rom hentromnord(){ return romnord; Henter hvilket rom rommet fører til i retning sør. Returnerer null dersom det ikke er noe rom i denne retningen. @return rommet til sør for dette rommet. public Rom hentromsoer(){ return romsoer; @return true dersom rommet fører til et rom mot vest. public boolean harromvest(){ return romvest!= null; 9
@return true dersom rommet fører til et rom mot øst. public boolean harromoest(){ return romoest!= null; @return true dersom rommet fører til et rom mot nord. public boolean harromnord(){ return romnord!= null; @return true dersom rommet fører til et rom mot sør. public boolean harromsoer(){ return romsoer!= null; @return En beskrivelse av rommet. public String hentbeskrivelse(){ return beskrivelse; 10