簡體   English   中英

如何將控制台光標移動到UNIX上的(x,y)?

[英]How do I move the console cursor to (x, y) on unix?

我已經在Windows上使用<windows.h><conio.h>進行了這種操作,但是在Unix上,我唯一能找到的是<ncurses.h> ,它使用了大量的C語言,並且不支持許多C ++函數。 如何將控制台光標移至(x,y),同時還能夠進行面向對象的編程?

編輯:我試圖使用控制台作為顯示在C ++中制作簡單的游戲。 我知道這樣做並不理想,但這是針對無法使用Visual C ++或任何其他圖形的項目的。 想想像蛇或掃雷。 我需要能夠cout在不同的位置,而不會在過程中更新整個屏幕。 它需要與Unix系統兼容。

一種非常簡單的方法是通過ANSI轉義碼

#include <iostream>

void moveCursor(std::ostream& os, int col, int row)
{
  os << "\033[" << col << ";" << row << "H";
}

int main()
{
  moveCursor(std::cout, 1,1);
  std::cout << "X (1,1)";
  moveCursor(std::cout, 13,8);
  std::cout << "X (13,8)" << std::endl;

  return 0;
}

序列<ESC>[ row , col H (轉義字符為ASCII 27或八進制'\\033' )執行絕對光標定位。 在大多數普通終端上,應在左上角放置一個“ X”,在第13列第8行中放置第二個(計數基於1)。

編輯 :hvd的評論當然是現場的:這很簡單,但是ncurses由於某種原因很復雜。 與普通的轉義代碼相比,它可以確保更可靠地工作,並且設置范圍更廣。 根據您實際想要實現的目標,我同意hvd的觀點,在選擇這種簡單的技巧作為解決問題的方法之前,您應該非常小心。

暫無
暫無

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

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