5. Code
class Enemy
{
int hp;
public void damage(int damage) { hp -= damage; }
}
class Boss
{
int hp;
public void damage(int damage) { hp -= damage; }
}
class Player
{
public void attackEnemy(Enemy enemy) { enemy.damage( 10 ); }
public void attackBoss (Boss boss) { boss.damage( 10 ); }
}
6. Code
class GameManager
{
Player player;
Enemy enemy;
Boss boss;
public void start() // ゲーム開始時に一度だけ呼ばれる
{
player = new Player();
enemy = new Enemy();
boss = new Boss();
}
public void update()
{
if (KeyDown( A_BUTTON )) // Aボタンが押されていたら
player.attackEnemy( enemy );
if (KeyDown( B_BUTTON )) // Aボタンが押されていたら
player.attackBoss( boss );
}
}
18. 敵がいくら増えても
class Boss implements ILife
{
int hp = 100;
public void damage(int value) { hp -= value/2; }
}
class Magician implements ILife
{
int hp = 5;
public void damage(int value) { hp -= value; }
}
class BadBoy implements ILife
{
int hp = 99;
public void damage(int value) { hp -= value; }
}
25. ちょっと寄り道
class GameManager
{
Player player;
Enemy enemy; // implements ILife
Boss boss; // implements ILife
public void start() // ゲーム開始時に一度だけ呼ばれる
{
player = new Player();
enemy = new Enemy();
boss = new Boss();
}
public void update() // 毎フレーム呼ばれる
{
if (KeyDown( A_BUTTON )) // Aボタンが押されていたら
player.attack( enemy );
if (KeyDown( B_BUTTON )) // Bボタンが押されていたら
player.attack( boss );
}
}
29. Code
class Weapon {
public int power() { return 10; } // 攻撃力
}
class Player {
public void attack( ILife enemy )
{
Weapon weapon = new Weapon();
enemy.damage(weapon.power);
}
}
31. Interface
interface IWeapon {
int power() // 攻撃力
}
class SuperSword implements IWeapon {
public int power() { return 9999; } // 攻撃力
}
class BigGreatAxe implements IWeapon {
public int power() { return 100; } // 攻撃力
}
class HyperUltimateKnife
…
32. Player
class Player {
IWeapon weapon;
public void equip( int type )
{
switch(weaponType)
{
case 1: weapon = new SuperSword(); break;
case 2: weapon = new BigGreatAxe(); break;
case 3: weapon = new HyperUltimateKnife(); break;
}
}
public void attack( ILife enemy )
{
enemy.damage( weapon.power() );
}
}
40. また寄り道
class GameManager
{
Player player;
Enemy enemy;
Boss boss;
Weapon weapon;
public void start() // ゲーム開始時に一度だけ呼ばれる
{
weapon = new Weapon();
player = new Player( weapon ); // 依存の注入 Constructor Injection
enemy = new Enemy();
boss = new Boss();
}
public void update()
{
if (KeyDown( A_BUTTON )) // Aボタンが押されていたら
player.attack( enemy );
if (KeyDown( B_BUTTON )) // Bボタンが押されていたら
player.attack( boss );
}
}