我正在尝试使用以下控制台显示类来显示一个tic tac toe游戏 - 这是为了一项任务 - 我给了以下代码 - 控制台显示一个标有0-9列的网格,并显示标记为0-9的行 - 控制台还在网格内显示随机字符 - 我需要将随机字符更改为我选择的字符 - 但我找不到该部分设置中间网格空间的代码。
如果有人可以帮我指出代码中决定网格中显示内容的部分,我会非常感激。
注意 - 必须将字符集更改为(使用多字节字符集)才能从程序中查看正确的输出。更改器字符集位于项目属性 - 常规 - Visual Studio中的项目默认值
下 #include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <tchar.h>
using std::cin;
bool setxychar( int x, int y, const char* pBuf, int len )
{
HANDLE console_handle;
COORD cursor_coord;
DWORD actual=0;
console_handle= GetStdHandle(STD_OUTPUT_HANDLE);
cursor_coord.X=x; // (40-(strlen(buffer)/2));
cursor_coord.Y=y;
//This would be the equivalent to gotoxy(x,y).
if (SetConsoleCursorPosition(console_handle,cursor_coord))
{
// Look up this function in your VC++ help/index
WriteConsole(console_handle,pBuf,len,&actual,NULL);
return true;
}
return false;
}
// setxychar() - Overloaded
// this method allows you to print a single character at a location
bool setxychar( int x, int y, char Buf )
{
return( setxychar( x, y, &Buf, 1 ) );
}
int _tmain(int argc, _TCHAR* argv[])
{
const char graybar = '\xB2';
char *buffer ="Tic Tac Toe";
int x=0, y=0;
for(x=0; x<80; x++) // vertical borders
{
y=0;
setxychar(x,y,&graybar,1);
y=23;
setxychar(x,y,&graybar,1);
}
for( y=0; y<24; y++ ) // horizontal borders
{
x=0;
setxychar(x,y,&graybar,1);
x=79;
setxychar(x,y,&graybar,1);
}
setxychar(3,3,' '); // position pointer
printf( " 0 1 2 3 4 5 6 7 8 9 A B C D E F\n" );
char testchar = 0; // A warning is put up by the compiler
for(y=4; y<20; y++ ) // "warning C4309: 'initializing' : truncation of constant value"
{ // 80 hex is the same as -128, Hex is just easier
setxychar(1,y,' '); // position pointer
printf( "%X", 16*(y-4) );
for(x=6; x<38; x+=2)
{
setxychar(x,y,&testchar,1);
testchar++;
}
}
// Putting text to screen just for fun
setxychar(52,6,buffer,(int)strlen(buffer));
setxychar(1,22,' '); // position pointer
cin.get();
return 0;
}
答案 0 :(得分:0)
看起来相关部分是:
char testchar = 0;
和
setxychar(x,y,&testchar,1);
和
testchar++;