+1 (315) 557-6473 

C++ Program to Create a Battleship Game Assignment Solution.


Instructions

Objective
Write a program to create a battleship game in C++.

Requirements and Specifications

program to create a battleship game in C++
program to create a battleship game in C++ 1

Source Code

/**

 * Copyright 2019 University of Michigan EECS183

 *

 * Position.cpp

 * Project UID 8885f2d9f10d2f99bc099aa9c3fc0543

 *

 * <#Name#>

 * <#Uniqname#>

 *

 * Project 4: Battleship

 *

 * <#description#>

 */

#include "Position.h"

#include "utility.h"

Position::Position() {

    // TODO: write implementation here.

    row = 0;

    col = 0;

}

Position::Position(int row_in, int col_in) {

    // TODO: write implementation here.

    row = row_in;

    col = col_in;

}

Position::Position(char row_in, char col_in) {

    // TODO: write implementation here.

    // First, convert both char values to integers

    int row_inte = row_in - '0';

    int col_inte = col_in - '0';

    // If the values are between 65 and 72 it is because these are A, B, ... H

    if(row_inte >= 65 && row_inte <= 72) {

        row_inte -= 65;

    }

    else if(row_inte >= 97 && row_inte <= 104) { // these are a, b, c.. h

        row_inte -= 97;

    } else if(row_inte >= 1 && row_inte <= 8) {

        row_inte -= 1;

    }

    if(col_inte >= 65 && col_inte <= 72) {

        col_inte -= 65;

    }

    else if(col_inte >= 97 && col_inte <= 104) { // these are a, b, c.. h

        col_inte -= 97;

    } else if(col_inte >= 1 && col_inte <= 8) {

        col_inte -= 1;

    }

    // Finally, set the valeus using the check_range function

    row = check_range(row_inte);

    col = check_range(col_inte);

}

int Position::get_row() {

    // TODO: write implementation here.

    return row;

}

void Position::set_row(int row_in) {

    // TODO: write implementation here.

    row = row_in;

}

int Position::get_col() {

    // TODO: write implementation here.

    return col;

}

void Position::set_col(int col_in) {

    // TODO: write implementation here.

    col = col_in;

}

void Position::read(istream &is) {

    // TODO: write implementation here.

    // First, read the line

    std::string raw_pos;

    is >> raw_pos;

    // Check if it contains parenthesys

    char rowc, colc;

    if(raw_pos[0] == '(')

    {

        rowc = raw_pos.at(1);

        colc = raw_pos.at(3);

    }

    else {

        rowc = raw_pos[0];

        colc = raw_pos[1];

    }

    // Instantiante a new POsition

    Position p(rowc, colc);

    row = p.get_row();

    col = p.get_col();

    return;

}

void Position::write(ostream &os) {

    // TODO: write implementation here.

    // Convert col to be in the range [1,8]

    int row_new = row+1;

    // Convert column to char

    char col_new = (char)(col + 65);

    // Write

    os << "(" << row_new << "," << col_new << ")";

    return;

}

int Position::check_range(int val) {

    // TODO: write implementation here.

    if(val >= 0 && val < MAX_GRID_SIZE) {

        return val;

    }

    return 0;

}

// Your code goes above this line.

// Don't change the implementations below!

istream &operator>>(istream &is, Position &pos) {

    pos.read(is);

    return is;

}

ostream &operator<<(ostream &os, Position pos) {

    pos.write(os);

    return os;

}