我使用ncurses库在C编程(这是第一次),我有两个问题.我在ubuntu上使用默认终端(gnome终端).
1)我需要调整终端的大小.我使用了resizeter()和resize_term(),但是它们都失败了.
2)我使用scrollok()函数,问题是我丢失了滚动的行(当我回到wscrl()时,有空白行).
#include <ncurses.h>
int main() {
WINDOW *win, *win2;
int i;
char c;
initscr();
cbreak();
noecho();
win=newwin(8,20,1,1);
box(win,0,0);
win2=newwin(6,18,2,2);
scrollok(win2,1);
wrefresh(win);
wrefresh(win);
for(i=0;i<15;i++){
c=wgetch(win2);
if(c=='u'){
wscrl(win2,-1);
wrefresh(win2);
}
else{
wprintw(win2,"%c\n",c);
wrefresh(win2);
}
}
delwin(win);
delwin(win2);
endwin();
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我有一个运行正常的Curses应用程序.它可以很好地调整术语的大小,一切都很好.唯一的问题是,当endwin()调用它时,它会将终端重置为原始大小.IE,我正在使用该应用程序,我调整了我的术语,我退出了应用程序,我的术语又恢复到原始大小.
我需要做些什么来防止这种情况发生?
谢谢.
在ncurses libreries上做一些基本的例子,我遇到了一些问题.
实际上,我没有得到我所期望的(消息打印),并且从eclipse进入调试,我得到(在控制台区域)"错误打开终端:未知."
遵循代码:
#include <unistd.h>
#include <stdlib.h>
#include <ncurses.h>
int main() {
initscr();
move(5,15);
printw("%s", "Hello world!");
refresh();
endwin();
exit(EXIT_SUCCESS);
}
Run Code Online (Sandbox Code Playgroud)
编译器选项,在Eclipse控制台的"Build project"命令中提供:
make all
Building file: ../source/Curses_01.c
Invoking: GCC C Compiler
gcc -Incurses -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"source/Curses_01.d" -MT"source/Curses_01.d" -o"source/Curses_01.o" "../source/Curses_01.c"
Finished building: ../source/Curses_01.c
Building target: Curses_01
Invoking: GCC C Linker
gcc -o"Curses_01" ./source/Curses_01.o -lcurses
Finished building target: Curses_01
Run Code Online (Sandbox Code Playgroud)
提前谢谢大家!
我成功跑了 sudo apt-get install libncurses5-dev
在我的 Eclipse 窗口中,我尝试构建以下HelloWord.cpp程序:
#include <ncurses.h>
int main()
{
initscr(); /* Start curses mode */
printw("Hello World !!!"); /* Print Hello World */
refresh(); /* Print it on to the real screen */
getch(); /* Wait for user input */
endwin(); /* End curses mode */
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Invoking: GCC C++ Linker
g++ -m32 -lncurses -L/opt/lib -o "Test_V" ./src/curseTest.o ./src/trajectory.o ./src/xJus-epos.o -lEposCmd
/usr/bin/ld: cannot find -lncurses
collect2: error: ld returned 1 exit …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个基于 Ncurses 的纯 C 库,它提供一组预制小部件(尤其是最重要的一个表格小部件)。我知道 CDK,它提供了很多小部件,但它没有提供我最需要的小部件。有没有其他库可以为我提供这个特定的功能?
编辑:请看我的评论
拥有基于Qt和ncurses的应用程序,在等待用户输入的同时每秒刷新屏幕的最佳方法是什么?(例如,显示时钟并获取用户输入).
我需要CPU使用率和应用程序响应能力之间的最佳折衷.
更具体的问题是,如何获得用户输入仍然使用QTimer和信号槽机制?
使用下面的代码时,计时器不起作用.
nodelay(stdscr,true); while(1) { sleep(1); getch(); processInput(); }
Run Code Online (Sandbox Code Playgroud) 我正在写一个小学校项目。这是一个单词下降的游戏 - 单词从顶部移动到底部。我有一个想法,制作两个窗口(一个带有界面,第二个带有移动对象)。正如您在代码中看到的那样,单词是随机的。问题是输入。我正在使用 mvwsacanw 来写这个词。当单词在不同的窗口中移动时,有没有办法在第二个窗口中写任何东西?现在这个词正在下降,当它到达底部时,第二个窗口打开,我可以输入这个词。
希望有人会帮助我。
#include <stdio.h>
#include <ncurses.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
void moving(WINDOW *move)
{
int j,random;
char *cmp=(char*)malloc(10*sizeof(char));
char word[6];
wclear(move);
box(move, 0, 0);
mvwprintw(move, 1, 1, "PIS");
wrefresh(move);
srand (time (NULL));
random=2+rand()%7;
for(j=0; j< random ; j++) //random word
{
word[j]= rand()%26+'a';
}
int poz = 2+rand()%24; //random position of moving word
for(int i=1; i<18; i++)
{
wclear(move);
box(move,0,0);
mvwprintw(move,i, poz, word);
wrefresh(move);
usleep(300000);
}
}
void interface(WINDOW *ui)
{
wclear(ui);
char *cmp=(char*)malloc(10*sizeof(char)); …Run Code Online (Sandbox Code Playgroud) 在这个简单的程序中(用 C 编写)
#include <ncurses.h>
#include <string.h>
int main()
{
initscr();
printw("line 1\n");
printw("line 2\n");
start_color();
init_pair(1, COLOR_RED, COLOR_BLACK);
printw("line 3");
getch();
endwin();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
黑色背景上的红色文本打印在屏幕上。但是当我运行程序时,背景比终端的黑色背景稍亮,在Linux(Gnome终端)中。
我不想在终端的默认黑色上设置背景颜色:我想保留终端背景并将背景实际设置ncurses为透明。
有没有办法做到这一点?
注意:我试图按照这个问题中的建议将该函数放在use_default_colors();后面,但它没有用。start_color();
当我运行我的应用程序时,我遇到了大量的输入延迟。
更多细节:当我按下“w”、“a”、“s”、“d”(我指定的输入键)时,对象会移动,但是在释放键后它会继续移动很长时间。源代码在下面,但是代码的一小部分已经被剪掉以缩短问题,但是如果下面的源代码不能编译,我将所有代码放在 github 上。 https://github.com/TreeStain/DodgeLinuxGame.git谢谢你的时间。-特里斯坦
道奇.c:
#define ASPECT_RATIO_X 2
#define ASPECT_RATIO_Y 1
#define FRAMES_PER_SECOND 60
#include <ncurses.h>
#include "object.h"
#include "render.h"
int main()
{
initscr();
cbreak();
noecho();
nodelay(stdscr, 1);
object objs[1];
object colObj; colObj.x = 10; colObj.y = 6;
colObj.w = 2; colObj.h = 2;
colObj.sprite = '*';
colObj.ySpeed = 1;
colObj.xSpeed = 1;
objs[0] = colObj;
//halfdelay(1);
while (1)
{
char in = getch();
if (in == 'w')
objs[0].y -= objs[0].ySpeed * ASPECT_RATIO_Y;
if (in == 's')
objs[0].y …Run Code Online (Sandbox Code Playgroud) 我正在玩ncurses.Ncurses是我安装的库,不是我自己的文件.我已经做了一些事情,但使用IDE更容易,所以我决定使用CLion(我在Linux上,所以不能使用Visual Studio).我得到了以下CMakeLists.txt:
cmake_minimum_required(VERSION 3.6)
project(ncurses)
set(CMAKE_C_STANDARD "${CMAKE_C_FLAGS} -Wall -Werror -lpdcurses")
set(SOURCE_FILES main.cpp ncurses.h)
add_executable(ncurses ${SOURCE_FILES})
Run Code Online (Sandbox Code Playgroud)
我的项目被称为ncurses我不知道这是否重要.
我得到了以下main.cpp
#include <ncurses.h>
int main() {
initscr();
printw("Hello");
refresh();
getch();
endwin();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
/opt/clion/bin/cmake/bin/cmake --build /home/josh/ClionProjects/ncurses /cmake-build-debug --target all -- -j 4
make[2]: *** No rule to make target 'CMakeFiles/ncurses.dir/build'. Stop.
make[1]: *** [CMakeFiles/Makefile2:68: CMakeFiles/ncurses.dir/all] Error 2
make: *** [Makefile:84: all] Error 2
Run Code Online (Sandbox Code Playgroud)
我不知道问题是什么.我尝试过-lncurses,lpdcurses但是这也不起作用.它只会在构建时出错,但在IDEA本身时不会出错.