Avatar billede palle_pirat Nybegynder
02. februar 2008 - 12:41 Der er 5 kommentarer og
1 løsning

Genkend random billede

Jeg arbejde på et lille program til smartphones som viser et billede og så skal man gætte om det er sandt eller falsk. Men jeg kan ikke få den til at genkende billedet:

//Pics = resource fil

//Her laves Random: TE
private Random TE = new Random();
       
//her udtrækkes nummeret: rt
public int rt()
{
int number = TE.Next(1, 4);
return number;
}

//Her angives hvilket billede som skal vises i henhold til nummer: rt
public Bitmap billede()
        {
            Bitmap thePic = new Bitmap(Pics.img1);

            if (rt() == 1)
            {
                thePic = Pics.img2;
            }

            if (rt() == 2)
            {
                thePic = Pics.img3;
            }

            return thePic;
        }

private void pictureBox1_Click(object sender, EventArgs e)
        {
            pictureBox1.Image = billede();
        }

private void button2_Click(object sender, EventArgs e)
        {
            string ja = "Det er Korrekt";
            string nej = "Det er Forkert";
       
            if (pictureBox1.Image == Pics.img1)
            {
                label2.Text = ja;
            }

            if (pictureBox1.Image == Pics.img2)
            {
                label2.Text = nej;
            }

Der er self noget mere program, men det er her fejlen ligger. Den gider ikke finde ud af hvilket billede der bliver vist.
Avatar billede hmortensen Nybegynder
03. februar 2008 - 10:18 #1
I din billede() funktion vil rt() blive kaldt flere gange, og formodentlig give et nyt resultat hver gang.

Hvad med at bruge en switch.

private Bitmap Billede()
{
  Bitmap thePic;
  switch(rt())
  {
    case 1:
      thePic = Pics.img2;
      break;
    case 2:
      thePic = Pics.img3;
      break;
    default:
      thePic = Pics.img1;
      break;
  }
  return thePic;
}

Eller smide alle billederne i en liste, for at spare en del kode, og gøre det mere dynamisk.
Avatar billede palle_pirat Nybegynder
03. februar 2008 - 13:34 #2
Hvis du lige gider at forklare det med at smide billederne i en liste og smide et svar, så skal du få pointene. Indtil videre tak.
Avatar billede johny Nybegynder
06. februar 2008 - 11:18 #3
Jeg kan da lige prøve at forklare hvad han nok mente.

"if (rt() == 1)
            {
                thePic = Pics.img2;
            }

            if (rt() == 2)
            {
                thePic = Pics.img3;
            }
"
I den kode kalder du rt() flere gange. For hver gang stiller du spørgsmålet "Er resultatet af at køre metoden 'rt' lig det her tal?", og derfor vil den køre den på ny hver gang, og så har du forvirringen.

Idéen med en switch, er at så kalder du kun metoden én gang, uden at skulle definere en lokal variabel først.

Derudover, hvor er det så du henter dine billeder fra? Det ligner nemlig det er et statisk kald, hvilket ikke umiddelbart virker smart, især pga. du ikke må have et billede i mere end én imagebox af gangen.

Men koden skulle nok mere se sådan her ud:
public Bitmap billede()
{
Bitmap thePic = new Bitmap();
switch(TE.Next(1, 4)) {
  case 1:
  thePic = Pics.img1;break;
  case 2:
  thePic = Pics.img2;break;
  default:
  thePic = Pics.img3;break;
}
return thePic
}

Det der så er mit problem med resten af din kode er, at du forsøger at finde et svar på et spørgsmål med ja/nej, selvom der er 3 billeder ifølge din kode. Jeg ville jo gøre sådan:
if(pictureBox1.Image == Pics.img1)
label2.Text = "Svaret er: Billede 1";
else if(pictureBox1.Image == Pics.img2)
label2.Text = "Svaret er: Billede 2";
else
label2.Text = "Svaret er: Billede 3";

Håber det gav lidt mening? Igen, er ikke nemt at debugge din kode, når du ikke fortæller hvor du har billederne fra, og hvilket svar du leder efter i din test til sidst. :)
Avatar billede palle_pirat Nybegynder
30. april 2008 - 15:08 #4
Hvis Johnny eller hmortensen vil smide et svar må i gerne det.
Avatar billede johny Nybegynder
30. april 2008 - 16:38 #5
Du fik svar på dit spørgsmål så? Det var godt at høre, men ja, jeg forklarede sådan set bare en anden løsning nærmere, så det er op til hmortensen om han vil have points.. :)
Avatar billede hmortensen Nybegynder
30. april 2008 - 17:06 #6
Vi kan vel dele :)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester