#1
by ao213 » 6年前
ブロック崩しを作っていたのですが、ボールのあたり判定のなかにラケットのあたり判定を入れたいのですがどうしたらいいですか??
コード:
#include "DxLib.h"
void b_move(int& bx, int& by, int& bsx, int& bsy)
{
//ボールの移動
bx = bx + bsx;
by = by + bsy;
//ボールのあたり判定
if (bx < 5 || bx>640 - 5)
{
bsx *= -1;
}
if (by <= 0 || by > 480 - 5)
{
bsy *= -1;
}
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
unsigned int Cr;
int crx,cry,crz;//色用関数
int bx, by, bsx, bsy;//ボール用関数
char key[256];//キー配列
int rx, ry, rlength, rheight,rsx;//ラケット用関数
ChangeWindowMode(true);
if (DxLib_Init() == 1)
{
return -1;
}
SetDrawScreen(DX_SCREEN_BACK);
//色の数値
crx = 255;
cry = 0;
crz = 255;
//ラケットの数値
rx = (640 / 2) - (100 / 2);
ry = 460;
rlength = 100;
rheight = 10;
rsx = 8;
//ボールの数値
bx = 640 / 2;
by = ry / 2;
bsx = -7;
bsy = 7;
//色の数値
Cr = GetColor(crx, cry, crz);
///メインループ///
while (ProcessMessage() != -1)
{
ClearDrawScreen();
GetHitKeyStateAll(key);
//ラケットの移動
if (key[KEY_INPUT_RIGHT])
{
rx = rx + rsx;
}
if (key[KEY_INPUT_LEFT])
{
rx = rx - rsx;
}
//ラケットの移動範囲
if (rx > 640 - rlength)
{
rx = 640 - rlength;
}
if (rx < 0)
{
rx = 0;
}
b_move(bx, by, bsx, bsy);
DrawCircle(bx, by, 5, Cr, TRUE);
DrawBox(rx, ry, rx + rlength, ry + rheight, Cr, TRUE);
ScreenFlip();
}
DxLib_End();
return 0;
}
ブロック崩しを作っていたのですが、ボールのあたり判定のなかにラケットのあたり判定を入れたいのですがどうしたらいいですか??
[code]
#include "DxLib.h"
void b_move(int& bx, int& by, int& bsx, int& bsy)
{
//ボールの移動
bx = bx + bsx;
by = by + bsy;
//ボールのあたり判定
if (bx < 5 || bx>640 - 5)
{
bsx *= -1;
}
if (by <= 0 || by > 480 - 5)
{
bsy *= -1;
}
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
unsigned int Cr;
int crx,cry,crz;//色用関数
int bx, by, bsx, bsy;//ボール用関数
char key[256];//キー配列
int rx, ry, rlength, rheight,rsx;//ラケット用関数
ChangeWindowMode(true);
if (DxLib_Init() == 1)
{
return -1;
}
SetDrawScreen(DX_SCREEN_BACK);
//色の数値
crx = 255;
cry = 0;
crz = 255;
//ラケットの数値
rx = (640 / 2) - (100 / 2);
ry = 460;
rlength = 100;
rheight = 10;
rsx = 8;
//ボールの数値
bx = 640 / 2;
by = ry / 2;
bsx = -7;
bsy = 7;
//色の数値
Cr = GetColor(crx, cry, crz);
///メインループ///
while (ProcessMessage() != -1)
{
ClearDrawScreen();
GetHitKeyStateAll(key);
//ラケットの移動
if (key[KEY_INPUT_RIGHT])
{
rx = rx + rsx;
}
if (key[KEY_INPUT_LEFT])
{
rx = rx - rsx;
}
//ラケットの移動範囲
if (rx > 640 - rlength)
{
rx = 640 - rlength;
}
if (rx < 0)
{
rx = 0;
}
b_move(bx, by, bsx, bsy);
DrawCircle(bx, by, 5, Cr, TRUE);
DrawBox(rx, ry, rx + rlength, ry + rheight, Cr, TRUE);
ScreenFlip();
}
DxLib_End();
return 0;
}
[/code]