19. marts 2005 - 21:12Der er
55 kommentarer og 1 løsning
Gemme rsultater
Hej
Jeg har en opgave der går ud på at lave et lille program hvor man kan score nogle point i løbet af tre runder. Man er to der spiller og man får point efter hvordan man svarer i forhold til hinanden. Spillet hedder dilemma. Man kan svare Enig eller uenig. Nu er mit problem at programmet ikke gemmer resultaterne af runderne, dvs. lægger dem sammem, men kun viser resultatet af den aktuelle ruunde.
Det betyder at hvis jeg scorer 4 point i runde et og 2 i runde to, så viser den min samlede score til 2 point..... Hvilken comando skal jeg bruge for at få den til at lægge pointene sammen???
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
public class Spiller { private String name; private ArrayList<Moede> memory;
private Scanner tastatur = new Scanner(System.in);
private final Moede.Handling SAM = Moede.Handling.sam; private final Moede.Handling UDN = Moede.Handling.udn;
public void Spiller(String na) { name = na; memory = new ArrayList<Moede>(); }
public Moede.Handling getAction() { String str; System.out.println(name+""); System.out.print("Tast s for at samarbejde eller tast u for at udnytte: "); str = tastatur.nextLine(); System.out.println();
do { if(str.charAt(0)=='s') { return SAM; }
if(str.charAt(0) =='u') {
return UDN; }
System.out.print("Der skal tastes s eller u. Proev igen! : "); str = tastatur.nextLine(); System.out.println(); }
while(true);
}
public void saveMoede (Moede.Handling a, Moede.Handling b) { Moede spil = new Moede(a, b); memory.add (spil); }
public void recall() { System.out.println("antallet af handler er: " + memory.size()); System.out.println("udfaldet af de spillede spil " + memory); }
public int score() { int sum = 0;
for (int i = 0; i < memory.size(); i++)
{ System.out.print(memory.get(i) + " "); sum += (memory.get(i)).value(); }
ok ny kan den regne den summere summen, men jeg forstår desværre forsår jeg stadig ikke hvorfor den ikke vil gemme det nye møde efter det/de tidligere møder.
final betyder at værdien ikke må ændres:) den kan sættes en gang og så er det det:)
markvejsen>>
Okay jeg er pisse dårlig til at danne mig et overblik over andres kode.. så hav det i mente hehe:)
private ArrayList<Moede> memory;
er det her du prøver at gemme resultaterne? for du skal ikke gemme dem i spilleren. du må undskylde hvis jeg er lidt forvirret men har aldrig før selv skrevet
Det er ok jeg takker bare for at du gider prøve :)
Nej jeg (tror) opretter den bare det jeg prøver på at gemme det nye spil i arrayListen her:
public void saveMoede (Moede.Handling a, Moede.Handling b) { Moede spil = new Moede(a, b); memory.add (spil); }
den gemme oså godt nok det sidst spil, men når det så er kørt to spil og jeg vil udskrive udfaldet at spilENE og antallet de spillede spil lige nedenunder med:
public void saveMoede (Moede.Handling a, Moede.Handling b) { Moede spil = new Moede(a, b); memory.add (spil); }
undskyld det var det forkerte jeg indsatte til sidst. jeg udskriver selvfølgelig med public void recall() { System.out.println("antallet af handler er: " + memory.size()); System.out.println("udfaldet af de spillede spil " + memory); }
for(int i = 0; i < endDinArrayListStørrelse; i++) { System.out.println("antallet af handler er: " + ((moede)dinArrayList.get(i)).memory.size()); System.out.println("udfaldet af de spillede spil " + ((moede)dinArrayList.get(i)).memory); }
jeg har lært at men ikke behøver at lave en forløkke for at udskrive indholdet i en ArrayList.
Den skriver også fint udfaldet at det spil der blev spillet sidst. Det er når der er spillet mere end et spil så udskriver den ikke udfaldet af alle tre spil men kun af det sidste spil samtidig siger den også af størelsen af Listen kun er 1
Hvis jeg lave det via en forløkke har jeg samme problem med at den hele tiden syntes at størrelsen at listen er 1 og at den kun udskriver det sidste nye udfald.
Det er derfor jeg troede at det var fordi den overskres det sidse møde når jeg prøver at gemme det nye møde.
må jeg ikke se det andet kode? jeg kan ikke se hvorfor det går galt i her.. man bør godt bare kunne sige add() i en arraylist så finder den selv ud af hvor tingene skal ligge
Bare din ArrayList som gemmer runderne.. og derfor også din saveMoede() metode.. sæt dem ind i dilema.. på den må er du også stensikker på de bliver gemt igennem hele programmets leve tid
Jeg ved du mener vel og jeg vil også gerne prøve det, men det er sådan at jeg har fået en liste over hvad klassen Spiller skal indeholde og der står ArrayListen på desværre :)
okay mon ikke den arraylist bare skal indholde værdien af hvad han har optjent for hver runde ? lige nu gemmer du også den anden spillers værdier i spillers 1's klasse hehe
Ok nu har jeg prøvet at lave to spillere hvor jeg så kun gemmer den ene spiller jave brokker sig ikke man jeg skal selvfølgelig ikke sige om det er rigtig. men det hjælper i alt falt ikke. Hvis du ikke har flere idere er det hélt i orden men jeg håber du lig vil kigge på det nedenstående om det var noget i den retning du tænkt før.... import java.util.Scanner; public class Dilemma { public static void main (String[] args) { String navnA, navnB; Scanner tastatur = new Scanner (System.in);
//opretter spillerA el. 1. spiller Spiller spillerA = new Spiller(); System.out.println(); System.out.print("1. spiller intast venligst dit navn: "); navnA = tastatur.nextLine();
//opretter spillerB el. 2.spiller Spiller spillerB = new Spiller(); System.out.println(); System.out.print("2. spiller intast venligst dit navn: "); navnB = tastatur.nextLine(); System.out.println();
public class Spiller { private String name; private ArrayList<Moede> memory; private int[] liste = new int[3] private Scanner tastatur = new Scanner(System.in);
private final Moede.Handling SAM = Moede.Handling.sam; private final Moede.Handling UDN = Moede.Handling.udn;
public void Spiller(String na) { name = na; memory = new ArrayList<Moede>(); }
public Moede.Handling getAction() { String str; System.out.println(name+""); System.out.print("Tast s for at samarbejde eller tast u for at udnytte: "); str = tastatur.nextLine(); System.out.println();
do { if(str.charAt(0)=='s') { return SAM; }
if(str.charAt(0) =='u') {
return UDN; }
System.out.print("Der skal tastes s eller u. Proev igen! : "); str = tastatur.nextLine(); System.out.println(); }
while(true);
}
public void tilfoj(int plads, int score) { liste[i] = score; }
public void saveMoede (Moede.Handling a, Moede.Handling b) { Moede spil = new Moede(a, b); memory.add (spil); }
public void recall() { System.out.println("antallet af handler er: " + memory.size()); System.out.println("udfaldet af de spillede spil " + memory); }
public int score() { int sum = 0;
for (int i = 0; i < memory.size(); i++)
{ System.out.print(memory.get(i) + " "); sum += (memory.get(i)).value(); }
Hvis det ikke giver mening overhovedet så send mig problemformuleringen/spørgmålet så laver jeg det selv fra bunden af.. mere fordi jeg som sagt har dårligt overblik når jeg får andres kode:)
ikke at du skal bruge min kode men så findes løsningen i min kode!!
men det jeg lige har tilføjet i din kode er det jeg tror du rigtig skulle have gjort bare med en arraylist. sådan gemmes nemlig kun score for spilleren selv i objektet og ikke den andens spillers score
det er fint:) jeg ser på det i morgen skal prøve at gøre det lidt tidligt og måske hvis jeg er heldig kan jeg se hvad det er du har prøvet med i din kode:)) så er den lige til at tilpasse!
Vil du ikke have dine 200point igen? Så skal du ligge et svar.. det gør du ved at sætte prik i "svar" nede i venstre hjørne.. skriver en kommentar og trykker send.
kig så nede i venstre hjørne igen nu kan du markere dit navn.. marker det og tryk på accepter. så får du dine 200point igen. så kan du bruge dem i et andet spørgsmål en anden god gang
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.