- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- M0ng00se: Hardvert áruhitelre?
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- eBay-es kütyük kis pénzért
- Rap, Hip-hop 90'
- Brogyi: CTEK akkumulátor töltő és másolatai
- bitpork: MOD Júni 13 Augusztus 2- szombat jelen állás szerint.
- btz: Internet fejlesztés országosan!
Új hozzászólás Aktív témák
-
loszerafin
senior tag
válasz
Alvin_ti4200 #1142 üzenetére
Már korábban akartam írni, hogy érdemes ilyen "kis" programoknál megtanulni a kód-dokumentálást, unit tesztelést és a többnyelvűséget
http://java.sun.com/docs/books/tutorial/i18n/index.html
http://java.sun.com/j2se/javadoc/writingdoccomments/
http://www.devx.com/Java/Article/31983/0/page/1 -
rdi
veterán
válasz
Alvin_ti4200 #1136 üzenetére
ó megint valami jó hsz
keyStates pont erre van szükségem... -
loszerafin
senior tag
válasz
Alvin_ti4200 #1138 üzenetére
Remek.
Kissé átpofoztam a kódodat, de nem tudom kipróbálni:
int[] dx={25,85,145,25,85,145,25,85,145};
int[] dy={50,50,50,110,110,110,170,170,170};
int[] keyCodes={512,2,1024,4,256,32,2048,64,4096};
int keyIndex=(int)(Math.random()*9);
sprite.next(dx[keyIndex],dy[keyIndex],keyIndex);
lm.paint(g,0,0);
flushGraphics();
int keyState=getKeyStates();
if ( (keyState & keyCodes[keyIndex]) !=0 ){
score++;
}
else{
if(keyState!=0){
score--;
}
}A keyCodes tömb számai helyett jobb lenne enum-okat használni, úgy érthetőbb lenne a program.
Az else ágban a keyState!=0-nak utána kellene nézni, tényleg azt jelenti-e, hogy nyomtak gombot.És azt hiszem, itt mindent megtalálsz a témádhoz:
és ez se rossz:
[link]Ráadásul ez az utolsó "megvan" magyarul is:
[link] -
loszerafin
senior tag
válasz
Alvin_ti4200 #1136 üzenetére
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.
-
loszerafin
senior tag
válasz
Alvin_ti4200 #1134 üzenetére
Nagyjából érthető, nekem csak a 9 db IF szúrt szemet.
Rakd be tömbbe a lenyomható gombokat, vizsgáld meg, a tömbben van-e a lenyomott gomb
és egyezik-e azzal ami kell neked, ha igen adj pontot, ha nem, vonj le egyet.kb így :
if nyomtak_le_gombot then
pontszam+=(lenyomhato_gombok[veletlen] == lenyomott_gomb) ? 1 : -1;
else lejart_az_ido then /* nem nyomott meg semmit és már vált a lámpa */
pontszam-=1; -
robisz
senior tag
válasz
Alvin_ti4200 #1132 üzenetére
Mit értesz az alatt hogy "a number gombot" lenyomtad??
A "number" itt az eseménykezelő paramétere... a keyPressed MINDEN gomb lenyomásakor meghívódik, és a a number a lenyomott gomb kódja lesz. Az általad bemásolt hibaüzenet alapján azt mondom hogy valami más gond van a kódoddal.... másold be a hibás részt és kiderítjük :-)
-
robisz
senior tag
válasz
Alvin_ti4200 #1128 üzenetére
Szia!
A GameCanvas osztályon van egy getKeyStates() metódus, ezzel tudod lekérdezni a gombok állapotát. Pl.:
int keyState = getKeyStates();
if ((keyState & LEFT_PRESSED) != 0) {
// Balra gomb le van nyomva
}A user input kezelést a fő ciklusodba érdemes betenni mondjuk a renderelés elé. Az 1000 millisec sleep-elés egyébként rengeteg, így maximum 1 fps-el fog futni az animáció
Akár egy 20 millisec-es sleep-elés is megteszi. -
Lortech
addikt
válasz
Alvin_ti4200 #1126 üzenetére
De írd le akkor, hogy mi okozza a problémát.
Példányosítasz a Timerből.
Kiterjeszted a TimerTask osztályt, implementálod a run metódusát annak megfelelően, hogy mit akarsz ismételni, amikor lejár az idő.
Példányosítasz ebből a kiterjesztett osztályból, és paraméterként átadod a Timer példányod schedule metódusának, plusz megadod az ismétlési időközt. -
Lortech
addikt
válasz
Alvin_ti4200 #1124 üzenetére
-
Sianis
addikt
válasz
Alvin_ti4200 #1121 üzenetére
Timer?
Sianis
-
andriscs
aktív tag
válasz
Alvin_ti4200 #16 üzenetére
Hi!
Ez így oké, de majd mikor ZH-t írok Java-ból, akkor mit írjak a lapra? Hogy tessék tanár úr, itt egy link, ezen ellenőrizheti, hogy az általam használt Console osztály létezik, csak nem jegyeztem meg, de amúgy müködik.Megpróbálom ezt a BufferedInputStream.In.Read.Int.Load.Integer.ReadLine.DoWork.Already.Java.Very.Easy.ToUse.This.Input.Read() függvényt, talán működik
-
faster
nagyúr
válasz
Alvin_ti4200 #15 üzenetére
Mondom, hogy eredetileg .NET osztály.
-
andriscs
aktív tag
válasz
Alvin_ti4200 #6 üzenetére
Hi!
Oké, de akkor ebből a Console osztályból kellene származtatnom az eredeti osztályt, hogy elérjem a Console class metódusait. De ez a Console nem ''gyári'' Java osztály, hiába írnám be, hogy class xy extends Console. Szóval vmi eredeti Sun inputolvasás nincs?
[Szerkesztve] -
faster
nagyúr
válasz
Alvin_ti4200 #8 üzenetére
Ez valami extra osztály, nem a Java része?
-
faster
nagyúr
válasz
Alvin_ti4200 #6 üzenetére
Console.ReadInt() ? A Console nem .NET osztály?
Mod: Ja nem, van Java is. Az Console.readInt();
[Szerkesztve]
Új hozzászólás Aktív témák
Hirdetés
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Milyen billentyűzetet vegyek?
- PlayStation 5
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Vicces képek
- Kamionok, fuvarozás, logisztika topik
- Óvodások homokozója
- 5.1, 7.1 és gamer fejhallgatók
- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- További aktív témák...
- Új MSI KATANA 15 Gamer Tervező Laptop 15,6" -35% i7-13620H 10Mag 16/1TB RTX 4060 8GB FHD 144Hz
- HP Omen - 27" IPS - UHD 4K - 144Hz 1ms - NVIDIA G-Sync - FreeSync - HDR 400 - USB-C - KVM Switch
- Garanciális MSI Katana GAMER 15,6"240Hz!i5 12500H(16X4,5Ghz)RTX 3060 6 GB VGA,32-64GB RAM/1TB SSD
- Bivaly MAGYAR Lenovo P1 gen2 (Core I7 32 Gb 1Tb 15" 4K 4Gb Nvidia) Laptopom eladó!!!
- HP ProBook 640 G8, 14" FHD IPS Touch, I5-1145G7 CPU, 16GB DDR4, 256GB SSD, WIN 11
- BESZÁMÍTÁS! MSI B450M R5 5500 32GB DDR4 512GB SSD RTX 3060 12GB Rampage SHIVA Chieftec 600W
- ÁRGARANCIA!Épített KomPhone i5 12400F 16/32/64GB RAM RX 7600 XT 16GB GAMER PC termékbeszámítással
- LG 65B4 - 65" OLED - 4K 120Hz 1ms - NVIDIA G-Sync - FreeSync Premium - HDMI 2.1 - PS5 és Xbox Ready
- Bomba ár! Lenovo IdeaPad 330S-15IKB - i5-8G I 8GB I 256SSD I 15,6" FHD I HDMI I Cam I W11 I Gari!
- Csere-Beszámítás! Asus Rog Strix RTX 3070Ti 8GB GDDR6X Videokártya!
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged