ground2.c

来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 1,229 行 · 第 1/3 页

C
1,229
字号
      msg += show_teams(teams);      if (brief)        return msg;      msg += "\n各队将依按输赢结果依次上场打擂。\n";      break;    }    case MODE_TEAM_DZ:    {      msg += modes[mode]+",共有"+chinese_number(teams["number"])+"组参赛队伍:\n";      msg += (show_teams(teams));      if (brief)        return msg;      msg += "\n每队选手依次与别队同级选手较量。\n";      break;    }    case MODE_TEAM_XH:    {      msg += modes[mode]+",共有"+chinese_number(teams["number"])+"组参赛队伍:\n";      msg += (show_teams(teams));      if (brief)        return msg;      msg += "\n每队选手依次与别队所有的选手较量。\n";      break;    }  }  return msg;}string report_contest (int brief){  int mode = this_room()->query("match/mode");  mapping teams = this_room()->query("match/teams");  mapping team0;  mapping team1;  string name0;  string name1;  string msg = "";    if (teams && ! teams["start"])    return "比赛还没有开始。\n";      if (! teams["current_player0_id"] &&      (mode != MODE_SINGLE_SD))    return "赛场尚未准备就绪,请稍候几秒。\n";  switch (mode)  {    case MODE_SINGLE_SD:    {      msg += modes[mode]+",任意两名玩家均可参加比赛。\n";      break;    }    case MODE_SINGLE_LT:    {      if (! teams["current_player1_id"])        msg += "玩家"+teams["current_player0_name"]+               "("+teams["current_player0_id"]+")"+               "上场打擂。\n";      else if (! teams["current_winner_id"])        msg += "玩家"+teams["current_player1_name"]+                 "("+teams["current_player1_id"]+")"+                "与玩家"+teams["current_player0_name"]+                 "("+teams["current_player0_id"]+")"+                "摆阵打擂。\n";      else        msg += "玩家"+teams["current_player1_name"]+                 "("+teams["current_player1_id"]+")"+                "前来挑战擂主"+teams["current_player0_name"]+                 "("+teams["current_player0_id"]+")"+                "。\n";      break;    }    case MODE_TEAM_LT:    {      team0 = find_teams_team(teams,teams["current_player0_id"]);      team1 = find_teams_team(teams,teams["current_player1_id"]);      name0 = "“"+team0["info"]["team_name"]+"”队";      if (team1)        name1 = "“"+team1["info"]["team_name"]+"”队";      if (! teams["current_player1_id"])        msg += name0+"选手"+teams["current_player0_name"]+               "("+teams["current_player0_id"]+")"+               "上场打擂。\n";      else if (! teams["current_winner_id"])        msg += name1+"选手"+teams["current_player1_name"]+               "("+teams["current_player1_id"]+")"+               "与"+name0+"选手"+teams["current_player0_name"]+               "("+teams["current_player0_id"]+")"+               "摆阵打擂。\n";      else        msg += name1+"选手"+teams["current_player1_name"]+               "("+teams["current_player1_id"]+")"+               "前来挑战"+name0+"擂主"+teams["current_player0_name"]+               "("+teams["current_player0_id"]+")"+               "。\n";      break;    }    case MODE_TEAM_DZ:    case MODE_TEAM_XH:    {      team0 = find_teams_team(teams,teams["current_player0_id"]);      team1 = find_teams_team(teams,teams["current_player1_id"]);      name0 = "“"+team0["info"]["team_name"]+"”队";      if (team1)        name1 = "“"+team1["info"]["team_name"]+"”队";      if (! teams["current_player1_id"])        msg += name0+"选手"+teams["current_player0_name"]+               "("+teams["current_player0_id"]+")"+               "上场。\n";      else                 msg += name1+"选手"+teams["current_player1_name"]+               "("+teams["current_player1_id"]+")"+               "与"+name0+"选手"+teams["current_player0_name"]+               "("+teams["current_player0_id"]+")"+               "比赛。\n";      break;    }  }  if (brief)    return msg;            if (!  teams["done"])      msg += "\n请巫师将他们邀入(summon)场内比赛。\n";  return msg;}string report_events (mapping teams){  int mode = this_room()->query("match/mode");  int cycles = teams["cycles"];  int sessions = teams["sessions"];  int total = teams["total"];  int index = teams["index"];  mapping events = teams["events"];  mapping team0;  mapping team1;  mapping member0;  mapping member1;  string name0;  string name1;  string msg = "";  int *item;  int win;  int i, j;     if (! events)    return "";      if (teams["done"])    j = total; // done, index is not incremented  else    j = index - 1;    msg += "比赛结果:\n";  for (i = 0; i < j; i++)  {    item = events[i];    team0 = teams[item[0]];    team1 = teams[item[2]];    member0 = team0[item[1]];    member1 = team1[item[3]];    win = item[4];    if (mode == MODE_SINGLE_SD ||        mode == MODE_SINGLE_LT)    {      name0 = "";      name1 = "";    }        else    {      //name0 = "“"+team0["info"]["team_name"]+"”队选手";      //name1 = "“"+team1["info"]["team_name"]+"”队选手";      name0 = "“"+team0["info"]["team_name"]+"”队";      name1 = "“"+team1["info"]["team_name"]+"”队";    }      msg += "  "+to_chinese(i+1)+". ";    msg += name0+member0["name"]+"("+member0["id"]+")";    if (win)      msg += "战胜";    else      msg += "输给";    msg += name1+member1["name"]+"("+member1["id"]+")\n";  }    if (index >= total)    return msg;      msg += "即将开始的比赛:\n";  for (i = index; i < total; i++)  {    item = events[i];    team0 = teams[item[0]];    team1 = teams[item[2]];    member0 = team0[item[1]];    member1 = team1[item[3]];    win = item[4];    name0 = "“"+team0["info"]["team_name"]+"”队";    name1 = "“"+team1["info"]["team_name"]+"”队";    msg += "  "+to_chinese(i-index+1)+". ";    msg += name0+"选手"+member0["name"]+"("+member0["id"]+")";    msg += "迎战";    msg += name1+"选手"+member1["name"]+"("+member1["id"]+")\n";  }  return msg;}string report_result  (){  int mode = this_room()->query("match/mode");  mapping teams = this_room()->query("match/teams");  mapping team0;  mapping team1;  mapping member0;  mapping member1;  int *item;  int win;  string name0;  string name1;  string msg = "";  int i, j, k;  if (teams && ! teams["start"])    return "请稍候几秒,比赛马上就开始。\n";  if (! teams["current_player0_id"] &&      (mode != MODE_SINGLE_SD))    return "请稍候几秒,赛场立刻就准备就绪。\n";      switch (mode)  {    case MODE_SINGLE_SD:    {      msg = report_events (teams);      if (msg == "")        msg = "请稍候几秒,比赛立刻就开始。\n";      return msg;        break;    }    case MODE_SINGLE_LT:    {      int current_index;            team0 = teams[0];      current_index = team0["current_index"];      msg += modes[mode]+":";      if (! teams["current_winner_id"])        return msg+"还没有赛出擂主。\n";      msg += "擂主是"+teams["current_winner_name"]+             "("+teams["current_winner_id"]+")";      if (teams["current_player1_id"])      {        msg += ",接受"+teams["current_player1_name"]+               "("+teams["current_player1_id"]+")"+"的挑战。\n";      }      else      {        msg += "。\n";      }      msg += report_events (teams);/*            msg += "被击败的玩家是:";      for (i = 0; i < current_index; i++)      {        mapping member = team0[i];                if (member["id"] != teams["current_winner_id"])          msg += member["name"]+"("+member["id"]+") ";      }      msg += "\n";*/            if (current_index < team0["number"])        msg += "尚未上场的玩家是:";      for (i = current_index; i < team0["number"]; i++)      {        mapping member = team0[i];                msg += member["name"]+"("+member["id"]+") ";      }      msg += "\n";      break;    }    case MODE_TEAM_LT:    {      msg += modes[mode]+":";      if (! teams["current_winner_id"])        return msg+"还没有赛出擂主。\n";      team0 = find_teams_team(teams,teams["current_winner_id"]);      name0 = "“"+team0["info"]["team_name"]+"”队";      msg += "擂主是"+name0+"的"+teams["current_winner_name"]+             "("+teams["current_winner_id"]+")";      if (teams["current_player1_id"])      {        team1 = find_teams_team(teams,teams["current_player1_id"]);        name1 = "“"+team1["info"]["team_name"]+"”队";        msg += ",接受"+name1+"的"+teams["current_player1_name"]+               "("+teams["current_player1_id"]+")"+"的挑战。\n";      }      else      {        msg += "。\n";      }      msg += report_events (teams);      msg += "各队战况:\n";      for (i = 0; i < teams["number"]; i++)      {        int current_index;                team0 = teams[i];        current_index = team0["current_index"];        name0 = "“"+team0["info"]["team_name"]+"”队";        msg += "  "+name0+":";        msg += "赢了"+chinese_number(team0["info"]["wins"])+"场,";        msg += "输了"+chinese_number(team0["info"]["loses"])+"场。\n";/*                msg += "    被击败的选手是:";        for (j = 0; j < current_index; j++)        {          mapping member = team0[j];                    if (member["id"] != teams["current_winner_id"])            msg += member["name"]+"("+member["id"]+") ";        }        msg += "\n";*/         msg += "    尚未上场的选手是:";        for (j = current_index; j < team0["number"]; j++)        {          mapping member = team0[j];                  msg += member["name"]+"("+member["id"]+") ";        }        msg += "\n";      }      break;    }    case MODE_TEAM_DZ:    case MODE_TEAM_XH:    {      int cycles = teams["cycles"];      int sessions = teams["sessions"];      int total = teams["total"];      int index = teams["index"];      mapping events = teams["events"];         msg += "总共有"+chinese_number(cycles)+"轮,每轮有"+              chinese_number(sessions)+"场比赛。\n";      if (teams["done"])      {        msg += "现在赛事已完。\n";      }      else if (index/sessions+1 <= cycles)      {         msg += "现在是第"+chinese_number((index-1)/sessions+1)+"轮第"+                chinese_number((index-1)%sessions+1)+"场,";        msg += "合计第"+chinese_number(index)+"场。\n";      }        msg += "现在上场的是";      team0 = find_teams_team(teams,teams["current_player0_id"]);      name0 = "“"+team0["info"]["team_name"]+"”队";      if (teams["current_player1_id"])      {        team1 = find_teams_team(teams,teams["current_player1_id"]);        name1 = "“"+team1["info"]["team_name"]+"”队";        msg += name1+"选手"+teams["current_player1_name"]+               "("+teams["current_player1_id"]+")"+               "与"+name0+"选手"+teams["current_player0_name"]+               "("+teams["current_player0_id"]+")"+               "比赛。\n";      }        else        msg += name0+"选手"+teams["current_player0_name"]+               "("+teams["current_player0_id"]+")"+"。\n";      msg += "\n各队战况:\n";      for (i = 0; i < teams["number"]; i++)      {        team0 = teams[i];        name0 = "“"+team0["info"]["team_name"]+"”队";        msg += "  "+name0+":";        msg += "赢了"+chinese_number(team0["info"]["wins"])+"场,";        msg += "输了"+chinese_number(team0["info"]["loses"])+"场。\n";      }            msg += report_events (teams);      break;    }  }  return msg;}int do_report2(){  string line = "\n-------------------------------------------------------------------\n";  string msg = line;    msg += "\n";  msg += "大会比赛阶段:\n";  msg += "\n";  msg += report_check(1);  msg += "[检查正在进行的比赛:check]\n";  msg += "\n";  msg += report_contest(1);  msg += "[察看上场选手:contest]\n";  msg += "\n";

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?