1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
#include <iostream>
#include <string>
#include <vector>
using namespace std;
//Template for testing all collision against objects.
bool IsColliding(vector<vector<char>> gameMap, int newPlayerXCoord, int newPlayerYCoord, vector<char> obj)
{
for (int i = 0; i < obj.size(); i++)
{
if (gameMap[newPlayerXCoord][newPlayerYCoord] == obj[i])
{
cout << "Collision" << endl;
return true;
}
}
}
void Shop();
int main()
{
char character = '*';
const char mapTile = ' ';
char boulder = '@';
char tree = '^';
char wall = '#';
char shop = 'S';
const int mapX = 12;
const int mapY = 23;
vector<vector<char>> gameMap(mapX, vector<char>(mapY, mapTile));
int playerXCoord = 2;
int playerYCoord = 2;
vector<char> collidables;
collidables.push_back(boulder);
collidables.push_back(wall);
collidables.push_back(tree);
int choice{};
while (choice != -1)
{
for (size_t i = 0; i < mapX; ++i)
{
for (size_t j = 0; j < mapY; ++j)
{
gameMap[i][j] = mapTile; //Re-Draw tiles so player char wont remain on movement path.
gameMap[playerXCoord][playerYCoord] = character; //Set player on map
gameMap[5][5] = boulder;
gameMap[6][7] = boulder;
gameMap[8][8] = tree;
gameMap[4][4] = shop;
gameMap[0][j] = wall; //Top Wall
gameMap[i][0] = wall; //Left Wall
gameMap[i][mapY - 1] = wall; //Right Wall
gameMap[mapX - 1][j] = wall; //Bottom Wall
cout << gameMap[i][j];
}
cout << endl;
}
std::cout << "Player X: " << playerXCoord << "\n";
std::cout << "Player Y: " << playerYCoord << "\n\n";
std::cout << "Which direction would you like to move in?\n";
std::cout << "1) Up\n";
std::cout << "2) Down\n";
std::cout << "3) Left\n";
std::cout << "4) Right\n";
std::cin >> choice;
if (choice == 50 && gameMap[playerXCoord][playerYCoord] == shop)
{
Shop();
}
switch (choice)
{
case 1:
//Testing object collisions are set here and not in the function
if (playerXCoord < 1 || IsColliding(gameMap, playerXCoord - 1, playerYCoord, collidables) == true)
{
std::cout << "Cannot go Up anymore\n";
}
else
{
playerXCoord -= 1;
}
break;
case 2:
if (playerXCoord == mapX - 1 || IsColliding(gameMap, playerXCoord + 1, playerYCoord, collidables) == true)
{
std::cout << "Cannot go in Down anymore\n";
}
else
{
playerXCoord += 1;
}
break;
case 3:
if (playerYCoord < 1 || IsColliding(gameMap, playerXCoord, playerYCoord - 1, collidables) == true)
{
std::cout << "Cannot go Left anymore\n";
}
else
{
playerYCoord -= 1;
}
break;
case 4:
if (playerYCoord == mapY - 1 || IsColliding(gameMap, playerXCoord, playerYCoord + 1, collidables) == true)
{
std::cout << "Cannot go Right anymore\n";
}
else
{
playerYCoord += 1;
}
break;
default:
std::cout << "Error\n";
}
}
return 0;
}
void Shop()
{
cout << "Shop Test" << endl;
}
|