- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
GotoXY 无法工作,如果我将它可以工作的功能分开,但我需要将它们全部放在同一个文件中。
#include "colors.h"
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#define clear() printf("\033[H\033[J")
void gotoXY(int x, int y) {
COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
void welcome() {
printf("%s", KRED);
printf(" _ __________ __________ __ _________\n");
printf(" | | / / ____/ / / ____/ __ \\/ |/ / ____/\n");
printf(" | | /| / / __/ / / / / / / / / /|_/ / __/ \n");
printf(" | |/ |/ / /___/ /___/ /___/ /_/ / / / / /___ \n");
printf(" |__/|__/_____/_____/\\____/\\____/_/ /_/_____/ \n");
printf(" \n");
printf("\n\n%s", KGRN);
sleep(3);
clear();
}
void menu_main_interface() {
clear();
printf("%s",KBLU);
printf(" ___ ___ ___ _____ _ _ ___ ___ _____ _ _ _ _ \n");
printf(" | \\/ | / _ \\|_ _| \\ | | | \\/ || ___| \\ | | | | |\n");
printf(" | . . |/ /_\\ \\ | | | \\| | | . . || |__ | \\| | | | |\n");
printf(" | |\\/| || _ | | | | . ` | | |\\/| || __|| . ` | | | |\n");
printf(" | | | || | | |_| |_| |\\ | | | | || |___| |\\ | |_| |\n");
printf(" \\_| |_/\\_| |_/\\___/\\_| \\_/ \\_| |_/\\____/\\_| \\_/\\___/ \n");
printf("%s",KGRN);
printf("\n\n ________________________________________________________\n |");
printf(" |\n");
printf(" | 1 ---> NEW GAME |\n");
printf(" | 2 ---> LOAD GAME |\n");
printf(" | 3 ---> TOP 10 TIMES |\n");
printf(" | |\n");
printf(" | 0 ---> EXIT |\n");
printf(" | ENTER OPTION: |\n");
printf(" |______________________________________________________|\n");
gotoXY(16, 25);
}
int main(int argc, char** argv) {
printf("%s", KGRN);
welcome();
start();
return (EXIT_SUCCESS);
}
并且 start() 函数仅调用 select_menu_interface() 导致:
void select_menu_interface() {
int selection;
do {
menu_main_interface();
readInt(&selection, 0, 3, "");
switch (selection) {
case 1: select_newgame(); break;
case 2: break;
case 3: readHS(); break;
case 0: break;
default: printf("ERROR: Bad Input!"); break;
}
} while (selection < 0 && selection > 3);
}
我希望光标位于“Enter Option:”,但它不起作用:光标位于另一行的开头:
最佳答案
查看您的代码,您似乎正在使用 ANSI terminal escape codes清除屏幕并设置颜色。由于 Windows 命令控制台默认不支持这些代码(ANSI.SYS 不再可用):
ENABLE_VIRTUAL_TERMINAL_PROCESSING
flag使用 SetConsoleMode()
。 在第一种情况下,我们帮不了什么忙。但我已经测试了第二种情况:您在 gotoXY()
中的位置似乎与您向我们展示的屏幕布局不匹配:第一个参数是列,第二个是行。所以 gotoXY(16, 25)
会转到第 25 行(即屏幕上的第 26 行,因为位置从 0 开始)。那将至少比你的最后一行低 8 行(假设你的颜色序列不添加行)。为了获得正确的位置,我必须使用 gotoXY(23,15);
这种混淆可以解释滚动(如果第 25 行超出了垂直限制的窗口大小)。但是要使光标位于屏幕的开头,则需要水平位置超出窗口的水平尺寸(即至少 >57),而这里不是这种情况。
所以还有一些其他的可能性需要探索:
fflush(stdout)
可能是安全的,以确保缓冲不会造成一些麻烦(例如要显示的尾随换行符稍后,例如当您使用其他 I/O 功能(如读取键盘)时。readInt()
没有改变光标位置,例如,通过一个新行(我看到一个尾随的“”,所以我想该函数可以显示一些东西。关于c - GotoXY 没有像我预期的那样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40341712/
这个问题是我之前题为 How to fix this procedure writing a string to the console screen buffer 的帖子的后续问题. 我想在写入任意
函数 gotoxy 当包含在低级文件复制程序中时会生成错误。 这是代码 #include #include"d:\types.h" #include"d:\stat.h" #include"d:\fc
我知道我的问题很愚蠢,但我仍然需要你的帮助。为什么 gotoxy 的功能不能正常工作? void gotoxy(int x,int y) { COORD coord={x,y}; Se
GotoXY 无法工作,如果我将它可以工作的功能分开,但我需要将它们全部放在同一个文件中。 #include "colors.h" #include #include #include #def
#include #include #include int intSlot1, intSlot2, intSlot3; void fnGotoXY(short x, short y); voi
我的教授使用 gotoxy 换行。例如: #include #include main() { gotoxy(0, 1); printf("Hello World"); goto
这是学生成绩单项目,当我将这段代码从 borland C 转移到 dev C++ 时,我遇到了一些问题。现在,当我尝试在 dev C++ 中编译程序时,它给出了未定义 gotoxy() 的错误消息。那
Turbo C 在 conio.h 中提供了 gotoxy() 函数,但它不是标准。 我使用 gcc 编译器,需要 gotoxy() 函数。 我在网上搜索,但发现只具有特定于操作系统的功能或具有某种依
我在我的类(class)中读到 gotxy() 是一个预定义函数,但它不适用于 Microsoft visual 2013。所以我做了一些搜索,我得到了那段代码,它可以工作,但我必须理解它。所以谁能详
我的身材呈“Σ”形。问题是我必须从左上角而不是中间缩放它,这个符号的对角线连接的地方。 如果有人愿意分享任何关于如何改变它的 anchor 以扩大或缩小它的边的技巧,我将不胜感激。我考虑了将近一周,但
我想为初级数据库管理制作一个菜单驱动的程序。 所以,请提供一些关于如何借助以下示例在 python 中使用 gotoxy 替代方案的想法。 我有 C 代码在屏幕中央绘制一条垂直线和一条水平线,如下所示
谁能告诉我 gotoxy() 是如何使用 printf() 实现的 void gotoxy(int x,int y) { printf("%c[%d;%df",0x1B,y,x); } printf(
我有这样的东西: ______________________ /\ \ \_| 1. Menu entry one | | 2. Menu entry
做第一个项目是俄罗斯方 block ;现在我正在做动画部分,但我在清除屏幕时遇到问题,我试过了: void clrscr() { system("cls"); } 它有效,但它一直在闪烁屏幕,有没
我在ubuntu中使用gcc。所以,我在终端中编译和执行。但是在在线编程竞赛中,他们需要如图所示的输出。 为此,如果我使用 TURBOC 我可以使用 conio.h 使用 gotoxy() 来获得 螺
你好 我正在做一个需要 gotoxy() 函数的项目 我读过gotoxy() implementation for Linux using printf 我想知道为什么 void gotoxy(int
所以我正在建立一个带边界的 map 并用'*'填充 现在我想要做的是清空所有的 ' * ' 并用空格填充它们。 我没有得到预期的输出,也无法弄清楚我做错了什么,如果有人能帮助我,我将不胜感激。 #in
我想使用 printf 写一些东西,同时将 x 坐标和 y=0 居中。 如何使 x 坐标居中?例如,有人可能会全屏打开编译器窗口,而其他人可能不会?我想要中间的文字。现在 x 被分配了一个随机值 (5
我编写了一个由多个函数组成的程序,当控制权传递给它们时,每个函数都会在控制台上打印几件事。现在我试图在屏幕中央而不是在屏幕的左上角打印所有内容。为此,我唯一知道的是 Windows.h 的 gotox
如何在 Based on pixel in gotoxy(x,y) 函数中设置 x 和 y? 最佳答案 gotoxy 不是 Pascal 的一部分 - 它是在 Pascal 的某些实现中发现的扩展,并
我是一名优秀的程序员,十分优秀!