Untitled

 avatar
unknown
plain_text
2 months ago
3.9 kB
8
Indexable
#include <iostream>
#include <fstream>
#include <ctime>
#include "commands.cpp"
#include "gameMap.cpp"
#include "robots.cpp"
#include "gamePlay.cpp"
using namespace std;

int map_size_x = 0; // The width of the game map (number of columns).
int map_size_y = 0; // The height of the game map (number of rows).
int player_count = 0; // The number of players (robots) participating in the game.
int num_of_commands = 84; // The total number of commands available in the game.
int start_robot_x_id = 1; // Index for the starting x-coordinate of the robot in the robot conditions array.
int start_robot_y_id = 0; // Index for the starting y-coordinate of the robot in the robot conditions array.
int robot_x_id = 3; // Index for the current x-coordinate of the robot in the robot conditions array.
int robot_y_id = 2; // Index for the current y-coordinate of the robot in the robot conditions array.
int direction_id = 4; // Index for the direction the robot is facing in the robot conditions array.
int damage_id = 5; // Index for the amount of damage a robot has taken in the robot conditions array.
int reboot_id = 6; // Index indicating whether the robot is in reboot mode in the robot conditions array (1 for next turn).
int recent_flag_id = 7; // Index for the most recent flag number the robot has touched in the robot conditions array.

int** createRobotConditionsArray(int player_count) {
    int** robot_conditions = new int*[player_count];
    for (int i = 0; i < player_count; i++) {
        robot_conditions[i] = new int[8];

        robot_conditions[i][direction_id] = 0; //direction facing
        robot_conditions[i][damage_id] = 0; //damage taken
        robot_conditions[i][reboot_id] = 0; //1 if rebooting
        robot_conditions[i][recent_flag_id] = 0; //most recent flag
    }
    return robot_conditions;
}

void setRobotPositions(char** game_map, int** robot_conditions, int player_index, int start_y, int start_x) {
    robot_conditions[player_index][start_robot_y_id] = start_y;
    robot_conditions[player_index][start_robot_x_id] = start_x;
    robot_conditions[player_index][robot_y_id] = start_y;
    robot_conditions[player_index][robot_x_id] = start_x;
}

int** getRobotPositions(char** game_map) {
    int** robot_conditions = createRobotConditionsArray(player_count);

    // Get Robot Positions and remove Robots from the game map
    for (int i = 0; i < map_size_y; i++) {
        for (int j = 0; j < map_size_x; j++) {
            if (game_map[i][j] == 'D') {
                if (player_count < 4) {
                    game_map[i][j] = '.';
                } else {
                    game_map[i][j] = '.';
                    setRobotPositions(game_map, robot_conditions, 3, i, j);
                }
            } else if (game_map[i][j] == 'C') {
                if (player_count == 2) {
                    game_map[i][j] = '.';
                } else {
                    game_map[i][j] = '.';
                    setRobotPositions(game_map, robot_conditions, 2, i, j);
                }
            } else if (game_map[i][j] == 'B') {
                game_map[i][j] = '.';
                setRobotPositions(game_map, robot_conditions, 1, i, j);
            } else if (game_map[i][j] == 'A') {
                game_map[i][j] = '.';
                setRobotPositions(game_map, robot_conditions, 0, i, j);
            }
        }
    }

    return robot_conditions;
}

int main() {
    srand(time(NULL));
    char** game_map = buildMap();
    string* command_list = buildCommandList();
    
    do {
        cout << "Choose a number of players (2-4):" << endl;
        cin >> player_count;
    } while (player_count < 2 || player_count > 4);
    
    int** robot_conditions = getRobotPositions(game_map);
    playGame(game_map, command_list, robot_conditions);
}
Editor is loading...
Leave a Comment