//ボールがブロックに衝突しているかをチェックする public void ballCollisionCheck(ref Ball ball) { bool collisionFlag = false; //trueならブロックとボールは衝突している if (NatureObject.OBJ_BLOCK == this.natureObject) { //ボールの座標がブロックの矩形に重なっていないかをチェックする //ボールのX座標がオブジェクトの矩形より大きく、ボールのX座標が矩形のX座標の幅よりも小さい場合、 //または矩形のX座標がボールのX座標よりも大きく、かつ、矩形のX座標よりもボールのX座標がボールの横幅よりも大きい場合、 //かつ、ボールのY座標が矩形のY座標よりも大きく、ボールのY座標が矩形のY座標の高さよりも大きい場合、 //または矩形のY座標がボールのY座標よりも大きく、さらに矩形のY座標よりもボールのY座標がボールの縦幅よりも大きい場合、 if (((ball.getX() > this.x) && (ball.getX() < (this.x + MapObject.mapObjectWidth)) || (this.x > ball.getX()) && (this.x < (ball.getX() + ball.getBallWidth()))) && ((ball.getY() > this.y) && (ball.getY() < (this.y + MapObject.mapObjectHeight)) || (this.y > ball.getY()) && (this.y < (ball.getY() + ball.getBallHeight())))) { //ブロックの矩形と座標が重なっていたら、ボールを反射させる double angle = ball.getAngle(); ball.setAngle(-angle); collisionFlag = true; } //ブロックを消去する if (collisionFlag == true) { natureObject = NatureObject.OBJ_SPACE; } } return; }
//ボールがスティックに衝突しているかをチェックする public void ballCollisionCheck(ref Ball ball) { //ボールの座標がスティックの矩形に重なっていないかをチェックする //ボールのX座標がオブジェクトの矩形より大きく、ボールのX座標が矩形のX座標の幅よりも小さい場合、 //または矩形のX座標がボールのX座標よりも大きく、かつ、矩形のX座標よりもボールのX座標がボールの横幅よりも大きい場合、 //かつ、ボールのY座標が矩形のY座標よりも大きく、ボールのY座標が矩形のY座標の高さよりも大きい場合、 //または矩形のY座標がボールのY座標よりも大きく、さらに矩形のY座標よりもボールのY座標がボールの縦幅よりも大きい場合、 if (((ball.getX() > this.x) && (ball.getX() < (this.x + Stick.stickWidth)) || (this.x > ball.getX()) && (this.x < (ball.getX() + ball.getBallWidth()))) && ((ball.getY() > this.y) && (ball.getY() < (this.y + Stick.stickHeight)) || (this.y > ball.getY()) && (this.y < (ball.getY() + ball.getBallHeight())))) { //スティックの矩形と座標が重なっていたら、ボールを反射させる double angle = ball.getAngle(); if (DX.GetRand(10) > 5) { angle -= DX.GetRand(10); } else { angle += DX.GetRand(10); } ball.setAngle(-angle); } return; }
//コンストラクタ public GameMain() { //変数の初期化 this.key = new int[256]; this.gameMode = mode.TITLE; //ゲームモードをゲームの新規開始にする //フォントの色とフォントの指定(ゲームクリア時に使用) this.fontType = DX.CreateFontToHandle(null, 64, 5, -1); this.white = DX.GetColor(255, 255, 255); //画面のキャラクターを読み込む this.stickbuf = DX.LoadGraph("gamedata\\stick.png"); this.ballbuf = DX.LoadGraph("gamedata\\ball.png"); this.wallbuf = DX.LoadGraph("gamedata\\wall.png"); this.blockbuf = DX.LoadGraph("gamedata\\block.png"); //ボールとスティックを作る this.ball = new Ball(); this.stick = new Stick(); }