コンソール上書き

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
h1j1k1
記事: 22
登録日時: 10ヶ月前

コンソール上書き

#1

投稿記事 by h1j1k1 » 5日前

コンソールを使ったゲームのようなものを作りたいと考えています。
\rや\bを使えば同じ行の文字は削除できることは知りましたが、上や下の行の文字を削除したり更新したり、カーソルを移動したりする方法がわかりません。
どうしたらよろしいでしょうか?

ISLe
記事: 2623
登録日時: 7年前
連絡を取る:

Re: コンソール上書き

#2

投稿記事 by ISLe » 5日前

Win32コンソールAPIというものを使うとコンソール上のテキストの読み書きやカーソルの操作ができます。
が、個人的にはncursesライブラリを使うことをお勧めします。

ncursesライブラリはLinux由来ですが、Windows用のものもあって、マルチプラットフォームに対応します。

ncursesライブラリを使ったプログラム例
http://isle.cocolog-nifty.com/blog/curses/index.html

Math

Re: コンソール上書き

#3

投稿記事 by Math » 2日前

\rや\b などエスケープ・シーケンスをつかう方法もありますが座標をしていするサンプルを。

c1.c

コード:

#include <stdio.h>/////
#include <time.h>////// Windows Console 制御
#include <stdlib.h>////
#include <windows.h>///

HANDLE Stdout;
int color = 14;
int x,y;
int i;

///////////////////////  座標 x,y に文字列を出力
void draw(int x, int y, int col, int c) { 
    COORD coord;  coord.X = x;  coord.Y = y;
    SetConsoleTextAttribute(Stdout, col | 8);
    SetConsoleCursorPosition(Stdout, coord); putchar(c);
}

int main(void) {

    Stdout = GetStdHandle(STD_OUTPUT_HANDLE);

    system("cls"); 

    for( i=0; i<26; i++){
        draw( 0, i, i, 65+i);
        printf("012456789");printf("012456789");printf("012456789");printf("012456789");
        printf("012456789");printf("012456789");printf("012456789");printf("012456789");
    }

    draw( 0, i, 7, 65+27);
    system("pause"); 

    return 0;
}
CX-Builder のバッチ
cx.bat

コード:

bcc64 c1.c
dir *.exe
pause
c1.exe
pause
http://www2.koyoen.birdview.co.jp/~abcxyz/z0815x.png

http://www2.koyoen.birdview.co.jp/~abcxyz/z0815y.png

返信

“C言語何でも質問掲示板” へ戻る