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 回答