AIのキー入力
例えばぷよぷよの対戦。
AIもプレイヤーと同じキー入力をします。
キー入力は、
class Input {
/**
Onならtrueを返す
*/
bool isLeft();
bool isRight();
bool isUp();
bool isDown();
}class AI : public Input;
class Player : public Input;
{
Input 1P, 2P;if (1P->isLeft()) {
}
if (1P->isRight()) {
}
if (1P->isUp()) {
}
if (1P->isDown()) {
}
}
という感じのインターフェースを使います。
AIでは、次のぷよをどこにどう落とすかを計算してスタックに積みます。
// 左に3セル、右方向に2回転
out.push(moveLeft);
out.push(moveLeft);
out.push(moveLeft);
out.push(rotateRight);
out.push(rotateRight);
bool Player::isLeft() { return keyboard.isKeyPush(moveLeft); }
bool AI::isLeft() { return out.front()==moveLeft; }
あとは上のインターフェースでスタックの要素をpopしていくだけです。
対戦モードによって組み合わせを変えます。
1P = new AI; // AI
1P = new Player; // プレイヤー
2P = new AI; // AI
2P = new Player; // プレイヤー
要素が無くなったらあとは下を押されてる状態にして、落下させてもいいですね。
(初心者ステージではOffにしたり)