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:
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
};
In my main .cpp file is everything else, heres its code:
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);
	}
	
}
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!