// player.cpp #include "player.h" namespace Seahunt { //--------------------------------------------------------------------------- Player::Player() { score_value = 0; number_tries = 0; number_hits = 0; set_name(); begin(); #ifdef PLAYER_TEST std::cout << "Constructed Player: " << name << std::endl; #endif } //--------------------------------------------------------------------------- Player::Player(const std::string& label ) { std::string prompt = label + " Player's Name"; reset(); Utility::entry(prompt, name); begin(); #ifdef PLAYER_TEST std::cout << "Constructed Player: " << name << std::endl; #endif } //--------------------------------------------------------------------------- Player::~Player() { // no dynamic memory allocated by the object #ifdef PLAYER_TEST std::cout << "Destructed Player: " << name << std::endl; #endif } //--------------------------------------------------------------------------- void Player::reset(void) { score_value = 0; number_tries = 0; number_hits = 0; } //----------------------------------------------------------------------- int Player::begin(void) { begin_time = time(0); return static_cast(begin_time); } //----------------------------------------------------------------------- int Player::elapsed(void) const { time_t elapsed_value = time(0) - begin_time; return static_cast(elapsed_value); } //--------------------------------------------------------------------------- bool Player::hit(Ocean* ocean) { bool status = ocean->hit(); number_tries++; if (status) { number_hits++; } number_kills = ocean->get_destroyed_targets(); score(ocean); return status; } //--------------------------------------------------------------------------- void Player::place_targets(Ocean* ocean) const { ocean->place_target(); } //--------------------------------------------------------------------------- int Player::score(Ocean* ocean) { score_value = (number_kills * 100) + (number_hits * 10) - number_tries - elapsed(); return score_value; } //--------------------------------------------------------------------------- void Player::show(void) const { std::cout << "\nPlayer : " << name << std::endl; std::cout << "Elapsed Time : " << elapsed() << std::endl; std::cout << "Number of Attempts: " << number_tries << std::endl; std::cout << "Number of Hits : " << number_hits << std::endl; std::cout << "Score : " << score_value << "\n" << std::endl; Utility::wait(); } //--------------------------------------------------------------------------- int Player::get_score(void) const { return score_value; } //--------------------------------------------------------------------------- int Player::get_number_hits(void) const { return number_hits; } //--------------------------------------------------------------------------- int Player::get_number_tries(void) const { return number_tries; } //--------------------------------------------------------------------------- const std::string& Player::get_name(void) const { return name; } //--------------------------------------------------------------------------- void Player::set_name(const std::string& n ) { name = n; } //--------------------------------------------------------------------------- void Player::set_name( void ) { Utility::entry("Player Name", name); } } // namespace //----------------------------------------------------------------------------- #ifdef PLAYER_TEST int main ( void ) { Seahunt::Ocean ocean; Seahunt::Player placer("Placing"); Seahunt::Player chooser( "Choosing" ); placer.place_targets(&ocean); while (chooser.elapsed() < 600 && ocean.get_active_targets() > 0) { if (chooser.hit(&ocean)) { chooser.show(); } } chooser.show(); ocean.show(); return(0); } #endif