3
#include <stdio.h>
#include <dos.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 25

main(){
    int a[MAX],i,j,lvl=2,score=0;
    float time=1.0,speed;
    speed=time/lvl;

    clrscr();

    for(i=0;i<MAX;i++)
        a[i]=rand()%50+1;

    while(1){
        for(j=0;j<MAX;j++){
            gotoxy(a[j],1);
            printf("*");
            gotoxy(1,1);
            insline();
            sleep(speed);
            score++;
            gotoxy(57,1);
            clrscr();
            printf("%d",score);
            if(score==100)
                lvl++;
        }
    }
}

こんにちは、を使用して画面の右上隅にスコアを印刷しようとしていますgotoxy()。を使用gotoxy(1,1)して空白行を挿入するカーソル位置を設定していましたinsline()。しかし、画面にスコアを印刷するたびに、以下に示すようにスコアが連続して印刷されます。

スコアが右側に繰り返される DOS スクリーンショット

強調されたテキストは、スコアを印刷し、新しい行を挿入するときに最後の位置でそれを削除してinsline()、最後のスコアが画面に印刷されずに現在のスコアのみが印刷されるようにする他の方法はありますか?

4

1 に答える 1

2

この機能を使用する必要があります

WriteConsoleOutput(....);

MSDNで確認してください

http://msdn.microsoft.com/en-us/library/windows/desktop/ms687404(v=vs.85).aspx

于 2013-01-07T12:59:05.703 に答える