更改网格

时间:2015-04-22 19:54:49

标签: c++

我正在尝试使用以下控制台显示类来显示一个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;
    }

1 个答案:

答案 0 :(得分:0)

看起来相关部分是:

char testchar = 0; 

setxychar(x,y,&testchar,1); 

testchar++;