#include <system.hpp>const int playerSize=20;    //最大在线玩家个数
const int pNumOfG=4;    //游戏最大玩家个数
const int paraSize=8;       //最大信息参数个数
const int gameSize=6;      //最大活动游戏个数
const error=0;class Msg    //消息类
{
  protected:
     int num;
     int mType;
     int mLength;
     AnsiString mHead;
     AnsiString param[paraSize];
     AnsiString IP;
  public:
     Msg(AnsiString Seqence,AnsiString IP);
     __property AnsiString Param[int Index] = {read=getpara};     int numOfPara();
     int getmType();
     int getLength();
     AnsiString getHead();
     AnsiString getpara(int Index);
     AnsiString getrIP();
     AnsiString toSql();
};//---------------------------------------------------------------------------
struct pOnline              //在线玩家纪录
{
    AnsiString name;
    AnsiString IP;
    int timer; // 做连接超时计数器
    pOnline(AnsiString,AnsiString);
};
class logList              //在线玩家列表
{
    friend class gameList;
    private:
      pOnline P[playerSize];
      int num;
    public:
      logList();
      void add(AnsiString pName,AnsiString IP) ;
      void del(AnsiString pName) ;
      AnsiString IP2name(AnsiString IP);
      AnsiString name2IP(AnsiString name);
      void aTimer(AnsiString pName);  //加权
      AnsiString sTimer();   //减权并返回超时者的IP};//---------------------------------------------------------------------------struct Game                       //游戏信息
{
    AnsiString name;
    AnsiString gameNum;
    int numOfP;
    int pOfG[pNumOfG];
    Game(AnsiString GameName,int numOfPlayer);
    bool start;
};class gameList                  //活动游戏列表
{
    private:
    public:
      int num;
      int Length;
      Game game[gameSize];
      gameList();
      void add(int ID,AnsiString GameID,AnsiString gameNumber) ;
      void del(AnsiString GameID) ;
      void del1(AnsiString IP) ;
      int joinByID(int usrID,AnsiString GameID);
      void haltByID(int IP,AnsiString GameID);
//      __property AnsiString node[int Index] = {read=getgame};
};//---------------------------------------------------------------------------class Player       //玩家资料类
{
  private:
     AnsiString name;
     AnsiString passwd;
     AnsiString email;
     int ID;
     int status;  public:     Player(AnsiString,AnsiString,AnsiString,int,int);
     AnsiString getname();
     void setname(AnsiString);
     AnsiString getpass();
     void setpass(AnsiString);
     AnsiString getemail();
     void setemail(AnsiString);
     int getID();
     void setID(int);
     int getstatus();
     void setstatus(int);};//---------------------------------------------------------------------------
class playerList        //缓冲玩家资料
{
  private:
     int num;
     Player node[playerSize];  public:
     __property AnsiString Node[int Index] = {read=getnode};
     playerList();     AnsiString getName(Player node);
     Player nodeByID(int ID);
     int getnum();
     void setnum(int);
     Player getnode(int index);
     int find(int);  //返回指定ID用户在列表中的Index
     bool add(Player);
     bool del(int);
};

解决方案 »

  1.   

    要求能在delphi 6上运行通过
      

  2.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;const
      playerSize = 20;    //最大在线玩家个数
      pNumOfG = 4;    //游戏最大玩家个数
      paraSize = 8;       //最大信息参数个数
      gameSize = 6;      //最大活动游戏个数
      error = 0;type
     Msg = class
      published     //消息类  protected
         num: Integer;
         mType: Integer;
         mLength: Integer;
         mHead: AnsiString;
         _param: array [0..paraSize - 1] of AnsiString;
         IP: AnsiString;
      public
         constructor Msg(Seqence, IP: AnsiString );     
         function GetPara(Index: Integer): AnsiString;
         function numOfPara(): Integer;
         function getmType(): Integer;
         function getLength(): Integer;
         function getHead(): AnsiString;
         function getrIP(): AnsiString;
         function toSql(): AnsiString;
         property  Param[Index: Integer]: AnsiString read GetPara;
      end;type
      pOnline = class       //在线玩家纪录
        name: AnsiString;
        IP: AnsiString;
        timer: Integer;
      public
        constructor pOnline(sName, sIP: AnsiString);
      end;type
      logList = class           //在线玩家列表
        private
          P: array [0..playerSize - 1] of pOnline;
          num: Integer;
        public
          constructor logList();
          procedure add(pName, IP: AnsiString);
          procedure del(pName: AnsiString);
          function IP2name(IP: AnsiString): AnsiString;
          function name2IP(name: AnsiString): AnsiString;
          procedure aTimer(pName: AnsiString);
          function sTimer(): AnsiString;
        end;type
      Game = class          //游戏信息
        name: AnsiString;
        gameNum: AnsiString;
        numOfP: Integer;
        pOfG: array [0..pNumOfG - 1] of Integer;
      public
        constructor Game(sGameName: AnsiString; numOfPlayer: Integer);
        function start: boolean;
      end;
    type
      gameList = class         //活动游戏列表
      private
        function GetGame(Index: Integer): AnsiString;
      public
        num: Integer;
        iLength: Integer;
        iGame: array [0..gameSize - 1] of Game;
        constructor gameList();
        procedure add(ID: Integer; GameID, GameNumber: AnsiString);
        procedure del(GameID: AnsiString);
        procedure del1(IP: AnsiString);
        function joinById(usrID: Integer; GameID: AnsiString): Integer;
        procedure haltById(IP: Integer; GameID: AnsiString);
        property node[Index: Integer]: AnsiString read GetGame;
      end;type
      Player = class
      private
        name: AnsiString;
        passwd: AnsiString;
        email: AnsiString;
        ID: Integer;
        Status: Integer;
      public
        constructor Player(sName, sPasswd, sEmail: AnsiString; sID, sStatus: Integer);
        function Getname(): AnsiString;
        procedure SetName(Name: AnsiString);
        function GetPass(): AnsiString;
        procedure SetPass(sPass: AnsiString);
        function GetEmail(): AnsiString;
        procedure setemail(sPass: AnsiString);
        function GetId(): Integer;
        procedure SetID(iID: Integer);
        function GetStatus(): Integer;
        procedure SetStatus(iStatus: Integer);
      end;
    type
      playerList = class      //缓冲玩家资料
        private
          num: Integer;
          _node: array [0..playersize - 1] of Player;
        public
          constructor pLayerList();
          function getName(iNode: Player): AnsiString;
          function NodeByID(ID: Integer): Player;
          function getnum(): Integer;
          procedure SetNum(iNum: Integer);
          function getNode(Index: Integer): Player;
          function find(ID: Integer): Integer;
          function add(sPlayer: Player): Boolean;
          function del(sPlayer: Integer): boolean;
          property Node[Index: Integer]: Player read GetNode;
        end;
      

  3.   

    type
      TForm1 = class(TForm)
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}{ Msg }function Msg.getHead: AnsiString;
    beginend;function Msg.getLength: Integer;
    beginend;function Msg.getmType: Integer;
    beginend;function Msg.getpara(Index: Integer): AnsiString;
    beginend;function Msg.getrIP: AnsiString;
    beginend;constructor Msg.Msg(Seqence, IP: AnsiString);
    beginend;function Msg.numOfPara: Integer;
    beginend;function Msg.toSql: AnsiString;
    beginend;{ pOnline }constructor pOnline.pOnline(sName, sIP: AnsiString);
    beginend;{ logList }procedure logList.add(pName, IP: AnsiString);
    beginend;procedure logList.aTimer(pName: AnsiString);
    beginend;procedure logList.del(pName: AnsiString);
    beginend;
      

  4.   

    function logList.IP2name(IP: AnsiString): AnsiString;
    begin
    end;constructor logList.logList;
    begin
    end;function logList.name2IP(name: AnsiString): AnsiString;
    begin
    end;function logList.sTimer: AnsiString;
    begin
    end;
    { Game }
    constructor Game.Game(sGameName: AnsiString; numOfPlayer: Integer);
    begin
    end;function Game.start: boolean;
    begin
    end;
    { gameList }
    procedure gameList.add(ID: Integer; GameID, GameNumber: AnsiString);
    begin
    end;procedure gameList.del(GameID: AnsiString);
    begin
    end;procedure gameList.del1(IP: AnsiString);
    begin
    end;constructor gameList.gameList;
    begin
    end;function gameList.GetGame(Index: Integer): AnsiString;
    begin
    end;procedure gameList.haltById(IP: Integer; GameID: AnsiString);
    begin
    end;function gameList.joinById(usrID: Integer; GameID: AnsiString): Integer;
    begin
    end;{ Player }function Player.GetEmail: AnsiString;
    begin
    end;function Player.GetId: Integer;
    begin
    end;function Player.Getname: AnsiString;
    begin
    end;function Player.GetPass: AnsiString;
    begin
    end;function Player.GetStatus: Integer;
    begin
    end;constructor Player.Player(sName, sPasswd, sEmail: AnsiString; sID,
      sStatus: Integer);
    begin
    end;procedure Player.setemail(sPass: AnsiString);
    begin
    end;procedure Player.SetID(iID: Integer);
    begin
    end;procedure Player.SetName(Name: AnsiString);
    begin
    end;procedure Player.SetPass(sPass: AnsiString);
    begin
    end;procedure Player.SetStatus(iStatus: Integer);
    begin
    end;{ playerList }function playerList.add(sPlayer: Player): Boolean;
    begin
    end;function playerList.del(sPlayer: Integer): boolean;
    begin
    end;function playerList.find(ID: Integer): Integer;
    begin
    end;function playerList.getName(iNode: Player): AnsiString;
    begin
    end;function playerList.getNode(Index: Integer): Player;
    begin
    end;function playerList.getnum: Integer;
    begin
    end;function playerList.NodeByID(ID: Integer): Player;
    begin
    end;constructor playerList.pLayerList;
    begin
    end;procedure playerList.SetNum(iNum: Integer);
    begin
    end;end.