今からはじめるぷろぐらみんぐ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」がキーで動くというようにしただけです。

なんかアクションゲームみたいなものに参考になるかも・・・ですね。