mikael_aMedlem sedan mars 2000475 inlägg Hej,
Jag har en class som jag har döpt till Fragor, denna klass slumpar ut olika frågor som ställs till användaren... Hur går jag för att kontrollera om det slumpade talet redan har visats?
tex:
det slumpade talet = 2 (fråga 2 visas)
det slumpade talet = 5 (fråga 5 visas)
det slumpade talet = 2 (en ny slumpning genom föres inget visas)
jag har försökt att spara det slumpade talet i en array, och när man har slumpat fram tex 4 kollar om man hittar det i arrayen om inte skriv ut frågan, annars slumpa igen...
men jag får inte ihop det...
kod:
public class Fragor
{
private int slumpatTal, sokt;
private boolean hittad = false;
public Fragor() {}
public void write10Poäng()
{
int [] tal;
tal = new int[20];
slumpatTal = (int)(Math.random()*10)+1;
int index = 0;
tal[index] = slumpatTal;
/* sokt = slumpatTal;
if (tal[index] == sokt)
hittad = true;
if(hittad)
System.out.println("Talet finns i fältet");
else
System.out.println("Talet finns ej");
*/
if (slumpatTal == 1)
{
System.out.println("Fråga 1");
}
else if (slumpatTal == 2)
{
System.out.println("Fråga 2");
}
osv...
micke
ViktorMedlem sedan aug. 20021 752 inlägg Så här kanske man kan göra (inte testat)
public class Fragor
{
private int slumpatTal;
int[] tal = new int[10];
public Fragor()
{
//Sätt alla tal till 0 i arrayen
for(int i=0;i<10;i++)
tal[i]=0;
}
public void write10Poäng()
{
//Loopa tills du hittar ett tal som inte redan är använt.
do
{
slumpatTal = (int)(Math.random()*10)+1;
/*
if(tal[slumpTal-1]==0)
System.out.println("Talet finns ej");
else
System.out.println("Talet finns i fältet");
*/
}while(tal[slumpTal-1]!=0);
//Sätt talet som du har hittat till använt i arrayen
tal[slumpTal-1]=1;
if(slumpatTal == 1)
{
System.out.println("Fråga 1");
}
else if(slumpatTal == 2)
{
System.out.println("Fråga 2");
}
}
}
Ett problem med koden är att om du har använt alla tal redan så loopar den för alltid.
/Viktor
mikael_aMedlem sedan mars 2000475 inlägg ett till problem uppstår...
if (slumpatTal == 1)
{
System.out.println("Fråga 1");
System.out.println("Hur ser symbolen för handikapparkering ut i Sverige?");
System.out.println();
System.out.println("A - En man med kryckor");
System.out.println("B - En man med rulator");
System.out.println("C - En man i rullstol");
System.out.println("D - en man med käpp");
System.out.println();
System.out.print("Skriv in svar : ");
svar = SavitchIn.readLine();
svar = svar.toLowerCase();
if (svar.compareTo("c") ==0)
{
System.out.println("rätt");
}
else
{
System.out.println("fel");
}
}
om användaren svarar rätt (C) så vill jag skicka honom till nivå 2... där det sedan slumpas mellan nya frågor... är en boolean bäst här?
tex:
om svar = C return true;
om inte return false;
om nivå 2 = true gå vidare annars inte...
hmm hur hade man bäst löst detta... det jag försöker göra är ett trivial persuit spel där användaren går vidare till 10 olika nivåer...
jag har hittils 200 frågor i varje nivå...
mikael_aMedlem sedan mars 2000475 inlägg det fungerar. fast det är som du skriver finns det inga fler tal att slumpa så fastnar den i loopen... hmm måste gå att fixa.
BrimbaMedlem sedan dec. 19995 875 inlägg det är dumt att hårdkoda in frågorna. Exempelvis kan du lägga det i en databas eller en textfil. Det blir mycket renare kod också. Textfilen kan exempelvis se ut såhär:
Fråga|Svar1|Svar2|2
Fråga|Svar1|Svar2|Svar3|Svar4|1
Fråga|Svar1|Svar2|Svar3|2
Sedan splittar du på |, och efter det skriver du ut frågan, och sedan alla svarsalternativ.
Den sista, anger vilket svar som är rätt svarsalternativ.
Då slipper du 200 if-satser och blaj :)
mikael_aMedlem sedan mars 2000475 inlägg det är klart... det låter bättre. Men jag har inte testat att läsa ifrån en text fil vill fu ge mig något kod exempel?