※ ChatGPTを利用し、要約された質問です(原文:多角形を動かす範囲を設定したいのですが…。)
多角形を動かす範囲を設定したいのですが…。
このQ&Aのポイント
KeyListenerを使用して多角形の動かす範囲を設定する方法を教えてください。
Javaで多角形を動かすときにKeyListenerを使って範囲を設定する方法について教えてください。
KeyListenerを使って多角形を動かす範囲を設定したいのですが、どうすればいいでしょうか。
多角形をKeyListenerで動かす範囲を設定
したいのですがどうすればいいでしょうか。
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Polygon;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class JavaGame2 {
public static void main(String age[]) {
JFrame frame = new JFrame();
frame.setTitle("テスト");
frame.setSize(400, 400);
frame.setLocation(1000, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MyPanel panel = new MyPanel();
frame.add(panel);
frame.setVisible(true);
}
}
class MyPanel extends JPanel implements KeyListener{
private Ziki ziki;
public MyPanel() {
setBackground(Color.black);
ziki = new Ziki();
addKeyListener(this);
setFocusable(true);
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
ziki.draw(g);
}
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
switch(key) {
case KeyEvent.VK_UP : ziki.moveUpZiki(); break;
case KeyEvent.VK_RIGHT :ziki.moveRightZiki(); break;
case KeyEvent.VK_DOWN : ziki.moveDownZiki(); break;
case KeyEvent.VK_LEFT : ziki.moveLeftZiki(); break;
}repaint();
}
public void keyReleased(KeyEvent e){}
public void keyTyped(KeyEvent e){}
}
class Ziki {
private Polygon p;
public Ziki() {
int[] xpoints = {240,260,250};
int[] ypoints = {260,260,240};
p = new Polygon(xpoints,ypoints,xpoints.length);
}
void draw(Graphics g) {
g.fillPolygon(p);
}
public void moveLeftZiki() {
for (int i=0; i < p.xpoints.length; i++ ) {
p.xpoints[i] -= 5;
}
}
public void moveRightZiki() {
for (int i=0; i < p.xpoints.length; i++ ) {
p.xpoints[i] +=5;
}
}
public void moveUpZiki() {
for (int i=0; i < p.ypoints.length; i++ ) {
p.ypoints[i] -= 5;
}
}
public void moveDownZiki() {
for (int i=0; i < p.ypoints.length; i++ ) {
p.ypoints[i] += 5;
}
}
}