stdoutsaver.cpp

来自「2009 ROBOCUP 仿真2DSERVER 源码」· C++ 代码 · 共 198 行

CPP
198
字号
// -*-c++-*-/***************************************************************************                                stdoutsaver.cpp                    Class for saving results to the standard output stream                             -------------------    begin                : 13-MAY-2003    copyright            : (C) 2003 by The RoboCup Soccer Simulator                           Maintenance Group.    email                : sserver-admin@lists.sourceforge.net***************************************************************************//*************************************************************************** *                                                                         * *   This program is free software; you can redistribute it and/or modify  * *   it under the terms of the GNU LGPL as published by the Free Software  * *   Foundation; either version 2 of the License, or (at your option) any  * *   later version.                                                        * *                                                                         * ***************************************************************************/#ifdef HAVE_CONFIG_H#include <config.h>#endif#include "stdoutsaver.h"#include <iostream>#include <ctime>STDOutSaver::STDOutSaver()    : ResultSaver()    , M_left_coin( false )    , M_right_coin( false ){    for ( int i = 0; i < TEAM_RIGHT + 1; ++i )    {        M_score[ i ] = 0;        M_pen_taken[ i ] = 0;        M_pen_scored[ i ] = 0;    }}STDOutSaver::~STDOutSaver(){    //std::cerr << "delete STDOutSaver" << std::endl;}boolSTDOutSaver::doEnabled() const{    return true;}voidSTDOutSaver::doSaveStart(){    std::cout << "\nGame Results:\n";}voidSTDOutSaver::doSaveTime( const tm & time ){    M_time = time;}voidSTDOutSaver::doSaveTeamName( team_id id,                             const std::string & name ){    M_team_name[ id ] = name;}voidSTDOutSaver::doSaveCoachName( team_id id,                              const std::string & name ){    M_coach_name[ id ] = name;}voidSTDOutSaver::doSaveScore( team_id id,                          unsigned int score ){    M_score[ id ] = score;}voidSTDOutSaver::doSavePenTaken( team_id id,                             unsigned int taken ){    M_pen_taken[ id ] = taken;}voidSTDOutSaver::doSavePenScored( team_id id,                              unsigned int scored ){    M_pen_scored[ id ] = scored;}voidSTDOutSaver::doSaveCoinTossWinner( team_id id ){    switch ( id ) {    case TEAM_LEFT:        M_left_coin = true;        M_right_coin = false;        break;    case TEAM_RIGHT:        M_left_coin = false;        M_right_coin = true;        break;    default:        M_left_coin = false;        M_right_coin = false;        break;    }}boolSTDOutSaver::doSaveComplete(){    char time_str[256];    std::strftime( time_str, 256, "%Y-%m-%d %H:%M:%S", &M_time );    std::cout << "\t" << time_str << "\n\t";    if ( M_team_name[ TEAM_LEFT ].empty() )    {        std::cout << "null vs ";    }    else    {        std::cout << "'" << M_team_name[ TEAM_LEFT ] << "' vs ";    }    if ( M_team_name[ TEAM_RIGHT ].empty() )    {        std::cout << "null\n";    }    else    {        std::cout << "'" << M_team_name[ TEAM_RIGHT ] << "'\n";    }    if ( ! M_coach_name[ TEAM_LEFT ].empty() )    {        std::cout << "\tLeft Coach: '" << M_coach_name[ TEAM_LEFT ] << "'\n";    }    if ( ! M_coach_name[ TEAM_RIGHT ].empty() )    {        std::cout << "\tRight Coach: '" << M_coach_name[ TEAM_RIGHT ] << "'\n";    }    std::cout << "\tScore: " << M_score[ TEAM_LEFT ] << " - " << M_score[ TEAM_RIGHT ] << "\n ";    if ( M_pen_taken[ TEAM_LEFT ] || M_pen_taken[ TEAM_RIGHT ] )    {        std::cout << "\tPenalties: " << M_pen_scored[ TEAM_LEFT ]                  << " (" << M_pen_taken[ TEAM_LEFT ] << ") - "                  << M_pen_scored[ TEAM_RIGHT ]                  << " (" << M_pen_taken[ TEAM_RIGHT ] << ")\n";    }    if ( M_left_coin )    {        std::cout << "\tCoin Toss Winner: Left Team\n";    }    else if ( M_right_coin )    {        std::cout << "\tCoin Toss Winner: Right Team\n";    }    std::cout << std::endl;    return true;}const char *STDOutSaver::doGetName() const{    return "STDOutSaver";}namespace {template< typename Saver >ResultSaver::Ptrcreate(){    return ResultSaver::Ptr( new Saver() );}rcss::RegHolder stdout = ResultSaver::factory().autoReg( &create< STDOutSaver >, "STDOutSaver" );}

⌨️ 快捷键说明

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