Ok basically, I am making an ascii rpg in win32 console. I made my test map, but the coloring of different characters on the map isnt working right. The main one i need to work is wt (which needs to be blue for water), which I defined in the header file "keys.h" ... In keys.h is all my map stuff:
In my main .cpp file is everything else, heres its code:Code://keys.h #define wt 247 #define b1 2 #define b2 3 #define br 179 #define bt 196 #define bc 218 #define gr 176 char map[20][59]={bc,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt,bt, br,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1, br,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1, br,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1, br,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1, br,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1, br,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1, br,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1, br,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1, br,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1, br,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1, br,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,wt,wt,wt,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1, br,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,wt,wt,wt,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1, br,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,wt,wt,wt,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1, br,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1, br,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1, br,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1, br,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1, br,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1, br,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1 };
I know its sloppy, but I was just trying to get it to work right before I put the code into my game, so It wont look this bad when its done, honest . If anyone sees why it isnt working right please tell me. The thing I am using to change the colors is checkcolor(); which is the function at the very bottom of the main .cpp file. Thanks!Code:#include <iostream> #include <windows.h> #include <stdio.h> #include <conio.h> #include <stdlib.h> #include "keys.h" int ch; static int get_code ( void ) { int ch = getch(); if ( ch == 0 || ch == 224 ) ch = 256 + getch(); return ch; } enum { KEY_ESC = 27, ARROW_UP = 256 + 72, ARROW_DOWN = 256 + 80, ARROW_LEFT = 256 + 75, ARROW_RIGHT = 256 + 77 }; void checkxy(); void checkcolor(); using namespace std; void gameframe(); void menuframe(); void textframe(); int x=0,y=0; void gotoxy(int x, int y) { HANDLE hConsoleOutput; hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE); COORD dwCursorPosition; dwCursorPosition.X = x; dwCursorPosition.Y = y; SetConsoleCursorPosition(hConsoleOutput,dwCursorPosition); } int r,j; int main () { gameframe(); menuframe(); textframe(); y=-1; x=0; gotoxy(x,y); for(r=0; r<20; r++) { y++; gotoxy(x,y); for(j=0; j<59; j++) { checkcolor(); putchar(map[r][j]); } } while ( ( ch = get_code() ) != KEY_ESC ) { switch ( ch ) { case ARROW_UP: y--; checkxy(); gotoxy(x,y); putchar(1); y++; gotoxy(x,y); checkcolor(); putchar(map[y][x]); y--; gotoxy(x,y); break; case ARROW_DOWN: y++; checkxy(); gotoxy(x,y); putchar(1); y--; gotoxy(x,y); checkcolor(); putchar(map[y][x]); y++; gotoxy(x,y); break; case ARROW_LEFT: x--; checkxy(); gotoxy(x,y); putchar(1); x++; gotoxy(x,y); checkcolor(); putchar(map[y][x]); x--; gotoxy(x,y); break; case ARROW_RIGHT: x++; checkxy(); gotoxy(x,y); putchar(1); x--; gotoxy(x,y); checkcolor(); putchar(map[y][x]); x++; gotoxy(x,y); break; } } return 0; } void gameframe() { SetConsoleTextAttribute (GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_INTENSITY); int count = 0; int ymin = 0; int ymax = 20; int xmin = 0; int xmax = 59; gotoxy(xmin,ymin); putchar(218); gotoxy(xmax,ymin); putchar(191); gotoxy(xmin,ymax); putchar(192); gotoxy(xmax,ymax); putchar(217); gotoxy(xmin+1,ymin); for(count=xmin; count<xmax-1; count++) putchar(196); gotoxy(xmin+1,ymax); for(count=xmin; count<xmax-1; count++) putchar(196); for(count=ymin+1; count<=ymax-1; count++) { gotoxy(xmin,count); putchar(179); } for(count=ymin+1; count<=ymax-1; count++) { gotoxy(xmax,count); putchar(179); } } void menuframe() { SetConsoleTextAttribute (GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_INTENSITY); int count = 0; int ymin = 0; int ymax = 30; int xmin = 60; int xmax = 79; gotoxy(xmin,ymin); putchar(218); gotoxy(xmax,ymin); putchar(191); gotoxy(xmin,ymax); putchar(192); gotoxy(xmax,ymax); putchar(217); gotoxy(xmin+1,ymin); for(count=xmin; count<xmax-1; count++) putchar(196); gotoxy(xmin+1,ymax); for(count=xmin; count<xmax-1; count++) putchar(196); for(count=ymin+1; count<=ymax-1; count++) { gotoxy(xmin,count); putchar(179); } for(count=ymin+1; count<=ymax-1; count++) { gotoxy(xmax,count); putchar(179); } } void textframe() { SetConsoleTextAttribute (GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_INTENSITY); int count = 0; int ymin = 21; int ymax = 30; int xmin = 0; int xmax = 59; gotoxy(xmin,ymin); putchar(218); gotoxy(xmax,ymin); putchar(191); gotoxy(xmin,ymax); putchar(192); gotoxy(xmax,ymax); putchar(217); gotoxy(xmin+1,ymin); for(count=xmin; count<xmax-1; count++) putchar(196); gotoxy(xmin+1,ymax); for(count=xmin; count<xmax-1; count++) putchar(196); for(count=ymin+1; count<=ymax-1; count++) { gotoxy(xmin,count); putchar(179); } for(count=ymin+1; count<=ymax-1; count++) { gotoxy(xmax,count); putchar(179); } } void checkxy() { if(x<1) { x++; } if(y<1) { y++; } if (x>58) { x--; } if(y>19) { y--; } } void checkcolor() { char temp1=map[r][j]; char temp2=map[y][x]; if((temp1==wt) || (temp2==wt)) { SetConsoleTextAttribute (GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE | FOREGROUND_INTENSITY); } if((temp1==b1) || (temp2==b1)||(temp1==b2) || (temp2==b2)) { SetConsoleTextAttribute (GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY); } if((temp1==br) || (temp2==br)||(temp1==bt) || (temp2==bt)||(temp1==bc) || (temp2==bc)) { SetConsoleTextAttribute (GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_INTENSITY); } }