これは、12 年生のオブジェクト指向プログラミング プロジェクトです。
ボール オブジェクトを構築するために、Ball というクラスがあります。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class Ball{
private double xPos;
private double yPos;
private int direction;
public Ball(int ixPos, int iyPos, int idirection){
xPos = ixPos;
yPos = iyPos;
direction = idirection;
}
public int returnX(){
return (int)xPos;
}
public int returnY(){
return (int)yPos;
}
public int returnDirection(){
return direction;
}
public void move(){
xPos += 1*Math.cos(Math.toRadians(direction));
yPos -= 1*Math.sin(Math.toRadians(direction));
}
public void collide(int collideWith){
if(collideWith==1){//collide with left wall
if(90<direction && direction<180){
direction = 180-direction;
}
if(180<direction && direction<270){
direction = 540-direction;
}
}
if(collideWith==2){//collide with right wall
if(0<direction && direction<90){
direction = 180-direction;
}
if(270<direction && direction<360){
direction = 540-direction;
}
}
if(collideWith==3){//collide with up wall
if(0<direction && direction<90){
direction = 360-direction;
}
if(90<direction && direction<180){
direction = 360-direction;
}
}
if(collideWith==4){//collide with down wall
direction = 360-direction;
}
}
public void collidePaddle(int collidePos){
if(collidePos!=50 && collidePos!=0){
direction = (50-collidePos)*180/50;
}
}
}
「move」関数でわかるように、現在、ボールは非常に低速で移動しています。しかし、私はボールをより速く飛ばす必要があります。1 を 5 のように変更すると、問題が発生します。ボールが壁またはブロックに当たって方向を変えるかどうかをチェックするメイン クラスでは、ボールが毎回移動できるピクセル数が 1 より大きい場合、ボールは壁またはブロックに入ります。
私には、この問題を解決する方法がないように思えます。どこから考え始めるのかわかりません。衝突などをチェックするより良い方法はありますか?
ありがとうございました。