- Projektor topic
- Milyen billentyűzetet vegyek?
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- RAM topik
- Milyen TV-t vegyek?
- Intel Core Ultra 3, Core Ultra 5, Ultra 7, Ultra 9 "Arrow Lake" LGA 1851
- Nem indul és mi a baja a gépemnek topik
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- AMD Navi Radeon™ RX 9xxx sorozat
- TCL LCD és LED TV-k
Új hozzászólás Aktív témák
-
Alvin_ti4200
félisten
örömmel jelentem, hogy négy napnyi kemény munak után elkészültem a megközelítőleg végleges kóddal
-
Alvin_ti4200
félisten
válasz
loszerafin #1139 üzenetére
ó már túl vagyok ezen a részen, megoldottam az időzítést is Timer és TimerTask nélkül
Most írom az RMS részt, hogy tárolni és megjeleníteni is tudjam a HighScore-okat
-
Alvin_ti4200
félisten
válasz
loszerafin #1137 üzenetére
nem titkos, kedden délután már elárulhatom, akkor már túl leszek a bemutatásán és a leadásán
Konzultáltam ma a szakirány tanárommal és azt javasolta, hogy bonstam ketté a render() metódust, mégpedig rajzolós és billentyűzetelemzős részre. Módosítsam ezek alapján a Midletben a szál run() metódusát úgy, hogy először billvizsgálatot csinál, aztán vár valamennyit, aztán egy for ciklusba tegyem bele a rajzolós metódust és ehhez mérten igazítsam mennyi ideig sleepeljen a thread. Tehát pl. 1 mp-es képváltásnál thread.sleep(50) és ciklusváltozó 0-19. Most ezt fogom megpróbálni megcsinálni, remélem sikerrel járok és utána már "csak" az RMS (RecodStore) rész van hátra az eredmények mentéséhez és kiírásához (HighScore).
-
Alvin_ti4200
félisten
válasz
loszerafin #1135 üzenetére
megcsináltam az alábbi módon
(remélem jól értelmeztem a mondani valódat
)
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
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?
-
Alvin_ti4200
félisten
konkrétan azt szeretném elérni, hogy van egy veletlen nevű változóm, ami egy 0-8-ig terjedű szám (ezzel kreálom azt, hogy a 9 szám közül melyik váltson zöldről pirosra (értelemszerűen ezt kell majd lenyomni a billentyűzeten ahhoz, hogy kapjon a játékos egy pontot)), ez alapján csinálnék egy elágazást (jelenleg 9 darab if, de majd bevágom case-be őket
), hogy ha veletlen=0 & GAME_A_PRESSED!=0, akkor pontszam++, else pontszam=(pontszam-1). Na ilyenből csináltam 9 fajta IF-et, csak az a bajom, hogy állandóan növeli a pontszám értékét teljesen függetlenül attól, hogy hozzányúltam-e a billentyűzethez vagy sem.
Ráadásul én a 2,4,5,6,8 gombokkal úgy számoltam, hogy azok működnek UP,LEFT,FIRE,RIGHT,DOWN gombokként, de a keyStates-ük mindnek 0
Így hiába teszem bele az elágazásokba őket, nem fogja érzékelni a program, ha megnyomtam
Remélem úgy nagyjából világos mit szeretnék elérni
-
Alvin_ti4200
félisten
nem működik (void typue not allowod here), feltételben mondom, hogy nem lehet használni, mive a keyPressed(int number) függvény akkor hívódik meg, ha a number gombot lenyomtad
-
Alvin_ti4200
félisten
válasz
Lortech #1127 üzenetére
van két osztályom (a harmadik nem érdekes):
SPRITECANVAS.JAVA
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import java.util.*;public class SpriteCanvas extends GameCanvas{
public Command exitCommand;
public Sprite1 sprite;BackgroundLayer bgLayer;
LayerManager lm;public SpriteCanvas() throws java.io.IOException {
super(false);exitCommand=new Command("Kilépés",Command.EXIT,0);
addCommand(exitCommand);sprite=new Sprite1();
sprite.setPosition(25,50);
bgLayer=new BackgroundLayer();
lm=new LayerManager();
lm.append(sprite);
lm.append(bgLayer);
}void render(){
Graphics g=getGraphics();g.setColor(255,255,255);
g.fillRect(0,0,getWidth(),getHeight());int dx=0,dy=0;
int[] tomb1={25,85,145,25,85,145,25,85,145};
int[] tomb2={50,50,50,110,110,110,170,170,170};
Random rnd=new Random();
int veletlen=rnd.nextInt(8);
dx=tomb1[veletlen];
dy=tomb2[veletlen];
sprite.next(dx,dy,getWidth(),getHeight(),veletlen);lm.paint(g,0,0);
flushGraphics();}
}SPRITE1.JAVA
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import java.util.*;public class Sprite1 extends Sprite{
static final int width=60;
static final int height=60;public int mode=0;
static Random rnd=new Random();
static int[] frame_sequence_1={0,1,2,3,4,5,6,7,8};int framecount=0;
public Sprite1() throws java.io.IOException{
super(Image.createImage("/hello/gomb2.png"),width,height);
setFrameSequence(frame_sequence_1);
}public void next(int dx, int dy, int maxX, int maxY, int randomize){
setPosition(dx,dy);
setFrame(randomize);
}
}A lényeg az lenne, hogy a render vagy next hivások között legyen monjuk egy másodpercnyi idő, amíg a lenyomott gombot (még nincs deklarálva) meg tudom vizsgálni, hogy mi volt az. Apropó létezik olyan függvény, amely a lenyomott gomb kódját adja vissza integerben? Mert keyPressed(int number) függvény van, csak az akkor fut le, ha az adott gombot nyomom meg, nekem meg pont fordítva kéne, hogy lenyomás után el tudjam dönteni, hogy melyik számú (49-57 [KEY_NUM1-KEY_NUM9]) gomb volt az és ennek megfelelően csinálni egy szép nagy case elágazást.
A MainMidlet osztályban az egyik menüponthoz hozzárendeltem ezt az eseményt:
try{
spritecanvas=new SpriteCanvas();
spritecanvas.setCommandListener(this);
Display.getDisplay(this).setCurrent(spritecanvas);
thread=new Thread(this);
thread.start();
} catch (IOException E){
destroyApp(true);
}A Runnable interfész miatt kell bele még egy Run metódus is, ezt a Midlet legvégére szúrtam be és így néz ki:
public void run(){
try{
while((thread.isAlive())&&(spritecanvas!=null)){
spritecanvas.render();
thread.sleep(1000);}
} catch (InterruptedException E1){}
} -
Alvin_ti4200
félisten
-
Alvin_ti4200
félisten
J2ME-ben programozok NetBeans-ben és azt szeretném kérdezni, hogy hogyan tudok időzéítéseket használni? Nagyjából annyi lenne a feladat, hogy egy TiledLayerrel és egy Sprite-tal operálok, az előbbin mozgatom az utóbbit, viszont azt szeretném megoldani, hogy két pozícióváltás között legyen x másodperc, hogy ilyenkor a felhasználó lenyomhasson egy gombot (játékot készítek mobiltelefonra), aztán ha jót nyomott, akkor egy változót megnövelek, ha rosszat, akkor ugyanazt csökkentem. Tehát az idő-, és/vagy időzítéskezelés alapjait szeretném tudni Java-ban/J2ME-ben, előre is köszönöm, szakirányom egyik munkájához kellene
Új hozzászólás Aktív témák
Hirdetés
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Gigabyte X299 UD4 Pro LGA 2066 alaplap, i7-7820X proci, 64 GB DDR4-3200 MHz RAM
- Dell Alienware AW3423DWF Oled 165HZ Gamer Monitor (garis)
- Bomba ár! Lenovo ThinkPad Yoga X380 - i7-8G I 16GB I 256SSD I 13,3" FHD Touch I Cam I W11 I Gari!
- Bomba ár! Lenovo ThinkPad T590 - i5-8GEN I 16GB I 256GB SSD I 15,6" FHD Touch I Cam I W11 I Gari!
- Bomba ár! Lenovo ThinkPad T15 G1 - i7-10GEN I 16GB I 512GB SSD I 15,6" FHD I Cam I W11 I Gari!
- KIÁRUSÍTÁS - HP Elite / ZBook Thunderbolt 3 docking station (akár 2x4K felbontás)
- LG K61 128GB, Kártyafüggetlen, 1 Év Garanciával
- Telefon felvásárlás!! iPhone 11/iPhone 11 Pro/iPhone 11 Pro Max
- LG 27MR400 - 27" IPS LED - 1920x1080 FHD - 100hz 5ms - AMD FreeSync - Villódzásmentes
- Acer TravelMate P214 i3-1115G4 12GB 512GB 14" FHD 1év garancia
Állásajánlatok
Cég: FOTC
Város: Budapest