質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

0回答

1112閲覧

java衝突判定

tokucha

総合スコア8

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2016/10/28 01:36

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(); } }

}

コード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

A-pZ

2016/10/28 01:43

コードはコードブロックで記載すると、コードを見てもらう方と、コードを書いた自分も見やすくなりますので、是非コードブロックで囲いましょう。コードブロックを開始するには、改行をしましょう。
tokucha

2016/10/28 02:17

編集で改行してコードでうったのですが変わらなかったので再投稿しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問