Keresés

Új hozzászólás Aktív témák

  • kovisoft

    őstag

    válasz t256 #15555 üzenetére

    Azt is csinálhatod, hogy az eredeti megoldásodat annyiban módosítod, hogy a bekertSor és bekertOszlop értékadást ismételgeted, ha olyan értékeket kaptál, hogy az adott helyen a jatekter-ben van már valami. Pl.:

    int bekertSor;
    int bekertOszlop;
    do {
    bekertSor = rnd.Next(0, 3);
    bekertOszlop = rnd.Next(0, 3);
    } while (jatekter[bekertSor, bekertOszlop] != '_');

    Itt lehetne ugye végtelen ciklus akkor, ha már minden mező ki van töltve (vagy ha annyira rossz a véletlenszám-generátor, hogy bizonyos kombinációt soha nem dob ki). A korrekt megoldáshoz ezt az esetet is le kellene kezelned valahogy (pl. megnézed, van-e még egyáltalán üres mező, vagy csak szimplán kilépsz kellően sok lépés után, stb.).

    De mivel ez egy beadandó, és a legegyszerűbb megoldás elkészítése is gondot okoz, ezért szerintem a korábbi értekezést a tökéletes megoldásról most javarészt figyelmen kívül hagyhatod, feltéve, hogy nem hívod meg a függvényedet azután is, hogy már betelt a jatekter. De azért nem árt, ha tisztában vagy ennek a megoldásnak a buktatóival.

  • Drizzt

    nagyúr

    válasz t256 #15555 üzenetére

    Ez nem lesz jó:
    else { jatekter[bekertSor+1, bekertOszlop+1] = jel; }
    , mert oda kellene figyelned arra, hogy nehogy a 4. sorba, vagy 4. oszlopba próbáld rakni a jelet.
    Legegyszerűbb, ha meghívod újra a egyJeletVeletlenLerak függvényt, rekurzívan. Ezzel azt érnéd el, hogy amikor már foglalt helyet választott ki, akkor megpróbál egy másikat választani helyette.
    (Amúgy nem eleve 3 X - 2 O-t, vagy 3 O - 2 X-et kellene lerakni? Ez így eléggé "cinkelt" amőba lesz.)

Új hozzászólás Aktív témák