使用ncurses(编程SOS游戏)将光标卡在棋盘上

使用ncurses(编程SOS游戏)将光标卡在棋盘上,c,cursor,ncurses,C,Cursor,Ncurses,我正在编程S-O-S游戏。我用printf用斜杠或连字符打印电路板和字母。当我被告知必须使用printf根据播放器的颜色打印之前的符号时,我遇到了一个问题(播放器1=红色,播放器2=黄色)。使用printf不能在同一行中以不同的颜色打印符号(可以,但代码会很大) 我开始使用带有mvprintw函数的ncurses,然后一切都变糟了。 我把光标卡在黑板的最后一列和最后一行,这扰乱了程序的良好运行 上图是当我输入“f7”和字母“S”时(h列不工作,所有内容都向左移动) 这是使用main功能打印电路

我正在编程S-O-S游戏。我用
printf
用斜杠或连字符打印电路板和字母。当我被告知必须使用
printf
根据播放器的颜色打印之前的符号时,我遇到了一个问题(播放器1=红色,播放器2=黄色)。使用
printf
不能在同一行中以不同的颜色打印符号(可以,但代码会很大)

我开始使用带有
mvprintw
函数的ncurses,然后一切都变糟了。 我把光标卡在黑板的最后一列和最后一行,这扰乱了程序的良好运行

上图是当我输入“f7”和字母“S”时(h列不工作,所有内容都向左移动)

这是使用
main
功能打印电路板的程序:

void打印板(sos*jg){
//my_win=创建_newwin(25,50,0,0);
int row,col;/*用于存储行数和*/
int num=1;
int let=97;
/*屏幕的列数*/
//而(getch()!='\n'){
/*启动诅咒模式*/
启动颜色();
初始对(1,红色,黑色);
初始对(2,颜色为黄色,颜色为黑色);
curs_集(2);
对于(第1行;第C行[第4行][第8列]){
attron(颜色对(1));
mvprintw(第4行,第8列,“|”,0);
attroff(颜色对(1));
}
else{attron(颜色对(2));mvprintw(行/4,列/8,“\\”,0);attroff(颜色对(2));}
}
if(jg->L[行/4][列/8]和NEU掩码){
如果(jg->L[行/4][col/8]==jg->C[行/4][col/8]){
attron(颜色对(1));
mvprintw(第4行,第8列,“/”,0);
attroff(颜色对(1));
}
else{attron(颜色对(2));mvprintw(行/4,列/8,“\\”,0);attroff(颜色对(2));}
}
}
如果((第1行)%4==2){
mvprintw(行,列-5,“%c”,jg->V[行/4][列/8]);
移动(200100);
//printf(“%c\n”,jg->V[row/4][col/8]);
}
如果((第1行)%4==3){
}
}
}
}
//printf(“\n”);
//}
//移动(100100);
//getch();
刷新
}
int main(){
sos jg,*pjg;
pjg=&jg;
int action=0,move=0,count=0,check=0;
num_player=1;
InitGame(pjg);
initscr();
noecho();

虽然(计数基本问题是你把诅咒和stdio混在一起——它们真的不在一起。试着把
scanf
改成
scanw
,看看会发生什么。

基本问题是你把诅咒和stdio混在一起——它们真的不在一起。试着把
scanf
改成
scanw
,看看会发生什么.

底部的
refresh;
不能为您工作,应该称为
refresh()
对不起,是的,我在这里手动添加了它,因为它在操作复制/粘贴时会擦除自身。但它在我的程序中编写得很好。从您的描述来看,问题出在哪里还不是很清楚,而且这段代码还不够完整,无法测试。我尝试使用该工具来放置代码,但它不起作用。这里有您可以访问的链接对于整个代码:底部的
refresh;
不能为您工作,应该称为
refresh()
对不起,是的,我在这里手动添加了它,因为它在操作复制/粘贴时会擦除自身。但它在我的程序中编写得很好。从您的描述来看,问题出在哪里还不是很清楚,而且这段代码还不够完整,无法测试。我尝试使用该工具来放置代码,但它不起作用。这里有您可以访问的链接对于整个代码:我已经从零开始了我的函数打印板,现在它可以工作了,但我仍然在努力进行颜色打印。如果玩家1提出了一个观点,链接必须以他的颜色打印,对于玩家2也是如此。我不知道我的函数UpdateDrinfo对于一个稍微明智的代码类型是否做得很好。(或者,如果印刷板再次无法正常工作)。再次说明,一切都在这里:我已经从头开始了我的函数打印板,现在它可以工作了,但我仍在努力进行颜色打印。如果玩家1提出了一个观点,链接必须以他的颜色打印,并且与玩家2的颜色相同。我不知道我的函数UpdateDirInfo对于一种稍微明智的代码类型是否做得很好。(或者,如果再次出现印制板工作不好的情况)。再次出现以下情况: