[英]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是寬版。)
作為獎勵,您可以獲得非阻塞鍵盤輸入支持,用於制作您自己的終端游戲(如rogue或nethack )。
請注意,我不使用 Windows,所以我不知道 WSL/WSL2 對寬 I/O 的支持情況如何。 過去,原生 Windows 程序需要一些額外的寬 I/O 調用,但是 ncurses 6.2 INSTALL 文件說它現在也有代碼來支持 Windows 命令行。 問題被標記為linux ,並且 ncursesw 基本上適用於 Linux、Mac OS、OpenBSD、FreeBSD 等中的所有終端類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.