javaで簡単なアプリケーションを作ろうと思っています。
上からものが落ちてきて、それをよけるといったものなのですが、衝突判定で躓いてしまっています。
上から落ちてくるものは
drawImageで設定した画像3枚、fillrectで設定した箱のようなもの3つです。
したでよけるものもdrawimageで設定し、keyeventでキー入力を受け付けています。
現在は避けるところまで進みましたが、衝突しても反応がない状況です。
いろいろなページを調べてみましたが、なかなかうまくはいきませんでした。
どなたかお詳しい方、回答お願いします。```
package target;
import javax.swing.;
import java.awt.;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
class MyPanel extends JPanel implements KeyListener
{
int x = 390, y = 700, dir = 0, num = 0;
/赤箱赤箱/
int REx1=130,REx2=170,REx3=130,REx4=170;
int REy1= 20,REy2= 20,REy3= 60,REy4= 60;
int REwidth=40,REheight=40;
/青箱青箱/
int BLx1=380,BLx2=420,BLx3=380,BLx4=420;
int BLy1= 20,BLy2= 20,BLy3= 60,BLy4= 60;
int BLwidth=40,BLheight=40;
/緑箱緑箱/
int GRx1=630,GRx2=670,GRx3=630,GRx4=670;
int GRy1 =20,GRy2 =20,GRy3 =60,GRy4 =60;
int GRwidth = 40,GRheight = 40;
/猫111/
int cat1x1=130,cat1x2=170,cat1x3=130,cat1x4=170;
int cat1y1= 20,cat1y2= 20,cat1y3= 60,cat1y4= 60;
int cat1width=40,cat1height=40;
/猫222/
int cat2x1=380,cat2x2=420,cat2x3=380,cat2x4=420;
int cat2y1= 20,cat2y2= 20,cat2y3= 60,cat2y4= 60;
int cat2width=40,cat2height=40;
/てふてふ/
int tefux1=630,tefux2=670,tefux3=630,tefux4=670;
int tefuy1= 20,tefuy2= 20,tefuy3= 60,tefuy4= 60;
int tefuwidth=40,tefuheight=40;
public MyPanel() { setBackground(Color.BLACK); Thread th = new RefreshThread(this); th.start(); setFocusable(true); addKeyListener(this); } public void paintComponent(Graphics g) { super.paintComponent(g);
*/ Image cat1 = getToolkit().getImage("I:\tetris05^こ\pic\100-100.jpg");
Image cat2 = getToolkit().getImage("I:\tetris05^こ\pic\100-100-2.jpg");
Image tefutefu = getToolkit().getImage("I:\tetris05^こ\pic\100-100-3.jpg");
Image kkkkkkkk = getToolkit().getImage("I:\tetris05^こ\1.JPG"); // ��
Image roooooad = getToolkit().getImage("I:\tetris05^こ\miti.png");
g.drawImage(roooooad, 0, 0, this); g.drawImage(cat1, cat1x1, cat1y1, this); g.drawImage(cat2, cat2x1, cat2y1, this); g.drawImage(tefutefu, tefuwidth, tefuheight, this); g.setColor(Color.RED); g.fillRect(REx1, REy1, REwidth, REheight); g.setColor(Color.BLUE); g.fillRect(BLx1, BLy1, BLwidth, BLheight); g.setColor(Color.GREEN); g.fillRect(GRx1, GRy1, GRwidth, GRheight); g.drawImagekkkkkkkk x, y, this); } public void keyPressed(KeyEvent e) { switch (e.getKeyCode()) { case KeyEvent.VK_RIGHT: x = x + 280; dir = 1; break; case KeyEvent.VK_LEFT: x = x - 280; dir = 3; break; } if (x > 670) { x = 670; } if (x < 110) { x = 110; } num ^= 1; repaint(); } public void keyReleased(KeyEvent e) { } public void keyTyped(KeyEvent e) { }
public class MovingBox extends JFrame {
public MovingBox() {
setBounds(100, 50, 800, 850);
setTitle("Moving Box");
getContentPane().add(new MyPanel());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
public void main(String args[]) { JFrame f = new MovingBox(); f.setVisible(true); }
}
package target;
スレッド
public class RefreshThread extends Thread {
MyPanel p;
public RefreshThread(MyPanel p) {
this.p = p;
}
public void run() { while(true) { p.REy1 = p.REy1 + 15; p.BLy1= p.BLy1 + 30; p.GRy1 = p.GRy1 + 45; p.cat1y1 = p.cat1y1 + 30; p.cat2y1 = p.cat2y1 + 30; p.tefuy1 = p.tefuy1 + 90; try { Thread.sleep(50); // } catch(Exception e) { } p.repaint(); } }
}
コード
あなたの回答
tips
プレビュー