امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
snake
نویسنده پیام
misaq آفلاین
كاربر تک ستاره
*

ارسال‌ها: 35
موضوع‌ها: 17
تاریخ عضویت: مهر ۱۳۸۶

تشکرها : 0
( 2 تشکر در 2 ارسال )
ارسال: #1
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]
۰۵-آذر-۱۳۸۶, ۱۹:۳۳:۳۳
ارسال‌ها
پاسخ
ashkan آفلاین
بنيانگذار سايت
******

ارسال‌ها: 1,553
موضوع‌ها: 80
تاریخ عضویت: آبان ۱۳۸۲

تشکرها : 0
( 140 تشکر در 87 ارسال )
ارسال: #2
RE: snake
این سواله یا جواب؟؟؟؟؟

آشنایی با نظریه زبان باعث شد تا بفهمم کامپیوتر اونی نیست که من میدونم.
۰۶-آذر-۱۳۸۶, ۱۳:۴۵:۱۷
وب سایت ارسال‌ها
پاسخ
misaq آفلاین
كاربر تک ستاره
*

ارسال‌ها: 35
موضوع‌ها: 17
تاریخ عضویت: مهر ۱۳۸۶

تشکرها : 0
( 2 تشکر در 2 ارسال )
ارسال: #3
RE: snake
خوب اولش سؤال بود .اون كد پر ايراده كه يكيش بافر كي برده(اگه چند ثانيه يه كليدو نگه داريم كليد بعدي رو كه بزنيم چند ثانيه بعد فرمانش اجرا مي شه.بعدشم ماره بايد طولش زياد شه كه هنوز نمي شه. )
۰۷-آذر-۱۳۸۶, ۱۱:۵۶:۲۲
ارسال‌ها
پاسخ
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #4
RE: snake
پاک کردن بافر کیبورد با صدا زدن این تابع به این شکل ;( fflush ( stdin صورت میگیره . بهترین راه کار با سخت افزار های مثل کیبورد تحت داس استفاده از وقفه ها بود که البته در ویندوز های جدیدتر مثل XP یا 2000 امکان پذیر نیست .

گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
۱۱-آذر-۱۳۸۶, ۱۸:۵۵:۵۲
ارسال‌ها
پاسخ


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS