#3
by keito94 » 7年前
>>DIXQさん
わかりました。
ソースコード全体を掲示します。
Joypad.h
コード:
#pragma once
class CJoyPad {
public:
int Input, EdgeInput;
void Update();
int Get(int JoyPadCode);
};
JoyPad.cpp
コード:
#include "Main.h"
#include "JoyPad.h"
void CJoyPad::Update() {
int i;
i = GetJoypadInputState(DX_INPUT_KEY_PAD1);
EdgeInput = i & ~Input;
Input = i;
}
int CJoyPad::Get(int JoyPadCode) {
return Input&JoyPadCode;
}
Player.h
コード:
#pragma once
#include "Mover.h"
class CPlayer : public CMover {
int Dir;
public:
CPlayer(float x, float y);
virtual bool Move();
virtual void Draw();
};
Player.cpp
コード:
#include "Main.h"
#include "Player.h"
#include "JoyPad.h"
CJoyPad JoyPad;
CPlayer::CPlayer(float x, float y)
:CMover(x, y, -8, -8, 8, 8),Dir(0) {
}
bool CPlayer::Move() {
JoyPad.Update();
if (JoyPad.Get(PAD_INPUT_LEFT)) {
VX = -3.0F;
Dir = 1;
}
else if (JoyPad.Get(PAD_INPUT_RIGHT)) {
VX = 3.0F;
Dir = 0;
}
else {
VX = 0;
}
return true;
}
void CPlayer::Draw() {
DrawRotaGraphF(X, Y, 1.0, 0, Game->PlayerGh[0], TRUE, Dir);
}
Mover.h
コード:
#pragma once
class CMover {
public:
float X, Y, L, T, R, B;
float VX, VY;
CMover(float x, float y);
CMover(float x, float y, float l, float t, float r, float b);
bool Hit(CMover* m);
};
Mover.cpp
コード:
#include "Mover.h"
CMover::CMover(float x, float y)
:X(x), Y(y) {
}
CMover::CMover(float x, float y, float l, float t, float r, float b)
:X(x), Y(y), L(l), T(t), R(r), B(b), VX(0.0F), VY(0.0F) {
}
bool CMover::Hit(CMover* m) {
return X + L < m->X + m->R&& m->X + m->L < X + R&&Y + T < m->Y + m->B&&m->Y + m->T < Y + B;
}
>>DIXQさん
わかりました。
ソースコード全体を掲示します。
Joypad.h
[code]
#pragma once
class CJoyPad {
public:
int Input, EdgeInput;
void Update();
int Get(int JoyPadCode);
};
[/code]
JoyPad.cpp
[code]
#include "Main.h"
#include "JoyPad.h"
void CJoyPad::Update() {
int i;
i = GetJoypadInputState(DX_INPUT_KEY_PAD1);
EdgeInput = i & ~Input;
Input = i;
}
int CJoyPad::Get(int JoyPadCode) {
return Input&JoyPadCode;
}
[/code]
Player.h
[code]
#pragma once
#include "Mover.h"
class CPlayer : public CMover {
int Dir;
public:
CPlayer(float x, float y);
virtual bool Move();
virtual void Draw();
};
[/code]
Player.cpp
[code]
#include "Main.h"
#include "Player.h"
#include "JoyPad.h"
CJoyPad JoyPad;
CPlayer::CPlayer(float x, float y)
:CMover(x, y, -8, -8, 8, 8),Dir(0) {
}
bool CPlayer::Move() {
JoyPad.Update();
if (JoyPad.Get(PAD_INPUT_LEFT)) {
VX = -3.0F;
Dir = 1;
}
else if (JoyPad.Get(PAD_INPUT_RIGHT)) {
VX = 3.0F;
Dir = 0;
}
else {
VX = 0;
}
return true;
}
void CPlayer::Draw() {
DrawRotaGraphF(X, Y, 1.0, 0, Game->PlayerGh[0], TRUE, Dir);
}
[/code]
Mover.h
[code]
#pragma once
class CMover {
public:
float X, Y, L, T, R, B;
float VX, VY;
CMover(float x, float y);
CMover(float x, float y, float l, float t, float r, float b);
bool Hit(CMover* m);
};
[/code]
Mover.cpp
[code]
#include "Mover.h"
CMover::CMover(float x, float y)
:X(x), Y(y) {
}
CMover::CMover(float x, float y, float l, float t, float r, float b)
:X(x), Y(y), L(l), T(t), R(r), B(b), VX(0.0F), VY(0.0F) {
}
bool CMover::Hit(CMover* m) {
return X + L < m->X + m->R&& m->X + m->L < X + R&&Y + T < m->Y + m->B&&m->Y + m->T < Y + B;
}
[/code]