26. november 2003 - 13:48Der er
12 kommentarer og 2 løsninger
Et spil, samme klasse, flere omgange
Hey eksperter!
Jeg er nybegynder, og blevet bedt om at konstruere et børsspil. Sagen er den, at jeg egentligt næsten godt ved hvordan jeg skal gribe det an, men jeg har et par startvanskeligheder.
For det første. Hvis jeg har en klasse der hedder Lån, som gør at en spiller kan låne penge til at købe aktier, hvordan holder jeg så styr på alle de lån en spiller kan optage? Jeg mener. Jeg kan jo dårligt skrive som menupunkt. "Lån Penge", som kan aktivere en funktion Laan myLaan = new Laan(); myLaan.nytLaan(beløb)
flere gange? Hvis jeg gør det to gange vil myLaan vel blive erstattet eller hvad? Hvordan ville i gribe sådan noget an?
Nå ja, hele tricket er at spilleren skal kunne optage flere lån pr. spilleomgang, og at spilleren til enhver tid skal kunne få vist de oplysninger der er tilgængelige om dennes lån.
Oplysninger som fx. Størrelse Antal spilleomgange inden udløb m.m.
Hej i-mox Hvis du lader dit låne objekt bestå af et Spiller-objekt, lånbeløb, spillerunde. Så har du mulighed for fx at finde ud af hvilke lån en bestemt spiller har taget og i hvilke runder spilleren har taget lånene.
Altså kunne en konstruktør i Laan se således ud: public Laan(Spiller sp, int beloeb, int runde)
Alle de lånene for alle spillere kunne du jo så oprette i en vektor som spunkman foreslår. Når du så har alle Laan objekterne i en vektor, kan du jo så søge vektoren igennem, og trække informationer ud om fx. de lån en bestemt spiller har og hvilke spillerunder de forskellige lån er optaget.
Ja Arrayliste og Vektor er faktisk det samme, forskellen ligger i at en Vektor er synchronized. Så ja du kan sagtens bruge en Arraylist. Du kan også godt bruge et array, men i dit tilfælde vil det nok være smartest med en arraylist, da den er dynamisk imodsætning til et array.
Okey, jeg troede du havde flere spillere. Et alternativ kunne så være at lade dit spiller objekt indeholde en arraylist og så ellers gemme lånene heri. På den måde kan du faktisk have flere spillere og så får de hver isæt deres egen arraylist hvori lånene kan opbevares.
Det indebære jo så også at dit Laan objekt ikke behøver består af en spiller. Da lånene nu gemmes i det enkelte spillerobjekt. //Oprettelse og tilføjelse af data i arraylist Arraylist laanliste = new Arraylist(); laanliste.add(new Laan(500,1)); //låner 500 i 1.spillerunde laanliste.add(new Laan(200,2)); //låner 200 i 2.spillerunde laanliste.add(new Laan(1200,3)); //låner 1200 i 3.spillerunde
//udtrække data fra arraylist Laan temp = null; for(int i = 0; i < laanliste.size(); i++) { temp = (Laan)laanliste.get(i); System.out.println("Runde: "temp.getRunde()); System.out.println("Beløb: "temp.getBeløb()); System.out.println(); }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.