Commit a98beae9 authored by Matthew Hausknecht's avatar Matthew Hausknecht

Added an agent class.

parent f53a4d22
This diff is collapsed.
// -*-c++-*-
/*
*Copyright:
Copyright (C) Hidehisa AKIYAMA
This code is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.
This code is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this code; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
*EndCopyright:
*/
/////////////////////////////////////////////////////////////////////
#ifndef AGENT_H
#define AGENT_H
#include "action_generator.h"
#include "field_evaluator.h"
#include "communication.h"
#include <rcsc/player/player_agent.h>
#include <vector>
class Agent
: public rcsc::PlayerAgent {
private:
Communication::Ptr M_communication;
FieldEvaluator::ConstPtr M_field_evaluator;
ActionGenerator::ConstPtr M_action_generator;
public:
Agent();
virtual
~Agent();
protected:
/*!
You can override this method.
But you must call PlayerAgent::initImpl() in this method.
*/
virtual
bool initImpl( rcsc::CmdLineParser & cmd_parser );
//! main decision
virtual
void actionImpl();
//! communication decision
virtual
void communicationImpl();
virtual
void handleActionStart();
virtual
void handleActionEnd();
virtual
void handleServerParam();
virtual
void handlePlayerParam();
virtual
void handlePlayerType();
virtual
FieldEvaluator::ConstPtr createFieldEvaluator() const;
virtual
ActionGenerator::ConstPtr createActionGenerator() const;
private:
bool doPreprocess();
bool doShoot();
bool doForceKick();
bool doHeardPassReceive();
public:
virtual
FieldEvaluator::ConstPtr getFieldEvaluator() const;
};
#endif
// -*-c++-*-
/*
*Copyright:
Copyright (C) Hidehisa AKIYAMA
This code is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.
This code is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this code; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
*EndCopyright:
*/
/////////////////////////////////////////////////////////////////////
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "agent.h"
#include <rcsc/common/basic_client.h>
#include <iostream>
#include <cstdlib> // exit
#include <cerrno> // errno
#include <cstring> // strerror
#include <csignal> // sigaction
namespace {
Agent agent;
/*-------------------------------------------------------------------*/
void
sig_exit_handle( int )
{
std::cerr << "Killed. Exiting..." << std::endl;
agent.finalize();
std::exit( EXIT_FAILURE );
}
}
/*-------------------------------------------------------------------*/
int
main( int argc, char **argv )
{
struct sigaction sig_action;
sig_action.sa_handler = &sig_exit_handle;
sig_action.sa_flags = 0;
if ( sigaction( SIGINT, &sig_action , NULL ) != 0
|| sigaction( SIGTERM, &sig_action , NULL ) != 0
|| sigaction( SIGHUP, &sig_action , NULL ) != 0 )
/*if ( signal(SIGINT, &sigExitHandle) == SIG_ERR
|| signal(SIGTERM, &sigExitHandle) == SIG_ERR
|| signal(SIGHUP, &sigExitHandle) == SIG_ERR )*/
{
std::cerr << __FILE__ << ": " << __LINE__
<< ": could not set signal handler: "
<< std::strerror( errno ) << std::endl;
std::exit( EXIT_FAILURE );
}
rcsc::BasicClient client;
if ( ! agent.init( &client, argc, argv ) )
{
return EXIT_FAILURE;
}
/*
You should add your copyright message here.
*/
// std::cout << "*****************************************************************\n"
// << " This program is modified by <Team Name>\n"
// << " Copyright 20xx. <Your name>.\n"
// << " <Affiliation>\n"
// << " All rights reserved.\n"
// << "*****************************************************************\n"
// << std::flush;
/*
Do NOT remove the following copyright notice!
*/
std::cout << "*****************************************************************\n"
<< " This program is based on agent2d created by Hidehisa Akiyama.\n"
<< " Copyright 2006 - 2011. Hidehisa Akiyama and Hiroki Shimora.\n"
<< " All rights reserved.\n"
<< "*****************************************************************\n"
<< std::flush;
client.run( &agent );
return EXIT_SUCCESS;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment