簡體   English   中英

如何使用 C 以編程方式更改設置以使 Linux 終端中字符的寬度和高度相同而沒有任何間距?

[英]How do I change the settings programmatically with C to make the width and height of characters in a Linux terminal the same without any spacing?

我正在嘗試使用 C 編程語言為 Linux 終端實現蛇游戲。

這是背景的代碼,它只是一組“牆”。

#include <stdio.h>
int main()
{
    printf("\033[H");
    printf("\033[J");
    for (int j = 0; j < 22; j++)
        printf("**");
    printf("\n");
    for (int i = 0; i < 20; i++)
    {
        printf("**");
        for (int j = 0; j < 20; j++)
            printf("  ");
        printf("**");
        printf("\n");
    }
    for (int j = 0; j < 22; j++)
        printf("**");
    printf("\n");
    printf("done\n");
    return 0;
}

這是我在終端中得到的

在此處輸入圖片說明

這當用“00”替換“”時

在此處輸入圖片說明

我不確定終端窗口的行之間是否存在某種間距。 它是正常使用所必需的,但不適用於主機游戲。

如何使用 C 以編程方式更改設置以使字符的寬度和高度相同而沒有任何間距,如下所示?

在此處輸入圖片說明

換句話說,我如何制作 20 行 x 20 列的字符,給出一個帶有 C 的正方形區域?

使用ncursesw,你可以使用Unicode塊元素(█ ▌ ▐ ▀ ▄ ▖▗ ▘ ▙ ▚ ▛ ▜▝ ▞ ▟ and ░ ▒ ▓)和方框繪圖字符(─ ▌ ▐ ☔☔☔☔☔ ║╚╝╠╣╦╩╬╒╓╕╖╘╙╛╜╞╟╡╢╤╥╧╨╪╫)和其他Unicode字符等幾何形狀(■□▣▪▫◤◣◢◥▤▥▦▧▨▩ ● ◎ ◉ ◌ ○ ◯),取決於您在終端中使用的字體所提供的字形。

(如果您想要更方形的字形,只需選擇更方形的字體,例如 Courier New。不過,大多數等寬字體都是矩形的,但高度大於寬度。)

對於寬字符常量和寬字符串,在引號前加上L 例如, L'▒'是指定中等填充的寬字符常量,而L"╔═╤═══╤══╗"是包含十個寬字符的寬字符串。

(寬並不意味着視覺上的寬,只是C標准對這些設施的稱呼。普通I/O和寬I/O不能混在同一個流中。對於ncurses,ncurses是標准的非寬終端curses庫,ncursesw是寬版。)

作為獎勵,您可以獲得非阻塞鍵盤輸入支持,用於制作您自己的終端游戲(如roguenethack )。

請注意,我不使用 Windows,所以我不知道 WSL/WSL2 對寬 I/O 的支持情況如何。 過去,原生 Windows 程序需要一些額外的寬 I/O 調用,但是 ncurses 6.2 INSTALL 文件說它現在也有代碼來支持 Windows 命令行。 問題被標記為 ,並且 ncursesw 基本上適用於 Linux、Mac OS、OpenBSD、FreeBSD 等中的所有終端類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM