#define SONA_DEBUG
///
///
// ///
// 魔兽世界(修订版) ///
// POJ3760 百练3750 ///
// 2011.3.3 18:45 ///
// Copyright 2011 ///
// EECS , Peking University ///
// Sona Tithew ///
// With Teresa ///
// ///
///
///
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
///
/// 常量声明开始 //
///
//基地颜色
const int NONE = 0;
const int RED = 1;
const int BLUE = 2;
//
//武士种类
const int DRAGON = 0;
const int NINJA = 1;
const int ICEMAN = 2;
const int LION = 3;
const int WOLF = 4;
//
//输出信息类型
const int BORN = 1;
const int MARCH = 2;
const int ATTACK = 3;
const int FBACK = 4;
const int DEATH = 5;
const int YELL = 6;
const int GETELE = 7;
const int FLAGUP = 8;
const int ARRIVE = 9;
const int TAKEN = 10;
const int REPORT = 11;
//
//预设的各基地出兵顺序
const int ORDER[3][5] = { {},{ICEMAN,LION,WOLF,NINJA,DRAGON} , {LION,DRAGON,NINJA,ICEMAN,WOLF} };
//
///
/// 常量声明结束 //
///
///
/ 全局变量声明开始
///
int army_element[5]; //每个武士初始生命元
int army_force[5]; //每个武士初始攻击力
int init_element; //每个基地初始生命元
int length; //城市个数1..lengt(0表示红方基地,length+1表示蓝方基地)
int timelimit; //输出的时间限制
bool endflag; //有基地被占领,结束标记
///
/ 全局变量声明结束
///
///
时钟类开始 ///
///
//主要完成对于总引擎时间的控制
class Myclock
{
public:
int hour,minute; //小时,分钟
public:
Myclock() //初始化时钟为0
{
hour = minute = 0;
}
void Next(void) //时钟往后拨十分钟
{
minute += 10;
if (minute == 60)
{
minute = 0;
hour++;
}
}
int Minute(void) //获取总分钟数信息(用于判断结束)
{
return hour*60+minute;
}
void Print(void) //按标准输出时间
{
printf("%03d:%02d",hour,minute);
}
}*myclock;
///
时钟类结束 ///
///
///
输出类开始 ///
///
//主要完成对于指定类型和一个int数组输入参数指定的输出信息输出
class Output
{
private:
char colorname[3][5]; //颜色名称
char armyname[6][8]; //武士名称
public:
Output() //初始化颜色名称和武士名称
{
strcpy(colorname[RED],"red");
strcpy(colorname[BLUE],"blue");
strcpy(armyname[DRAGON],"dragon");
strcpy(armyname[NINJA],"ninja");
strcpy(armyname[ICEMAN],"iceman");
strcpy(armyname[LION],"lion");
strcpy(armyname[WOLF],"wolf");
}
void Print(int printtype , int *input) //按照输出类型,以及数据数组,向外输出
{
myclock->Print(); //首先输出时间
switch(printtype)
{
case BORN:printf(" %s %s %d born/n",colorname[input[0]],armyname[input[1]],input[2]);break;
case MARCH:printf(" %s %s %d marched to city %d with %d elements and force %d/n",colorname[input[0]],armyname[input[1]],input[2],input[3],input[4],input[5]);break;
case ATTACK:printf(" %s %s %d attacked %s %s %d in city %d with %d elements and force %d/n",colorname[input[0]],armyname[input[1]],input[2],colorname[input[3]],armyname[input[4]],input[5],input[6],input[7],input[8]);break;
case FBACK:printf(" %s %s %d fought back against %s %s %d in city %d/n",colorname[input[0]],armyname[input[1]],input[2],colorname[input[3]],armyname[input[4]],input[5],input[6]);break;
case DEATH:printf(" %s %s %d was killed in city %d/n",colorname[input[0]],armyname[input[1]],input[2],input[3]);break;
case YELL:printf(" %s %s %d yelle