POJ3760 (百练3750) 代码

#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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值