Hirdetés
- Megérkezett a Google Pixel 7 és 7 Pro
- Milyen okostelefont vegyek?
- Honor Magic8 Lite - a félig sikerült bűvésztrükk
- Yettel topik
- Komoly kihívót küldött a konkurenciára a Honor
- Honor Magic6 Pro - kör közepén számok
- Fotók, videók mobillal
- Samsung Galaxy Z Flip6 - színt lép
- Messze nyolcezer fölött!
- uleFone Power
Ú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?:))
- 5070
- HP Victus 16 - 16.1"FHD 144Hz - Ryzen 5 7640HS - 32GB - 1TB - Win11 -RTX 4050 - 1,5 év gari - MAGYAR
- SAPPHIRE NITRO+ AMD Radeon RX 7900 XT Vapor-X 20G
- ÚJ BONTATLAN Apple Watch Series SE3 40mm Stairlight Azonnal Átvehető DEÁK TÉRNÉL 1 Év Apple Garancia
- G.SKILL Aegis 16GB (2x8GB) DDR4 3200MHz F4-3200C16D-16GIS új 2 pár
- Akció!!! Lenovo ThinkPad P15 Gen 1 Intel i7-10875H 32GB 1000GB Nvidia Quadro RTX 3000 1 év garancia
- ÁRGARANCIA!Épített KomPhone i7 14700KF 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- Eladó Apple iPhone 13 Mini 128GB / 12 hó jótállás
- Referencia Weboldallal Világítós bill+laptop bill magyarítás. Rania 3M -is! Touchpadok is.Posta ok
- HP EliteBook 840 G7 i5-10210U 16GB 256GB FHD 400nit 1 év garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest

)
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?
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




