Java help: make image move across the screen -


i've been having trouble quite while trying make space shooter no avail, i'm trying make bullet move across screen in space invaders etc when player presses space bar bullet should appear player's x position , move right across screen.

import java.awt.color; import java.awt.graphics; import java.awt.image; import java.awt.event.keyadapter; import java.awt.event.keyevent; import java.awt.event.mouseadapter; import java.awt.event.mouseevent;  import javax.swing.imageicon; import javax.swing.jframe; public class game extends jframe{  boolean run = true; boolean fired = false;  image player; image bullet;  int playerx = 100; int playery = 200;  int bulletx; int bullety;   public game(){     //load images:     imageicon playeri = new     imageicon("c:/users/dan/workspace/shooterproject/bin/shooterproject/ship.png");     player = playeri.getimage();     imageicon bulleti = new     imageicon("c:/users/dan/workspace/shooterproject/bin/shooterproject/bullet.png");     bullet = bulleti.getimage();     //set game        addkeylistener(new al());         addmouselistener(new mouse());         init();  }  private image dbimage; private graphics dbg;   public static void main(string[] args) {   new game(); }   //when program runs, thins initialised here  public void init(){     windowmanager(); } public void paintcomponent(graphics g){      if(run == true){         g.drawimage(player, playerx, playery, this);     }     if(fired == true){         g.drawimage(bullet, bulletx, bullety, this);     }      repaint();  }  public void paint(graphics g){     dbimage = createimage(getwidth(), getheight());     dbg = dbimage.getgraphics();     paintcomponent(dbg);     g.drawimage(dbimage,0,0,this); }   public void bullet(){     bulletx = playerx;     bullety = playery;     while(fired == true){         bulletx = bulletx + 10;         if(bulletx == 800){             bullet = null;             fired = false;         }     }  }   public void windowmanager(){        jframe f = new jframe();        settitle("engine");       setvisible(true);       setresizable(false);       setsize(800,400);       setbackground(color.black);       setdefaultcloseoperation(exit_on_close); } public class al extends keyadapter{     public void keypressed(keyevent e){          int keycode = e.getkeycode();         if((keycode == keyevent.vk_up) && (run == true) && (playery - 20 > 0)){                playery = playery - 10;         }else if((keycode == keyevent.vk_down) && (run == true) && (playery + 20 < 400)){             playery = playery + 10;         }         if((keycode == keyevent.vk_space) && (fired == false)){             fired = true;             if(fired == true){                 bullet();             }         }      }      public void keyreleased(keyevent e){     } }  public class mouse extends mouseadapter { public void mousepressed(mouseevent e) {      double x = e.getx();     double y = e.gety();  } } } 

however

when run code without while loop bullet appears @ player's x position when while loop there when player presses x button nothing happens, bullet doesnt appear!

would able assist me in how can make bullet appear , move across screen? thanks

this because not drawing bullet until it's out of range, should not use while loop way, need google 'game loop' until here snipet may help, note bad should work:

public void paintcomponent(graphics g){      if(run == true){         g.drawimage(player, playerx, playery, this);          if(fired == true) {             bulletx = bulletx + 10;             if(bulletx > 800 || bulletx < 0){                 fired = false;             }              g.drawimage(bullet, bulletx, bullety, this);         }          repaint();     }  }  public void bullet(){     bulletx = playerx;     bullety = playery; } 

one final note, move code in paint methode dbimage = createimage(getwidth(), getheight()) constructor or init() because creating new image every frame.


Comments

Popular posts from this blog

php - Submit Form Data without Reloading page -

linux - Rails running on virtual machine in Windows -

php - $params->set Array between square bracket -