<html>

<head><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- MyFirstUnitAd -->
<ins class="adsbygoogle"
     style="display:inline-block;width:970px;height:250px"
     data-ad-client="ca-pub-5778386704669218"
     data-ad-slot="1503492166"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>

<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>CFGReader</title>
</head>

<body>



<p align="left"><font size="6" color="#FF0000"><span lang="en-ca"><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </b></span>
<b>Console display base</b></font></p>

<div align="left">
  <pre><b><font color="#ff0000" size="5">A. First Edition</font></b></pre>
</div>
<div align="left">
  <pre><b>These classes are all base classes for console displays.</b></pre>
</div>
<div align="left">
  <pre><b><font color="#ff0000" size="5"><span lang="en-ca">B</span>.<span lang="en-ca"><a name="problem"></a>The problem</span></font></b></pre>
</div>
<div align="left">
  <pre><b>How to display in console without using iostream class?</b></pre>
</div>
<div align="left">
  <b><font color="#ff0000" size="5"><span lang="en-ca"><a name="explain"></a>C</span>.<span lang="en-ca">The
  </span></font></b><span lang="en-ca"><font size="5" color="#FF0000"><b>idea of 
  program</b></font></span></div>
<div align="left">
  　</div>
<div align="left">
  <pre><b>These classes are for our comp354 project which is going to make a little game like cross word.</b></pre>
</div>
<div align="left">
  <pre><b><font color="#ff0000" size="5">D.<span lang="en-ca"><a name="Method"></a>The </span>major functions</font></b></pre>
</div>
<div align="left">
  <pre><b><font color="#ff0000" size="5"><span lang="en-ca">E</span>.</font></b><span lang="en-ca"><font size="5" color="#FF0000"><b>Further improvement</b></font></span></pre>
</div>
<div align="left">
  <pre><b><font color="#ff0000" size="5"><span lang="en-ca">F</span>.</font></b><span lang="en-ca"><font size="5" color="#FF0000"><b>File listing</b></font></span></pre>
</div>
<div align="left">
  <pre><font size="3"><b>1<span lang="en-ca">. </span>tile<span lang="en-ca">.</span>h</b></font></pre>
</div>
<div align="left">
  <pre><font size="3"><b>2<span lang="en-ca">. </span>tile.cpp</b></font></pre>
</div>
<div align="left">
  <pre><font size="3"><b>3<span lang="en-ca">. </span>tiles.h</b></font></pre>
</div>
<div align="left">
  <pre><font size="3"><b>4. tiles.cpp</b></font></pre>
</div>
<div align="left">
  <pre><font size="3"><b>5. token.h</b></font></pre>
</div>
<div align="left">
  <pre><font size="3"><b>6. token.cpp</b></font></pre>
</div>
<div align="left">
  <pre><font size="3"><b>7. tokens.h</b></font></pre>
</div>
<div align="left">
  <pre><font size="3"><b>8. tokens.cpp</b></font></pre>
</div>
<div align="left">
  <pre><font size="3"><b>9. RoverType.h</b></font></pre>
</div>
<div align="left">
  <pre><font size="3"><b>10. <span lang="en-ca">main.cpp (main)</span></b></font></pre>
</div>
<p>　</p>
<p><span lang="en-ca"><font size="3" color="#FF0000"><b>file name: </span>tile<span lang="en-ca">.h</span></b></font></p>
<pre>#include &quot;RoverType.h&quot;


class CTile
{
private:
	char ch;
	int ftColor;
	int bkColor;
public:
	void display(int x, int y);
	void setFontColor(int theColor){ftColor=theColor;}
	void setBKGroundColor(int theColor){ bkColor=theColor;}
	void setValue(char myCh) { ch=myCh;}
	CTile(char myCh=0);
};</pre>
<p><font size="3" color="#FF0000"><b><span lang="en-ca">file name: </span>tile<span lang="en-ca">.</span></b></font><font color="#FF0000"><b>cpp</b></font></p>
<pre>#include &quot;Tile.h&quot;

HANDLE hOutPut=0;

CTile::CTile(char myCh)
{
	ftColor=DefaultFontColor;
	bkColor=DefaultBKGroundColor;
	setValue(myCh);
	if (hOutPut==0)
	{
		hOutPut=GetStdHandle(STD_OUTPUT_HANDLE);
	}
}

void CTile::display(int x, int y)
{
	COORD coord;
	coord.X=x;
	coord.Y=y;
	FillConsoleOutputAttribute(hOutPut, ftColor|bkColor, 1, coord, NULL);
	FillConsoleOutputCharacter(hOutPut, ch, 1, coord, NULL);
}
</pre>
<pre>　</pre>
<pre><font size="3" color="#FF0000"><b><span lang="en-ca">file name: </span>tiles.h</b></font></pre>
<pre>#include &quot;tile.h&quot;

class CTiles
{
private:
	CTile* tiles;
	int len;
	int ftColor;
	int bkColor;
	void initialize();
public:
	CTiles(const char* str);
	CTiles();
	~CTiles();
	void setFontColor(int theColor){ftColor=theColor;}
	void setBKGroundColor(int theColor){bkColor=theColor;}
	int getLength(){return len;}
	void display(int x, int y);
	void setValue(const char* str);
};</pre>
<pre><font size="3" color="#FF0000"><b><span lang="en-ca">file name: </span>tiles.cpp</b></font></pre>
<pre>#include &quot;tiles.h&quot;

CTiles::CTiles()
{
	initialize();
}

void CTiles::initialize()
{
	len=0;
	tiles=NULL;
	ftColor=DefaultFontColor;
	bkColor=DefaultBKGroundColor;
}

CTiles::~CTiles()
{
	delete[]tiles;
}

void CTiles::setValue(const char* str)
{	
	len=strlen(str);
	tiles=new CTile[len] ;
	for (int i=0; i&lt;len; i++)
	{
		tiles[i].setValue(str[i]);
	}
}

CTiles::CTiles(const char* str)
{
	initialize();
	setValue(str);
}


void CTiles::display(int x, int y)
{
	for (int i=0; i&lt;len; i++)
	{
		tiles[i].display(x+i, y);
	}
}</pre>
<pre><font size="3" color="#FF0000"><b><span lang="en-ca">file name: </span>token.h</b></font></pre>
<pre>#include &quot;RoverType.h&quot;

enum Suit
{Club=5, Diamond=4, Heart=3, Spade=6};

class CToken
{
private:
	WORD colors[4][4];	
	WORD ftColor;
	WORD bkColor;
	WORD frColor;
	char chRow[3][3];
	void initialize();
public:
	CToken(int num);
	CToken(char ch='A');
	void setValue(char myCh);
	void setNumber(int num);	
	void setFrameColor(WORD theColor);
	void setFontColor(WORD theColor);
	void setBKGroundColor(WORD theColor);
	void setSuit(Suit theSuit);
	void display(int x, int y);
};</pre>
<pre>　</pre>
<pre><font size="3" color="#FF0000"><b><span lang="en-ca">file name: </span>token.cpp</b></font></pre>
<pre>#include &quot;token.h&quot;
#include &quot;tile.h&quot;


extern HANDLE hOutPut;

void CToken::initialize()
{
	ftColor=DefaultFontColor;
	bkColor=DefaultBKGroundColor;
	frColor=DefaultFrameColor;
	for (int i=0; i&lt;4; i++)
	{
		for (int j=0; j&lt;4; j++)
		{
			if (i&lt;3&amp;&amp;j&lt;3)
			{
				chRow[i][j]=0;
				colors[i][j]=ftColor|bkColor;
			}
			else
			{		
				colors[i][j]=frColor;
			}
		}
	}
	if (hOutPut==0)
	{
		hOutPut=GetStdHandle(STD_OUTPUT_HANDLE);
	}

}

void CToken::setBKGroundColor(WORD theColor)
{
	bkColor=theColor;
	for (int i=0; i&lt;3; i++)
	{
		for (int j=0; j&lt;3; j++)
		{
			colors[i][j]=ftColor|theColor;
		}
	}
}

void CToken::setFontColor(WORD theColor)
{
	ftColor=theColor;
	for (int i=0; i&lt;3; i++)
	{
		for (int j=0; j&lt;3; j++)
		{
			colors[i][j]=bkColor|theColor;
		}
	}
}

void CToken::setSuit(Suit theSuit)
{
	chRow[0][0]=chRow[2][2]=theSuit;
}

CToken::CToken(char ch)
{
	initialize();
	chRow[1][1]=ch;
}

void CToken::setNumber(int num)
{
	//in no condition, this would happen
	if (num&gt;99)
	{
		return ;
	}
	if (num&gt;9)
	{
		chRow[1][0]=num/10+'0';
		chRow[1][1]=num%10+'0';
	}
	else
	{
		chRow[1][1]=num+'0';
	}
}

CToken::CToken(int num)
{
	initialize();
	setNumber(num);
}

void CToken::setFrameColor(WORD theColor)
{
	for (int i=0; i&lt;4; i++)
	{
		for (int j=0; j&lt;4; j++)
		{
			if (i==3||j==3)
			{
				colors[i][j]=theColor;
			}
		}
	}
}

void CToken::setValue(char myCh)
{
	chRow[1][1]=myCh;
}

/*
void CToken::setDegree(WORD num)
{
	for (int i=0; i&lt;3; i++)
	{		
		for (int j=0; j&lt;3; j++)
		{
			colors[i][j]=bkColor|num;
		}
	}
}
*/

void CToken::display(int x, int y)
{
	COORD coord;

	coord.X=x;
	coord.Y =y;
	for (int i=0; i&lt;4; i++)
	{
		coord.Y=y+i;
		coord.X=x;
		WriteConsoleOutputAttribute(hOutPut, colors[i], 4, coord, NULL);
		//WriteConsoleOutputAttribute(hOutPut, &amp;temp, 3, coord, NULL);
		if (i&lt;3)
		{
			for (int j=0; j&lt;3; j++)
			{
				coord.X=x+j;
				FillConsoleOutputCharacter(hOutPut, chRow[i][j], 1, coord, NULL);
			}
		}

	}
}
</pre>
<pre>　</pre>
<pre><font size="3" color="#FF0000"><b><span lang="en-ca">file name: </span>tokens.h</b></font></pre>
<pre>#include &quot;token.h&quot;


class CTokens
{
private:
	CToken* tokens;
	int len;
	WORD ftColor;
	WORD bkColor;
	WORD frColor;
	void initialize();
public:
	CTokens();
	CTokens(const char* str);
	void setValue(const char* str);
	void setFontColor(WORD theColor);
	void setBKGroundColor(WORD theColor);
	void setFrameColor(WORD theColor);
	~CTokens();
	void display(int x, int y);
};</pre>
<pre><font size="3" color="#FF0000"><b><span lang="en-ca">file name: </span>tokens.cpp</b></font></pre>
<pre>#include &quot;tokens.h&quot;

CTokens::CTokens()
{
	initialize();
}

CTokens::CTokens(const char* str)
{
	initialize();
	setValue(str);
}

void CTokens::initialize()
{
	len=0;
	tokens=NULL;
	ftColor=DefaultFontColor;
	bkColor=DefaultBKGroundColor;
	frColor=DefaultFrameColor;
}

void CTokens::setBKGroundColor(WORD theColor)
{
	for (int i=0; i&lt;len; i++)
	{
		tokens[i].setBKGroundColor(theColor);
	}
}

void CTokens::setFontColor(WORD theColor)
{
	for (int i=0; i&lt;len; i++)
	{
		tokens[i].setFontColor(theColor);
	}
}

void CTokens::setFrameColor(WORD theColor)
{
	for (int i=0; i&lt;len; i++)
	{
		tokens[i].setFrameColor(theColor);
	}
}

void CTokens::setValue(const char* str)
{
	len=strlen(str);
	tokens=new CToken[len];
	for (int i=0; i&lt;len; i++)
	{
		tokens[i].setValue(str[i]);
	}
}

void CTokens::display(int x, int y)
{
	for (int i=0; i&lt;len; i++)
	{
		tokens[i].display(x+i*4, y);
	}
}

CTokens::~CTokens()
{
	delete [] tokens;	
}</pre>
<pre><font size="3" color="#FF0000"><b><span lang="en-ca">file name: </span>RoverType.h</b></font></pre>
<pre>#include &lt;windows.h&gt;


//the font color
#define  FTBLUE        FOREGROUND_BLUE 
#define	 FTGREEN       FOREGROUND_GREEN 
#define	 FTRED         FOREGROUND_RED 
#define	 FTPURPLE      FOREGROUND_BLUE|FOREGROUND_RED
#define	 FTGREY        FOREGROUND_BLUE|FOREGROUND_GREEN
#define	 FTBROWN	   FOREGROUND_RED|FOREGROUND_GREEN,
#define	 FTWHITE       FOREGROUND_BLUE|FOREGROUND_GREEN|FOREGROUND_RED
#define	 FTINTENSITY   FOREGROUND_INTENSITY

//the background color
#define	 BKBLUE        BACKGROUND_BLUE 
#define  BKGREEN       BACKGROUND_GREEN 
#define	 BKRED         BACKGROUND_RED 
#define	 BKPURPLE      BACKGROUND_BLUE|BACKGROUND_RED
#define	 BKGREY        BACKGROUND_BLUE|BACKGROUND_GREEN
#define	 BKBROWN	   BACKGROUND_RED|BACKGROUND_GREEN
#define	 BKWHITE       BACKGROUND_BLUE|BACKGROUND_GREEN|BACKGROUND_RED
#define	 BKINTENSITY   BACKGROUND_INTENSITY

#define DefaultFontColor        FTRED
#define DefaultBKGroundColor    BKWHITE
#define DefaultFrameColor       BKGREY

</pre>
<pre>　</pre>
<pre>
</pre>
<div align="left">
  <pre><font size="3" color="#FF0000"><b>f<span lang="en-ca">ile name: </span></b></font><font size="3" color="#FF0000"><b><span lang="en-ca">main</span></b></font><font size="3" color="#FF0000"><span lang="en-ca"><b>.</b></span><b>cpp(main)</b></font></pre>
</div>
<pre>#include &quot;tokens.h&quot;
#include &quot;tiles.h&quot;


int  main()
{
	CTokens T(&quot;CTokens with FRAME!&quot;);
	T.display(5,5);
	CTiles R(&quot;This is CTiles without frame!&quot;);
	R.display(4, 10);

	return 0;

}

</pre>
<pre>
</pre>
<pre></pre>
<pre><font color="#0000FF"><b><span lang="en-ca">The input is something like following:</span></b></font></pre>
<pre><font color="#0000FF"><b>Here is the <a name="result"></a><a name="result" href="picture/Console.JPG">result:</a></b></font></pre>

<p><img border="0" src="picture/Console.JPG" width="827" height="275"></p>

<pre></pre>

<pre></pre>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                                   
&nbsp;&nbsp;&nbsp; <a href="WhoAmI.htm">                  







                       <img src="picture/back.gif" style="border: medium none" alt="back.gif (341 bytes)" width="32" height="35"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<a href="index.htm">
<img src="picture/up.gif" style="border: medium none" alt="up.gif (335 bytes)" width="35" height="32"></a>       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                         
<img src="picture/next.gif" style="border: medium none" alt="next.gif (337 bytes)" width="32" height="35">          


</p>

</body>

</html>