今からはじめるぷろぐらみんぐ33
夜勤前なので寝たいのですが、そういえばシューティングゲームみたいに、キーボードのキーで動くようなプログラムを書いてなかったと思うので、ちょっとggてサンプルを作ってみました。
参考元のリンクです。
java — JFrameでKeyListenerを使用する方法
自分の変更した部分は、コメントで記載しました。(とぉーっても昔は、こんな感じで、プログラムのどこを直したか記録をとっていました。なので昔のプログラムの修正の参考に?なるかなぁ?
サブバージョンなどのバージョン管理というものが出てくる前の時代ですね。(変更したのはMainDrawのみ。)
MainDraw
-------------------------------------------------------------
package sample16;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JComponent;
public class MainDraw extends JComponent {
public int x = 50;
public int y = 50;
public void paintComponent(Graphics g) {
super.paintComponent(g);
//mod start ma2 2021/08/05
Image img = null;
try {
img = ImageIO.read(new File("ぺんぎん.png"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
g.drawImage(img, x, y, 50, 50, Color.BLACK, null);
// g.drawRect(x, y, 50, 50);
// g.fillRect(x, y, 50, 50);
// g.setColor(Color.BLACK);
//mod end ma2 2021/08/005
}
public void moveRight() {
x = x + 5;
repaint();
}
public void moveLeft() {
x = x - 5;
repaint();
}
public void moveDown() {
y = y + 5;
repaint();
}
public void moveUp() {
y = y - 5;
repaint();
}
}
-------------------------------------------------------------
MainFrame
-------------------------------------------------------------
package sample16;
import java.awt.Dimension;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
public class MainFrame extends JFrame implements KeyListener{
private MainDraw draw;
public void keyPressed(KeyEvent e) {
System.out.println("keyPressed");
}
public void keyReleased(KeyEvent e) {
if(e.getKeyCode()== KeyEvent.VK_RIGHT)
draw.moveRight();
else if(e.getKeyCode()== KeyEvent.VK_LEFT)
draw.moveLeft();
else if(e.getKeyCode()== KeyEvent.VK_DOWN)
draw.moveDown();
else if(e.getKeyCode()== KeyEvent.VK_UP)
draw.moveUp();
}
public void keyTyped(KeyEvent e) {
System.out.println("keyTyped");
}
public MainFrame(){
this.draw=new MainDraw();
addKeyListener(this);
setFocusable(true);
setFocusTraversalKeysEnabled(false);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
MainFrame frame = new MainFrame();
frame.setTitle("Square Move Practice");
frame.setResizable(false);
frame.setSize(600, 600);
frame.setMinimumSize(new Dimension(600, 600));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(frame.draw);
frame.pack();
frame.setVisible(true);
}
});
}
}
-------------------------------------------------
なにをどう変更したかは、変更前は、
四角を書いて、四角を塗り潰した画像がキーでうごく、というプログラムだったのに対し、自分の用意した画像「ぺんぎん.png」がキーで動くというようにしただけです。
なんかアクションゲームみたいなものに参考になるかも・・・ですね。