//-------------------------------------------------------------
// file: players.h
//        (part of NIM - an OMNeT++ demo simulation)
//-------------------------------------------------------------

#include "omnetpp.h"

// The three player types (SimplePlayer,SmartPlayer,InteractivePlayer)
// will be derived from a commom Player base class.

// derive abstract class Player from cSimpleModule
class Player : public cSimpleModule
{
    Module_Class_Members( Player, cSimpleModule, 16384)
       // this is a macro; it expands to constructor definition etc.
       // 16384 is the size for the coroutine stack (in bytes)

    virtual void activity();
       // this redefined virtual function holds the algorithm

    virtual char *playerName() = 0;
    virtual int calculateMove( int num_sticks ) = 0;
};

class SimplePlayer : public Player
{
    Module_Class_Members( SimplePlayer, Player, 16384)
    virtual char *playerName();
    virtual int calculateMove( int num_sticks );
};

class SmartPlayer : public Player
{
    Module_Class_Members( SmartPlayer, Player, 16384)
    virtual char *playerName();
    virtual int calculateMove( int num_sticks );
};

class InteractivePlayer : public Player
{
    Module_Class_Members( InteractivePlayer, Player, 16384)
    virtual char *playerName();
    virtual int calculateMove( int num_sticks );
};


syntax highlighted by Code2HTML, v. 0.9.1