/*
Made in code::blocks 12.11
-randomly generated terrain mirrored to be equal for bought players
-
-
*/
#include <iostream>
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <fstream>
#include <cstring>
#include <string>
#include <cstdlib>
#include <ctime>
#include <sstream>
#include <cctype>
using namespace std;
//Public functions
char printMap(char terraniValue);
int spawnUnit(int positionOfPiece, int unitType);
int createBoard(int xLenght, int yLenght);
string OutputCharacterWithColor(string character);
void black();
void red();
void green();
void blue();
void white();
//Pubic variables
int Gold = 300;
int rowLength, columnLenght;
string board;
int main()
{
createBoard(10, 8);
printf("1.Infantry(Defence=6, Attack=1)\n");
printf("2.Sniper\n");
printf("3.Artillery\n");
printf("4.Tank\n");
printf("5.General\n");
printf("Enter pieces you want to buy or type \"end\" to finish buying pieces:\n");
string unitSelection = "choosing";
int unitType[99], positionOfPiece, nextPieceChoice = 0;
for(int i=0; i<99; i++)
{
unitType[i] = 99;
}
while(unitSelection != "end")//Somewhere in this while loop is the problem!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
{
cin >> unitSelection;
if(unitSelection == "1" || unitSelection == "2" || unitSelection == "3" || unitSelection == "4" || unitSelection == "5")
{
stringstream convert;
convert << unitSelection;//put string into stringstream
convert >> unitType[nextPieceChoice];//give the value to integer unitType[nextPieceChoice] from stringstream
nextPieceChoice++;
convert.str("");
convert.clear();
}
}
positionOfPiece = (rowLength/2) - (nextPieceChoice/2);//nextPieceChoice gives number of pieces that was chosen
int nextUnit = 0;
while(unitType[nextUnit] != 99);
{
spawnUnit(positionOfPiece+nextUnit, unitType[nextUnit]);
nextUnit++;
}
printf("Program not finished...\n");
system("pause");
return 0;
}
int spawnUnit(int positionOfPiece, int unitType)
{
string boardWithPieces[rowLength*columnLenght];
int counter = 1;
switch(unitType)
{
case 1:
{
if(Gold >= 10)
{
for(int i=0; i<board.length()+1; i++)
{
boardWithPieces[i] = board[i];
}
board.clear();
boardWithPieces[positionOfPiece] = "@";//replace random piece with first unit type
for(int i=0; i<=(rowLength*columnLenght); i++)//upper side of the board
{
if((i == (rowLength*counter)) && i != (rowLength*columnLenght)-1)//if end of row and that row is not last
{
black();
printf("|\n");
counter++;
}
if(i != (rowLength*columnLenght))//not last position in last row after '|' sign
{
OutputCharacterWithColor(boardWithPieces[i]);
board += boardWithPieces[i];//assign boardWithPieces back to board progress
}
}
counter -= 1;
for(int i=(rowLength*columnLenght); i>=0; i--)//lower side of the board(horizontally and vertically mirrored upper side)
{
if((i == (rowLength*counter)-rowLength))//if end of row and that row is not first one
{
black();
printf("|\n");
counter--;
}
if(i != 0)//not last position in last row after '|' sign
{
OutputCharacterWithColor(boardWithPieces[i-1]);
board += boardWithPieces[i-1];//assign boardWithPieces back to board progress
}
}
}
break;
}
case 2:
{
if(Gold >= 25)
{
}
break;
}
case 3:
{
if(Gold >= 30)
{
}
break;
}
case 4:
{
if(Gold >= 40)
{
}
break;
}
case 5:
{
if(Gold >= 50)
{
}
break;
}
case 99:
{
break;
}
default:
{
printf("Error:wrong unit type\n");
system("pause");
break;
}
}
return 0;
}
int createBoard(int xLength, int yLenght)
{
rowLength = xLength;
columnLenght = yLenght;
int randomNumber = 0;
srand(time(0));
for(int i=0; i<columnLenght; i++)
{
printf("%i%s", i, ".|");
for(int j=0; j<rowLength; j++)
{
randomNumber = rand()%5+1;
switch(randomNumber)
{
case 1:
{
printMap('!');
break;
}
case 2:
{
printMap('^');
break;
}
case 3:
{
printMap('#');
break;
}
case 4:
{
printMap('*');
break;
}
case 5:
{
printMap(' ');
break;
}
default:
{
printf("Error:terrain not found\n");
system("pause");
}
}
}
printf("|\n");
}
return 0;
}
char printMap(char terraniValue)
{
board += terraniValue;
printf("%c", terraniValue);
return 0;
}
//start of colour related functions
string OutputCharacterWithColor(string character)
{
if(character == "#")
{
white();
cout << character;
black();
}
if(character == "!")
{
red();
cout << character;
black();
}
else if(character == "@")
{
green();
cout << character;
black();
}
else if(character == "^")
{
blue();
cout << character;
black();
}
else
{
cout << character;
}
return "";
}
void white()
{
HANDLE hConsole;
hConsole = GetStdHandle (STD_OUTPUT_HANDLE);
SetConsoleTextAttribute
(hConsole, BACKGROUND_INTENSITY);
}
void black()
{
HANDLE hConsole;
hConsole = GetStdHandle (STD_OUTPUT_HANDLE);
SetConsoleTextAttribute
(hConsole, FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
}
void red()
{
HANDLE hConsole;
hConsole = GetStdHandle (STD_OUTPUT_HANDLE);
SetConsoleTextAttribute
(hConsole, FOREGROUND_RED | FOREGROUND_INTENSITY);
}
void green()
{
HANDLE hConsole;
hConsole = GetStdHandle (STD_OUTPUT_HANDLE);
SetConsoleTextAttribute
(hConsole, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
}
void blue()
{
HANDLE hConsole;
hConsole = GetStdHandle (STD_OUTPUT_HANDLE);
SetConsoleTextAttribute
(hConsole, FOREGROUND_BLUE | FOREGROUND_INTENSITY);
}
//end of colour related functions
111100/11000
David W 131 Practically a Posting Shark
111100/11000
David W 131 Practically a Posting Shark
Ancient Dragon 5,243 Achieved Level 70 Team Colleague Featured Poster
111100/11000
Ancient Dragon 5,243 Achieved Level 70 Team Colleague Featured Poster
111100/11000
Ancient Dragon 5,243 Achieved Level 70 Team Colleague Featured Poster
JasonHippy 739 Practically a Master Poster
111100/11000
111100/11000
Be a part of the DaniWeb community
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.