Hirdetés

Keresés

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

  • rdi
    veterán

    megcsináltam az alábbi módon:) (remélem jól értelmeztem a mondani valódat:D)

    int[] tomb1={25,85,145,25,85,145,25,85,145};
    int[] tomb2={50,50,50,110,110,110,170,170,170};
    int[] gombtomb={512,2,1024,4,256,32,2048,64,4096};
    Random rnd=new Random();
    int veletlen=rnd.nextInt(8);
    dx=tomb1[veletlen];
    dy=tomb2[veletlen];
    sprite.next(dx,dy,veletlen);
    lm.paint(g,0,0);
    flushGraphics();
    int keyStates=getKeyStates();
    if (keyStates==gombtomb[veletlen]){
    pontszam++;
    }
    else{
    if(keyStates!=0){
    pontszam=(pontszam)-1;
    }
    }

    Apró szépséghiba, hogy az időzítések össze-visszasága miatt a jó billentyűleütéseket is néha rossznak veszi és fordítva, illetve valamiért a 2,4,5,6,8 gombok értéke nulla:F Pedig tudomásom szerint azok felveszik a LEFT_PRESSED, RIGHT_PRESSED, UP_PRESSED, DOWN_PRESSED és FIRE_PRESSED értékeit is. A gombtomb[]-ben a gombok sorrendjében tároltam le a koordinátákat, tehát az index maga a gomb száma. Lehet az a gond, hogy a paint és/vagy flushgraphics után tettem a feltételeket?

    ó megint valami jó hsz
    keyStates pont erre van szükségem...

  • loszerafin
    senior tag

    megcsináltam az alábbi módon:) (remélem jól értelmeztem a mondani valódat:D)

    int[] tomb1={25,85,145,25,85,145,25,85,145};
    int[] tomb2={50,50,50,110,110,110,170,170,170};
    int[] gombtomb={512,2,1024,4,256,32,2048,64,4096};
    Random rnd=new Random();
    int veletlen=rnd.nextInt(8);
    dx=tomb1[veletlen];
    dy=tomb2[veletlen];
    sprite.next(dx,dy,veletlen);
    lm.paint(g,0,0);
    flushGraphics();
    int keyStates=getKeyStates();
    if (keyStates==gombtomb[veletlen]){
    pontszam++;
    }
    else{
    if(keyStates!=0){
    pontszam=(pontszam)-1;
    }
    }

    Apró szépséghiba, hogy az időzítések össze-visszasága miatt a jó billentyűleütéseket is néha rossznak veszi és fordítva, illetve valamiért a 2,4,5,6,8 gombok értéke nulla:F Pedig tudomásom szerint azok felveszik a LEFT_PRESSED, RIGHT_PRESSED, UP_PRESSED, DOWN_PRESSED és FIRE_PRESSED értékeit is. A gombtomb[]-ben a gombok sorrendjében tároltam le a koordinátákat, tehát az index maga a gomb száma. Lehet az a gond, hogy a paint és/vagy flushgraphics után tettem a feltételeket?

    Jól értetted, így gondoltam, látom, gyorsan "fogod" az adást

    Lenne pár megjegyzésem a programozási stílussal kapcsolatban:

    1. Próbálj meg angol azonosítókat használni, jobban illenek a programozáshoz
    2. Próbálj meg olyan azonosítókat választani, amik a funkcióra utalnak és nem a
    tartalomra, vagy típusra (pl: veletlen, tomb nem szerencsés)
    3. Próbáld meg betartani a Sun névkonvencióit (változónevek első betűje kicsi, ha több szóból áll, akkor a többi kezdőbetű nagy
    4. Szeparáld a kódodat. rajzolás és user input mehetne külön metódusba, akár külön osztályban is lehetnének (cohesion)

    Találtam egy fórumot, talán segít, rákeresve a getkeystates szóra van pár programpélda
    [L]http://developer.sonyericsson.com/search.jspa?objID=c2&q=getkeystates[/L]

    Ha az a gyanúd, hogy az időzítések miatt megy össze vissza a programod, olvasd el ezt:

    [L]http://java.sun.com/docs/books/tutorial/essential/concurrency/sync.html[/L]
    (Legyenek a metódusaid syncronized-ek)

    De lehet megoldás az is, hogy nevezzük egy "körnek" a lámpa kigyúlásától a gomb lenyomásáig vagy az idő lejártáig tartó játékrészt.
    Ekkor a kör végén hagyd a szálakat összefutni (mindegyik fejeződjön be), majd indítsd újra a szálakat, így nem lesz olyan, hogy pl. az előző lámpához tartozó gombnyomást fogja a programod jónak érzékelni. Meg egyébként is "tisztább, szárazabb érzés" lesz, hogy a szálaid ugyanazt a "kört" kezelik.

    Hajrá, kíváncsi vagyok a programodra, ha nem titkos, küldhetnél egy forrást az emailemre.

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