im trying create game in java. @ first i've made jpanel , made fps counter , backround white. after i've tried made when pressing escape, jpanel shutting down , i've tried make when pressing space, backround moving green after that, when im trying start, jpanel moving grey backround , fps counter has been disappear.
this frame class
public class frame extends jframe{ public static void main(string[] args) { new frame(); } public frame(){ new jframe(); this.settitle("tower defence - sahar haine"); this.setdefaultcloseoperation(exit_on_close); this.setextendedstate(maximized_both); this.setundecorated(true); this.setresizable(false); this.setvisible(true); screen screen = new screen(this); this.add(screen); }
this screen class:
public class screen extends jpanel implements runnable{ thread thread = new thread(this); frame frame; private int fps = 0; public int scene; public boolean running = false; public screen(frame frame){ this.frame = frame; this.frame.addkeylistener(new keyhandller(this)); thread.start(); } @override public void paintcomponent(graphics g){ g.clearrect(0, 0, this.frame.getwidth(), this.frame.getheight()); g.drawstring(fps + "", 10, 10); if(scene == 0){ g.setcolor(color.blue); }else{ } g.setcolor(color.green); g.fillrect(0, 0, this.frame.getwidth(), this.frame.getheight()); } public void run() { system.out.println("success"); long lastframe = system.currenttimemillis(); int frames = 0; running = true; scene = 0; while(running){ try { repaint(); frames++; if(system.currenttimemillis() - 1000>= lastframe){ fps = frames; frames = 0; lastframe = system.currenttimemillis(); } thread.sleep(1); } catch (interruptedexception ex) { logger.getlogger(screen.class.getname()).log(level.severe, null, ex); } } system.exit(0); } public class keytyped{ public void keyesc(){ running = false; } public void keyspace() { scene = 1; }
and key handler class:
public class keyhandler implements keylistener{ private screen screen; private screen.keytyped keytyped; public keyhandler(screen screen){ this.screen = screen; this.keytyped = this.screen.new keytyped(); } public void keytyped(keyevent e) { } public void keypressed(keyevent e) { int keycode = e.getkeycode(); system.out.println(e.getkeycode()); if(keycode == 27){ this.keytyped.keyesc(); } if(keycode == 27){ this.keytyped.keyspace(); } } public void keyreleased(keyevent e) { }
one issue jumps out have hard coded "keycode = 27" both escape , space not correct. "27 - escape" , "32 - space". rather hard code values, please use keyevent.vk_escape , keyevent.vk_space documented here, keyevents
edit 1
also make draw string after "fill" or else "fill" on paint fps string , not see it.
Comments
Post a Comment