控制台窗口中的C++像素

hCo*_*Con 13 c++ console codeblocks pixels

在使用Code :: Blocks v10.05的C++中,如何在控制台屏幕上绘制单个像素?这很容易,还是只绘制一个矩形会更容易?我该如何着色?对不起,但是我无法从SOF,HF甚至cplusplus.com获得任何代码.这是一个超级马里奥世界的人物在屏幕上.我认为这个游戏是16位的,适用于SNES系统.C :: B说我需要C :: B的SDK.它说"afxwin.h"不存在.可能下载?这就是我想要做的:

我试图创建的图像

Fac*_*res 16

这取决于您的操作系统.我想你是在Windows平台上编程,因此你可以使用SetPixel,但你必须使用"windows.h"来获得一个控制台句柄,所以这里有一个绘制cos()函数的例子:

#include<windows.h>
#include<iostream>
#include <cmath>

using namespace std;

#define PI 3.14

int main() 
{
    //Get a console handle
    HWND myconsole = GetConsoleWindow();
    //Get a handle to device context
    HDC mydc = GetDC(myconsole);

    int pixel =0;

    //Choose any color
    COLORREF COLOR= RGB(255,255,255); 

    //Draw pixels
    for(double i = 0; i < PI * 4; i += 0.05)
    {
        SetPixel(mydc,pixel,(int)(50+25*cos(i)),COLOR);
        pixel+=1;
    }

    ReleaseDC(myconsole, mydc);
    cin.ignore();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

您还可以使用其他一些库:conio.h allegro.h sdl等.

  • 抱歉?如果你参考SDK,是的,你必须使用微软.另一方面,我说你可以使用其他库,如:conio.h allegro.h sdl等.在linux中,你可以使用ncurses或http://www.svgalib.org/... (2认同)

dan*_*n04 13

如果您愿意让图像看起来很块,您可以利用控制台代码页中的块字符.

  • ? ='\ xDB'= U + 2588 FULL BLOCK
  • ? ='\ xDC'= U + 2584 LOWER HALF BLOCK
  • ? ='\ xDF'= U + 2580 UPPER HALF BLOCK
  • 和空间

通过将半块与彩色文本结合使用,您可以将80×25控制台窗口转换为80×50 16色显示屏.(这是NBbles的QBasic版本使用的方法.)

然后,您只需将图像转换为16色调色板,并且尺寸相当小.

马里奥在8行和10列

  • 当我在高中时,我使用这种技术在 Commodore 64 上制作了一个 80x50 16 色显示屏作为科学博览会项目。我向 BASIC 添加了新命令来绘制像素和线条。美好时光。:-) (2认同)

Zde*_*vic 1

控制台是一种文本设备,因此通常您不会写入单个像素。您可以创建一种特殊字体并选择它作为控制台的字体,但它将是单色的。有一些库可以简化控制台 UI 的编写(例如 Curses),但我相信除了显示精灵之外,您还可以考虑更多类似游戏的功能。

如果你想写一个游戏,我建议看看一些图形/游戏框架/库,例如SDL