0

پاسخ گويي به سوالات ++C

 
alireza110
alireza110
کاربر نقره ای
تاریخ عضویت : اسفند 1387 
تعداد پست ها : 327
محل سکونت : اصفهان

پاسخ به:پاسخ گويي به سوالات ++C
پنج شنبه 19 اسفند 1389  12:35 AM

 

نقل قول reza1371
#include <stdio.h>
#include <conio.h>
#include <dos.h>
void module(void);
void stair(void);
void open(int str);
void close(int str);
void run(int to);
void oblong(int length,int width);
void key(void);
void time(int time);
int lsearch(int no);
int from=0,up[]={-1,-1,-1,-1,-1,-1};
void main()
{
   stair();
   module();
   for(;;)
      key();
   return;
}//*********************END OF MAIN

void stair(void)
{
  int i,j;
   for(i=1;i<6;i++)
   {
     gotoxy(10,i*5);
      for(j=0;j<15;j++)
       printf("%c",219);
   }
   return;
}//********************END OF STAIR
void module(void)
{
   gotoxy(15,21);
 oblong(5,4);
   return;
}//*******************END OF MODULE
void open(int str)
{
  int i;
   time(1000);
   for(i=0;i<2;i++)
   {
    gotoxy(17,25-(str*5)-3+i);
      printf("%c",0);
   }
   time(1000);
   for(i=0;i<2;i++)
   {
    gotoxy(16,25-(str*5)-3+i);
      printf("%c",0);
      gotoxy(18,25-(str*5)-3+i);
      printf("%c",0);
   }
   time(1000);
   return;
}//***********************END OF OPEN
void close(int str)
{
  int i;
   time(1000);
   for(i=0;i<2;i++)
   {
    gotoxy(16,25-(str*5)-3+i);
      printf("%c",219);
      gotoxy(18,25-(str*5)-3+i);
      printf("%c",219);
   }
   time(1000);
   for(i=0;i<2;i++)
   {
    gotoxy(17,25-(str*5)-3+i);
      printf("%c",219);
   }
   time(1000);
   return;
}//*************************END OF CLOSE
void key(void)
{
  char key;
   int z;
   if(kbhit())
   {
    key=getch();
    if(key-48>=0&&key-48<=4&&(lsearch(key-48))==5&&(key-48)!=from)
       for(z=0;z<5;z++)
         {
          if(up[z]==-1)
            {
             up[z]=key-48;
               run(key-48);
               break;
            }
         }
   }
   return;
}//***********************END OF KEY
void oblong(int length,int width)
{
  int i,j;
  for(i=0;i<width;i++)
   {
    for(j=0;j<length;j++)
        if(i>0&&i<width-1&&j>0&&j<length-1)
          printf("%c",0);
         else
          printf("%c",219);
      gotoxy(wherex()-length,wherey()+1);
   }
   return;
}//********************END OF OBLONG
void time(int time)
{
  char key;
   int k,z;
   for(k=0;k<(time/10);k++)
   {
    if(kbhit())
      {
       key=getch();
          if(key-48>=0&&key-48<=4&&(lsearch(key-48))==5)
             for(z=0;z<5;z++)
               {
                if(up[z]==-1)
                   {
                      up[z]=key-48;
                        break;
                     }
               }
      }
    delay(10);
   }
}//*********************END OF TIME
int lsearch(int no)
{
 int i;
  for(i=0;i<5;i++)
      if(up[i]==no)
         return i;
    return 5;
}//*********************END OF LSEARCH
void run(int to)
{
 int i,j=0,k;
   if(to>from)
   {
    close(from);
    for(k=to-from;k>0;k--)
      {
     for(i=25-(from*5)-4;i>25-((from+1)*5)-4;i--)
     {
    movetext(15,i,19,i+3,15,i-1);
          movetext(1,5,5,5,15,i+3);
          j++;
          if(j%5==0)
           movetext(15,25,19,25,15,i+3);
            time(500);
     }
         from++;
         if(k==1&&legsrch(from)!=5)
          k++;
         if(k==1)
         {
          open(from);
            up[lsearch(from)]=-1;
            if(lemsrch(from)!=5)
             run(up[lemsrch(from)]);
         }
         else if(up[lsearch(from)]==from)
         {
           open(from);
            close(from);
            up[lsearch(from)]=-1;
         }
      }
   }
   if(to<from)
   {
    close(from);
    for(k=from-to;k>0;k--)
      {
     for(i=25-(from*5)-4;i<25-((from-1)*5)-4;i++)
     {
    movetext(15,i,19,i+3,15,i+1);
          movetext(1,5,5,5,15,i);
          j++;
          if(j%5==0)
           movetext(15,25,19,25,15,i);
            time(500);
     }
         from--;
         if(k==1&&lemsrch(from)!=5)
          k++;
         if(k==1)
         {
          open(from);
            up[lsearch(from)]=-1;
            if(legsrch(from)!=5)
             run(up[legsrch(from)]);
         }
         else if(up[lsearch(from)]==from)
         {
           open(from);
            close(from);
            up[lsearch(from)]=-1;
         }
      }
   }
   return;
}//************************END OF RUN
int legsrch(int no)
{
 int i;
  for(i=0;i<5;i++)
      if(up[i]>no)
         return i;
    return 5;
}//***********************END OF LEGSRCH
int lemsrch(int no)
{
 int i;
  for(i=0;i<5;i++)
      if(up[i]<no&&up[i]>=0)
         return i;
    return 5;
}//***********************END OF LEGSRCH

 

الگوریتم قشنگی اونم با سی!!!!

یا علی

تشکرات از این پست
دسترسی سریع به انجمن ها