質問内容
質問を評価する
(0ポイント)
|
javaでSTGを作ろうと思っています。 現在は自機の移動と弾一発、発射できます。 しかし、左斜め上に移動している時だけ弾が発射しません。他の方向に移動している時は弾がでます。 原因が分かれば教えてください。
import java.awt.*; import java.awt.event.*;
public class Stg extends Frame implements Runnable,KeyListener{ Image pi=getToolkit().getImage("test.png"); Image tama=getToolkit().getImage("06.png"); Image black=getToolkit().getImage("black.jpg"); int px=300,py=450,tx,ty=-100; int key[]=new int[5];
public static void main(String[] args) { new Stg();
} public Stg(){ Thread t; setSize(800,500); setVisible(true); addWindowListener(new Ada()); addKeyListener(this); t = new Thread(this); t.start();
} public void run(){ try{ while(true){ action(); repaint(); Thread.sleep(20); } }catch(Exception e){} } public void update(Graphics g){ paint(g); } public void paint(Graphics g){ g.drawImage(black,0,0,this); g.drawImage(pi,px,py,this); g.drawImage(tama,tx+24,ty,this); } public void action(){ Dimension d = getSize();
if(key[0] == 1){ py -=4; if(py < 0){ py = 0; } }
if(key[1] == 1){ py +=4; if(py > d.height){ py = d.height; } }
if(key[2] == 1){ px -=4; if(px < 0){ px = 0; } }
if(key[3] == 1){ px +=4;
if(px > d.width){ px = d.width; } }
if(ty==-100){ if(key[4] == 1){ tx=px; ty=py; }} if(ty>0){ ty-=5; } if(ty<1){ ty=-100; } } public void keyTyped(KeyEvent e){ } public void keyPressed(KeyEvent e){ int keyn; keyn=e.getKeyCode(); switch(keyn){ case KeyEvent.VK_UP: key[0]=1; break; case KeyEvent.VK_DOWN: key[1] =1; break; case KeyEvent.VK_LEFT: key[2] =1; break; case KeyEvent.VK_RIGHT: key[3] =1; break; case KeyEvent.VK_SPACE: key[4]=1; break; } } public void keyReleased(KeyEvent e){ int keyn;
keyn=e.getKeyCode();
switch(keyn){
case KeyEvent.VK_UP: key[0] =0; break;
case KeyEvent.VK_DOWN: key[1] =0; break;
case KeyEvent.VK_LEFT: key[2] =0; break; case KeyEvent.VK_RIGHT: key[3] =0; break; case KeyEvent.VK_SPACE: key[4] =0; break; }
} } class Ada extends WindowAdapter { public void windowClosing(WindowEvent e){
System.exit(0); } }
|