Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
9
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

Organization

Windowsでcursesを使う

はじめに

cursesやncursesはUnix向けなので,Windowsでは使えません。なので代わりにPDCursesというものがあるのでこれを使います。

環境

  • Windows 10
  • Visual Studio 2015

PDCursesのダウンロード

こちらのGitHubページからPDCursesのソースをダウンロードし,適当な場所に解凍しておきます。

PDCursesのビルド

1. C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\vcvars32.batを実行します。これは後でnmakeコマンドを使う前準備です。

2. コマンドプロンプトで以下のコマンドを実行して,PDCursesのソースがある場所を指定します。

set PDCURSES_SRCDIR=<PDCursesの解凍先>\PDCurses-master

3. コマンドプロンプトでPDCursesのwin32フォルダに移動して以下のコマンドを実行します。nmakeC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\binにあります。

nmake -f vcwin32.mak

4. win32フォルダにpdcurses.libができていることを確認します。

Visual Studioの設定

Visual Studioで空のC++プロジェクトを作って,以下の設定を行います。

  • C/C++ > Additional Include Directoriesに<PDCursesの解凍先>\PDCurses-masterを追加
  • Linker > General > Additional Library Directoriesに<PDCursesの解凍先>\PDCurses-master\win32を追加
  • Linker > Input > Additional Dependenciesにpdcurses.libを追加

使ってみる

早速PDCursesを使ってみましょう。curses.hをインクルードするとPDCursesの関数を使えるようになります。

以下のプログラムを実行するとHello cursesという文字列が斜め下に移動しながら表示されます。

#include <curses.h>

int main(int argc, char *argv[])
{
    // 初期化
    if (initscr() == NULL) {
        return 1;
    }

    int i = 0;

    while (true) {
        // 画面をクリア
        erase();

        // 文字列を描く
        mvaddstr(i, i, "Hello curses");
        i++;

        // 画面を更新
        refresh();

        // 1秒待機
        napms(1000);
    }

    return 0;
}

参考リンク

ぽんこつ研究所 - PDCursesを使ってみたい

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
9
Help us understand the problem. What are the problem?