C++ Builder ja pieni ongelma

Hei vaan!

Olen tekemässä lapselle sellaista ohjelmaa, joka näyttää jonkin kuvan, ja lapsen tulisi kirjoittaa
Edit-kenttään tuon kuvan esittämän asian, (eläimen, ihmisen tms. nimi). Jos hän kirjoittaa oikein, tulee teksti(LabelOikein) esim. "Hyvä, kirjoitit oikein!" tai vastaavasti jos tulee virhe, tulostetaan näytölle (LabelVaarin)..esim. "Haluatko yrittää uudestaan?"

Tässä tähänastinen koodinpätkä (syntaksivirheitä varmasti löytyy!!) yhdellä kuvalla toteutettuna:

void __fastcall TForm1::ButtonValmisClick(TObject *Sender)
{

if (EditKirjoitus->Text=="kissa")
{LabelOikein->Visible=True;
LabelVaarin->Visible=False; }

else {LabelVaarin->Visible=True;
LabelOikein->Visible=False;}
}

Siis tämä pätkä toimii oikein, mutta miten toteutan ohjelman niin, että lisäämällä ohjelmaan uuden komentopainikkeen..esim. "ButtonUusiKuva", saan satunnaisesti valitun kuvan näyttöön vaikka 10:n kuvan joukosta ja tälle kuvalle määritetyn oikean nimen toimimaan kuten tuossa "kissa" tapauksessa?

Tämä ei sitten ole mikään koulutehtävä, vaan keski-ikäisen juntin "ruutia ei ole pakko keksiä uudestaan"- kysymys teille, jotka oikeasti älyätte jotain ohjelmoinnista...ite olen ihan muissa töissä, mutta kai vanhanakin saa yrittää jotain uutta..:)

Kiitos vastauksista ja Hyvää Uutta Vuotta kaikille palstalaisille!
5551
Äänestä

Muut lukivat myös

Vastaukset 5

Vanhimmat

Ensimmäinen tehtävä varmaankin on tehdä struktuuri jossa on kuva ja siihen liittyvä teksti kytketään yhteen (kissankuva.bmp ja "kissa"). Struktuuri on nimenä vaikea mutta erittäin yksinkertainen toteuttaa. Helpistä varmaan löytyy.

Sitten teet näistä vektorin jossa vaikka ykkönen on kissa, kakkonen on koira, jne.

Seuraavaksi pitää arpoa satunnaisluku (Random tjsp) joka määrittää mitä kuviota kulloinkin kysytään.

Siinähän se noin karkeasti ottaen onkin.

Äänestä
  • Kiitos! Koetan, jos saan tuon onnistumaan.

    Äänestä

  • Niin, kuten nimimerkkikin kertoo, ei esimerkkejäkään paheksuta..:) Jos luon tuon structin, niin millä tietotyypillä esittelen esim. tuon "kissa.bmp:n" tuon structin sisällä?

    Äänestä

  • tosi aloittelija kirjoitti:

    Niin, kuten nimimerkkikin kertoo, ei esimerkkejäkään paheksuta..:) Jos luon tuon structin, niin millä tietotyypillä esittelen esim. tuon "kissa.bmp:n" tuon structin sisällä?

    >...millä tietotyypillä esittelen esim. tuon "kissa.bmp:n" tuon structin sisällä?

    Structin sisällähän sen täytyy olla tekstimuuttuja koska jatkossa sitä pitää käyttää tiedostonimenä.
    C :lla voisi käyttää stringiäkin mutta perus c:llä merkkivektori vaikka näin.

    //otus_tyyppi
    struct
    {
    char kuvan_nimi[20];
    char teksti[20];
    }otukset[10];

    Siinä määrittelet sen jonon mihinkä niitä kuvia laitetaan.

    Jatkossa voi viitata niihin indeksillä:

    strcpy(otukset[1].kuvan_nimi,"kissankuva.bmp");
    strcpy(otukset[1].teksti,"kissa");

    strcpy(otukset[2].kuvan_nimi,"koirankuva.bmp");
    strcpy(otukset[2].teksti,"koira");
    ...jne

    Siitä se lähtee. Sitten vaan arvot lukuja vaikka 1...10 tai kuinka paljon niitä laitatkin ja sen mukaan näytetään kuva ja toisaalta tarkistetaan vastaus.

    Tuolla on muuten aika hyvä sivusto C :n ensiaskeliin.
    http://www.ratol.fi/opensource/cplusperusteet/index.htm

    Äänestä

  • alkua kirjoitti:

    >...millä tietotyypillä esittelen esim. tuon "kissa.bmp:n" tuon structin sisällä?

    Structin sisällähän sen täytyy olla tekstimuuttuja koska jatkossa sitä pitää käyttää tiedostonimenä.
    C :lla voisi käyttää stringiäkin mutta perus c:llä merkkivektori vaikka näin.

    //otus_tyyppi
    struct
    {
    char kuvan_nimi[20];
    char teksti[20];
    }otukset[10];

    Siinä määrittelet sen jonon mihinkä niitä kuvia laitetaan.

    Jatkossa voi viitata niihin indeksillä:

    strcpy(otukset[1].kuvan_nimi,"kissankuva.bmp");
    strcpy(otukset[1].teksti,"kissa");

    strcpy(otukset[2].kuvan_nimi,"koirankuva.bmp");
    strcpy(otukset[2].teksti,"koira");
    ...jne

    Siitä se lähtee. Sitten vaan arvot lukuja vaikka 1...10 tai kuinka paljon niitä laitatkin ja sen mukaan näytetään kuva ja toisaalta tarkistetaan vastaus.

    Tuolla on muuten aika hyvä sivusto C :n ensiaskeliin.
    http://www.ratol.fi/opensource/cplusperusteet/index.htm

    Nyt näyttää jo selvemmältä. Kiitos vinkistä ja linkistä..!

    Äänestä

Kommentoi aloitusta


Tosi aloittelija kirjoitti:

Hei vaan!

Olen tekemässä lapselle sellaista ohjelmaa, joka näyttää jonkin kuvan, ja lapsen tulisi kirjoittaa
Edit-kenttään tuon kuvan esittämän asian, (eläimen, ihmisen tms. nimi). Jos hän kirjoittaa oikein, tulee teksti(LabelOikein) esim. "Hyvä, kirjoitit oikein!" tai vastaavasti jos tulee virhe, tulostetaan näytölle (LabelVaarin)..esim. "Haluatko yrittää uudestaan?"

Tässä tähänastinen koodinpätkä (syntaksivirheitä varmasti löytyy!!) yhdellä kuvalla toteutettuna:

void __fastcall TForm1::ButtonValmisClick(TObject *Sender)
{

if (EditKirjoitus->Text=="kissa")
{LabelOikein->Visible=True;
LabelVaarin->Visible=False; }

else {LabelVaarin->Visible=True;
LabelOikein->Visible=False;}
}

Siis tämä pätkä toimii oikein, mutta miten toteutan ohjelman niin, että lisäämällä ohjelmaan uuden komentopainikkeen..esim. "ButtonUusiKuva", saan satunnaisesti valitun kuvan näyttöön vaikka 10:n kuvan joukosta ja tälle kuvalle määritetyn oikean nimen toimimaan kuten tuossa "kissa" tapauksessa?

Tämä ei sitten ole mikään koulutehtävä, vaan keski-ikäisen juntin "ruutia ei ole pakko keksiä uudestaan"- kysymys teille, jotka oikeasti älyätte jotain ohjelmoinnista...ite olen ihan muissa töissä, mutta kai vanhanakin saa yrittää jotain uutta..:)

Kiitos vastauksista ja Hyvää Uutta Vuotta kaikille palstalaisille!

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu