Hirdetés
- Flashback: Építsünk PC-t akciós alkatrészekből, lassan. upd: 10.03
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- Lalikiraly: Kinek milyen setupja van?
- sziku69: Szólánc.
- LordAthis: RETRÓnia - RETRÓ Mánia - Úton van hozzám egy csodás történelmi darab!
- Elektromos rásegítésű kerékpárok
- GoodSpeed: KLINTHOLM 3 fiókos fekete, acél, zárható kiegészítő elem
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
Ú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
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Okos Otthon / Smart Home
- Olyan lesz a Google Térkép, mint a segítőkész haver az anyósülésen
- Szeged és környéke adok-veszek-beszélgetek
- Xiaomi 15T Pro - a téma nincs lezárva
- Lakáshitel, lakásvásárlás
- Milyen routert?
- OLED monitor topic
- PlayStation 5
- Lassú lett a PC? Micsoda meglepetés: egy Windows frissítés lehet a ludas
- További aktív témák...
- iPhone 17 PRO 256GB makulátlan 1 hónapos KÁRTYAFÜGGETLEN! 2026 szeptember 25-ig Apple garancia!
- Gamer 17' 144hz Asus ROG i7, RTX 2070 Super, 2TB m.2 SSD
- R5 9600X/MSI PRO B650S-WIFI/32GB DDR5 6500MHz/1TB M.2/4TB HDD/RTX 5070 OC/750W.PLATINUM/ARGB CSODA
- LOGITECH G Pro X Superlight 2 Fehér INGYEN SZÁLLÍTÁS!
- Hynix 16GB 2933MHz DDR4
- GYÖNYÖRŰ iPhone 13 Pro 256GB Sierra Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS3360, 100% Akkumulátor
- 4db x Seagate Ironwolf Pro 10 Tb SATA3 merevlemez
- Samsung Galaxy S22 5G 128GB, Kártyafüggetlen, 1 Év Garanciával
- 13-14" Új és használt laptopok , üzletitől a gamerig , kedvező áron. Garanciával !
- Új és újszerű 13-14 Gamer, ultrabook, üzleti, 2in1, X360, Touch készülékek kedvező áron Garanciával
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest




