7

よりシンプルな生活

私は C に戻り、私のプログラミング ローブを活性化させます。最後にプログラミングを学んだのは、大学で MSDOS の Turbo C を扱っていた時でした。単純な ASCII アニメーションは、Borland の親しみやすいアニメーションが<conio.h>離れているのを見つけてから、強迫観念になりました。gotoxyand関数はとても楽しかったので、ほどなくして、textcolorsnake や pong のようなゲームを書き始めました。それは言語を学ぶための非常にやりがいのある方法であり、ゲームごとに私はより野心的になり、さらに前進しました.

ncurses

同様のゲーム タイプのプロジェクトから始めたいと思います。しかし今日、私は Mac を使用しており、隅にほこりっぽい Linux マシンがあります。最愛の Turbo C を dosbox (どこにでもある十分なプラットフォーム) で起動することもできましたが、どの BSD または UNIX プラットフォームでも自然にコンパイルされるものを開発できるように C を学びたいと思っています。ncurses が前に進む道だと言われましたが、GNU サイトはほとんど頭に浮かびませんでした。当時、私は友好的なtextmode機能を持っていてprint、ポンから離れた表現でした。ncurses はより強力なようです。

シューシュー

こんな状態になったことのある人も多いのではないでしょうか。ncurses とは何か、およびその使用方法に取り組むのに役立つ関連チュートリアルまたはリソースを探しています。ヒントや同様の話も非常に興味深いでしょう!

4

4 に答える 4

5

うん、ncursesあなたが探しているライブラリです。gotoxy例として、これは:に相当する(n)cursesです。

名前

move、wmove-cursesウィンドウカーソルを移動します

概要

   #include <curses.h>

   int move(int y, int x);
   int wmove(WINDOW *win, int y, int x);

説明

これらのルーチンは、ウィンドウに関連付けられたカーソルを行yと列xに移動します。このルーチンは、refreshが呼び出されるまで端末の物理カーソルを移動しません。指定された位置は、ウィンドウの左上隅((0,0))を基準にしています。

補遺:

あなたのコメントであなたはcursesウィンドウについて尋ねます-私はncursesのmanページがこれについて言っていることを本当に改善できるとは思わないので、それを引用します:

ncursesライブラリでは、ウィンドウと呼ばれるデータ構造の操作が可能です。これは、CRT画面のすべてまたは一部を表す文字の2次元配列と考えることができます。端末画面のサイズであるstdscrと呼ばれるデフォルトのウィンドウが提供されます。その他はnewwinで作成できます。

cursesは、panel(3CURSES)ライブラリによって行われる重複するウィンドウを処理しないことに注意してください。これは、stdscrを使用するか、画面をタイル型ウィンドウに分割してstdscrをまったく使用しないことを意味します。2つを混合すると、予測できない、望ましくない影響が発生します。

Windowsは、WINDOW*として宣言された変数によって参照されます。これらのデータ構造は、ここおよびncursesのマニュアルページの他の場所で説明されているルーチンを使用して操作されます。それらの中で、最も基本的なルーチンはmoveとaddchです。これらのルーチンのより一般的なバージョンは、wで始まる名前で含まれているため、ユーザーはウィンドウを指定できます。wで始まらないルーチンはstdscrに影響します。

ルーチンを使用してウィンドウを操作した後、refreshが呼び出され、cursesにユーザーのCRT画面をstdscrのように見せるように指示します。ウィンドウ内の文字は実際にはタイプchtype(文字および属性データ)であるため、文字に関する他の情報も各文字に格納できます。

したがって、要約すると、ウィンドウ全体を安全に無視して、stdscrウィンドウを使用することができます。

于 2009-10-27T23:17:51.257 に答える
2

BSD や Linux などの UNIX ライクなシステムでは、ターミナル エミュレータを使用したいと思うことは間違いncursesありません。

おそらく、必要な機能を含む単純なラッパーを自分で作成し、OS ごとに異なる方法で実装する必要があります。Windows では、使用できるコンソール関数がいくつかあるので、その部分は難しくありません。

于 2009-10-27T16:41:00.017 に答える
1

Turbo C のようなコンソール IO を Linux に提供するライブラリがあります: TurboC また関連: DevC++ 用の CONIO

于 2009-11-16T12:00:47.147 に答える
1

ここにあなたが始めるための小さなプログラムがあります。

#include <curses.h>

int main(void) {
  int ch;

  /* The whole program needs error-checking */
  initscr();
  noecho();
  cbreak();
  printw("Hit Ctrl+C to exit ...\n\n");
  for (;;) {
    ch = getch();
    printw("Value of char: %d (%02x)\n", ch, ch);
  }
  endwin();
  return 0;
}

libcurses ライブラリを追加するようにリンカーに指示することを忘れないでください。

gcc ... -lcurses
于 2009-10-30T21:09:45.443 に答える