ايران ويج

نسخه‌ی کامل: snake
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام چه جوري مي شه بافر كي برد رو تو يه برنامه پاك كرد؟(كد برنامه ي snake)
کد:
كد:
#include<conio.h>
#include<stdio.h>
#include<dos.h>
#include <time.h>
#include<stdlib.h>
int x=40,y=21,i,j,b=219+256*7,q;
unsigned short int far *screen=(unsigned short int far*) 0xb8000000;
void rang(int x,int y,int r)
{
    screen[y*80+x]=r;
}
void clear()
{
    for(i=0;i<50;i++)
        for(j=10;j<80;j++)
            rang(j,i,219+256*7);
    int m=rand()%70+10;
    int n=rand()%50;
    rang(m,n,49+256*4);
}
int k=(151+7*16)*256+42;
void main()
{
    textmode(64);
    randomize();
    clrscr();
    _setcursortype(_NOCURSOR);
    char c=75;
    clear();
    while (c!=27)
    {
     delay(50);
        if(kbhit())
            c=getch();
        if(c!=72&&c!=77&&c!=75&&c!=80&&c!=27)
        c=q;
        if(c==72&&q==80) c=80;
        if(c==80&&q==72) c=72;
        if(c==75&&q==77) c=77;
        if(c==77&&q==75) c=75;
        i=x;
        j=y;
        switch (c)
        {
        case 72:
             y--;
        break;
        case 75:
             x--;
        break;
        case 80:
             y++;
        break;
        case 77:
             x++;
        break;
        }
        if (y==-1)
             y=49;
        if (y==50)
             y=0;
        if(x==9)
             x=79;
        if(x==80)
             x=10;
        rang(i,j,2011);
        if(screen[y*80+x]-256*4>48&&screen[y*80+x]-256*4<58)
     //    if(screen[y*80+x]==57) screen[y*80+x]=47;
        rang(rand()%70+10,rand()%50,screen[y*80+x]+1);//50+256*4);
            rang(x,y,k);
        q=c;
    }
}
[/align][/quote]
این سواله یا جواب؟؟؟؟؟
خوب اولش سؤال بود .اون كد پر ايراده كه يكيش بافر كي برده(اگه چند ثانيه يه كليدو نگه داريم كليد بعدي رو كه بزنيم چند ثانيه بعد فرمانش اجرا مي شه.بعدشم ماره بايد طولش زياد شه كه هنوز نمي شه. )
پاک کردن بافر کیبورد با صدا زدن این تابع به این شکل ;( fflush ( stdin صورت میگیره . بهترین راه کار با سخت افزار های مثل کیبورد تحت داس استفاده از وقفه ها بود که البته در ویندوز های جدیدتر مثل XP یا 2000 امکان پذیر نیست .