亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 蟻群算法 c實現(xiàn).txt

?? 關(guān)于蟻群算法的c實現(xiàn)
?? TXT
?? 第 1 頁 / 共 3 頁
字號:
            block[i][j] = 1;
            gotoxy(i,j);
            putch(BLOCK_CHAR);
        }
}

void SaveBlock(void)
{
 FILE *fp_block;
 char FileNameBlock[20];
 int i,j;

 gotoxy(1,MAXY+1);
    printf("                                       "); 
 gotoxy(1,MAXY+1);
 printf("Save to file...",FileNameBlock);
 gets(FileNameBlock);
 if(FileNameBlock[0]==0) strcpy(FileNameBlock,"Ant.ant");
 else strcat(FileNameBlock,".ant");
 
 if ((fp_block = fopen(FileNameBlock, "wb")) == NULL)
 { gotoxy(1,MAXY+1);
        printf("Creat file %s fail...",FileNameBlock);
  getch();
  exit(2);
 }
 gotoxy(1,MAXY+1);
    printf("                                                     "); 

  
    for(k=0;k<=1;k++)
    /* SMELL TYPE FOOD and HOME */
        for(i=0;i<=MAXX;i++)
            for(j=0;j<=MAXY;j++)
                Smell[k][i][j] = 0;
    SmellGoneTimer = 0;
    gettime(&starttime);
    SmellDispFlag = 0;
    CanFindFood = 0;
    HardtoFindPath = 0;
    
    fclose(fp_block);
}
    
 fputc(home.xxx,fp_block);
 fputc(home.yyy,fp_block);
 fputc(food.xxx,fp_block);
 fputc(food.yyy,fp_block);
 
 for(i=0;i<=MAXX;i++)
        for(j=0;j<=MAXY;j++)
            fputc(block[i][j],fp_block);
    
    fclose(fp_block);
}

void LoadBlock(void)
{
 FILE *fp_block;
 char FileNameBlock[20];
 int i,j,k;

 gotoxy(1,MAXY+1);
    printf("                                       "); 
 gotoxy(1,MAXY+1);
 printf("Load file...",FileNameBlock);
 gets(FileNameBlock);
 if(FileNameBlock[0]==0) strcpy(FileNameBlock,"Ant.ant");
 else strcat(FileNameBlock,".ant");
 
 if ((fp_block = fopen(FileNameBlock, "rb")) == NULL)
 { gotoxy(1,MAXY+1);
        printf("Open file %s fail...",FileNameBlock);
  getch();
  exit(2);
 }
 
 clrscr();
 home.xxx = fgetc(fp_block);
 home.yyy = fgetc(fp_block);
 food.xxx = fgetc(fp_block);
 food.yyy = fgetc(fp_block);
 gotoxy(home.xxx,home.yyy); putch(HOME_CHAR);
    gotoxy(food.xxx,food.yyy); putch(FOOD_CHAR);
    food.amount = random(MAX_FOOD/3)+2*MAX_FOOD/3+1;
    /* food.amount = MAX_FOOD; */
    home.amount = 0;
    home.TargetFood = (food.amount<TARGET_FOOD)?food.amount:TARGET_FOOD;
 
 for(AntNow=0;AntNow<MAX_ANT;AntNow++)
    {
        AntInitial();
    } /* of for AntNow */;
    
 for(i=0;i<=MAXX;i++)
        for(j=0;j<=MAXY;j++)
        {
            block[i][j] = fgetc(fp_block);
            if(block[i][j])
            {
             gotoxy(i,j);
             putch(BLOCK_CHAR);
         }
        }


void HomeFoodInitial(void)
{
    int randnum;
    int homeplace;
    /* 1 -- home at left-up, food at right-down
       2 -- home at left-down, food at right-up
       3 -- home at right-up, food at left-down
       4 -- home at right-down, food at left-up */

    randnum = random(100);
    if(randnum<25) homeplace = 1;
    else if (randnum>=25&&randnum<50) homeplace = 2;
    else if (randnum>=50&&randnum<75) homeplace = 3;
    else homeplace = 4;
    
    switch(homeplace)
    {
        case 1: home.xxx = random(MAXX/3)+1;
                home.yyy = random(MAXY/3)+1;
                food.xxx = random(MAXX/3)+2*MAXX/3+1;
                food.yyy = random(MAXY/3)+2*MAXY/3+1;
                break;
        case 2: home.xxx = random(MAXX/3)+1;
                home.yyy = random(MAXY/3)+2*MAXY/3+1;
                food.xxx = random(MAXX/3)+2*MAXX/3+1;
                food.yyy = random(MAXY/3)+1;
                break;
        case 3: home.xxx = random(MAXX/3)+2*MAXX/3+1;


                home.yyy = random(MAXY/3)+1;
                food.xxx = random(MAXX/3)+1;
                food.yyy = random(MAXY/3)+2*MAXY/3+1;
                break;
        case 4: home.xxx = random(MAXX/3)+2*MAXX/3+1;
                home.yyy = random(MAXY/3)+2*MAXY/3+1;
                food.xxx = random(MAXX/3)+1;
                food.yyy = random(MAXY/3)+1;
                break;
    }

    food.amount = random(MAX_FOOD/3)+2*MAX_FOOD/3+1;
    /* food.amount = MAX_FOOD; */
    home.amount = 0;
    home.TargetFood = (food.amount<TARGET_FOOD)?food.amount:TARGET_FOOD;

    /* data correctness check */
    if(home.xxx<=0||home.xxx>MAXX||home.yyy<=0||home.yyy>MAXY||
       food.xxx<=0||food.xxx>MAXX||food.yyy<=0||food.yyy>MAXY||
       food.amount<=0)
    {
        gotoxy(1,MAXY+1);
        printf("World initial fail, any key to exit...");
        getch();
        exit(2);    
    }
        
    gotoxy(home.xxx,home.yyy); putch(HOME_CHAR);
    gotoxy(food.xxx,food.yyy); putch(FOOD_CHAR);
}

void AntInitial(void)
/* initial ant[AntNow] */
{
    int randnum;
    int i;
    
    ant[AntNow].xxx = home.xxx;
    ant[AntNow].yyy = home.yyy;
    
    randnum = random(100);
    if(randnum<25) ant[AntNow].dir = UP;
    else if (randnum>=25&&randnum<50) ant[AntNow].dir = DOWN;
    else if (randnum>=50&&randnum<75) ant[AntNow].dir = LEFT;

   
  else ant[AntNow].dir = RIGHT;
    
    ant[AntNow].speed = 2*(random(INI_SPEED/2)+1);
    ant[AntNow].SpeedTimer = 0;
    ant[AntNow].food = 0;
    ant[AntNow].SmellAmount[SMELL_TYPE_FOOD] = 0;
    ant[AntNow].SmellAmount[SMELL_TYPE_HOME] = MAX_SMELL;
    ant[AntNow].IQ = 1;
    
    for(i=0;i<TRACE_REMEMBER;i++)
    {
        ant[AntNow].tracex[i] = 0;
        ant[AntNow].tracey[i] = 0;
    }
    ant[AntNow].TracePtr = 0;
    
    /* a sepecail ant */
    if(AntNow==0) ant[AntNow].speed = INI_SPEED;
}

void WorldChange(void)
{
    int k,i,j;
    int smelldisp;
    
    SmellGoneTimer+=timer10ms;
    if(SmellGoneTimer>=SMELL_GONE_SPEED)
    {
        SmellGoneTimer = 0;
        for(k=0;k<=1;k++)
        /* SMELL TYPE FOOD and HOME */
            for(i=1;i<=MAXX;i++)
                for(j=1;j<=MAXY;j++)
              {
                        if(Smell[k][i][j])
                  {
                            smelldisp = 1+((10*Smell[k][i][j])/(MAX_SMELL*SMELL_DROP_RATE));
                            if(smelldisp>=30000||smelldisp<0) smelldisp = 30000;
                            if(SmellDispFlag)
                   {


                                gotoxy(i,j);
                                if((i==food.xxx&&j==food.yyy)||(i==home.xxx&&j==home.yyy))
                                    /* don't over write Food and Home */;
                          else
                       {
                                    if(smelldisp>9) putch('#');
                                    else putch(smelldisp+'0');
                       }
                   }
                            Smell[k][i][j]-= 1+(Smell[k][i][j]*SMELL_GONE_RATE);
                            if(Smell[k][i][j]<0) Smell[k][i][j] = 0;
                            if(SmellDispFlag)
                   {
                                if(Smell[k][i][j]<=2)

                       {
                                    gotoxy(i,j);
                                    putch(SPACE);
                       }
                   }
                  }
                    } /* of one location */
    } /* of time to change the world */
} /* of world change */

void AntMove(void)
{
    int antx,anty;
    int smelltodrop,smellnow;
    
    for(AntNow=0;AntNow<MAX_ANT;AntNow++)
    {
        ant[AntNow].SpeedTimer+=timer10ms;
        if(ant[AntNow].SpeedTimer>=ant[AntNow].speed)
        {
            ant[AntNow].SpeedTimer = 0;
            gotoxy(ant[AntNow].xxx,ant[AntNow].yyy);
            putch(SPACE);
            AntOneStep();
            gotoxy(ant[AntNow].xxx,ant[AntNow].yyy);
            /* ant0 is a sepecail ant, use different color */
            if(AntNow==0) textcolor(0xd);
            if(ant[AntNow].food) putch(ANT_CHAR_FOOD);
            else putch(ANT_CHAR_EMPTY);
            if(AntNow==0) textcolor(0x7);

 
            /* remember trace */
            ant[AntNow].tracex[ant[AntNow].TracePtr] = ant[AntNow].xxx;
            ant[AntNow].tracey[ant[AntNow].TracePtr] = ant[AntNow].yyy;
            if(++(ant[AntNow].TracePtr)>=TRACE_REMEMBER) ant[AntNow].TracePtr = 0;
         
            /* drop smell */
            antx = ant[AntNow].xxx;
            anty = ant[AntNow].yyy;
         
            if(ant[AntNow].food)
            /* have food, looking for home */
         {
                if(ant[AntNow].SmellAmount[SMELL_TYPE_FOOD])
             {
                    smellnow = Smell[SMELL_TYPE_FOOD][antx][anty];
                    smelltodrop = ant[AntNow].SmellAmount[SMELL_TYPE_FOOD]*SMELL_DROP_RATE;
                    if(smelltodrop>smellnow) Smell[SMELL_TYPE_FOOD][antx][anty] = smelltodrop;
                    /* else Smell[...] = smellnow */
                    ant[AntNow].SmellAmount[SMELL_TYPE_FOOD]-= smelltodrop;
                    if(ant[AntNow].SmellAmount[SMELL_TYPE_FOOD]<0) ant[AntNow].SmellAmount[SMELL_TYPE_FOOD] = 0;
                } /* of have smell to drop */

            } /* of have food */
            else
            /* no food, looking for food */
         {
                if(ant[AntNow].SmellAmount[SMELL_TYPE_HOME])
             {
                    smellnow = Smell[SMELL_TYPE_HOME][antx][anty];
                    smelltodrop = ant[AntNow].SmellAmount[SMELL_TYPE_HOME]*SMELL_DROP_RATE;
                    if(smelltodrop>smellnow) Smell[SMELL_TYPE_HOME][antx][anty] = smelltodrop;
                    /* else Smell[...] = smellnow */
                    ant[AntNow].SmellAmount[SMELL_TYPE_HOME]-= smelltodrop;
                    if(ant[AntNow].SmellAmount[SMELL_TYPE_HOME]<0) ant[AntNow].SmellAmount[SMELL_TYPE_HOME] = 0;
                } /* of have smell to drop */
         }
        } /* of time to go */
        /* else not go */
    } /* of for AntNow */
    
    textcolor(FOOD_HOME_COLOR);
    gotoxy(home.xxx,home.yyy); putch(HOME_CHAR);
    gotoxy(food.xxx,food.yyy);
    if(food.amount>0) putch(FOOD_CHAR);
    else putch(FOOD_CHAR2);
    textcolor(7);

    gotoxy(1,MAXY+1);
    printf("Food %d, Home %d   ",food.amount,home.amount);
}

void AntOneStep(void)
{
    int ddir,tttx,ttty;
    int i;
    
    ddir = ant[AntNow].dir;
    tttx = ant[AntNow].xxx;


 ttty = ant[AntNow].yyy;
    
    ddir = AntNextDir(tttx,ttty,ddir);
    
    switch(ddir)
    {
        case UP:    ttty--;
                    break; 
        case DOWN:  ttty++;
                    break; 
        case LEFT:  tttx--;
                    break; 
        case RIGHT: tttx++;
                    break; 
        default:    break;
    } /* of switch dir */
    
    ant[AntNow].dir = ddir;
    ant[AntNow].xxx = tttx;
    ant[AntNow].yyy = ttty;
    
    if(ant[AntNow].food)
    /* this ant carry with food, search for home */
    {
        if(tttx==home.xxx&&ttty==home.yyy)
        {
            home.amount++;
            AntInitial();
        }
        if(tttx==food.xxx&&ttty==food.yyy)
            ant[AntNow].SmellAmount[SMELL_TYPE_FOOD] = MAX_SMELL;
    } /* of search for home */
    else
    /* this ant is empty, search for food */
    {
        if(tttx==food.xxx&&ttty==food.yyy)
        {
            if(food.amount>0)
         {
                ant[AntNow].food = 1;
                food.amount--;
                ant[AntNow].SmellAmount[SMELL_TYPE_FOOD] = MAX_SMELL;
                ant[AntNow].SmellAmount[SMELL_TYPE_HOME] = 0;
                ant[AntNow].dir = TurnBack(ant[AntNow].dir);
                for(i=0;i<TRACE_REMEMBER;i++)
             {
                    ant[AntNow].tracex[i] = 0;
                    ant[AntNow].tracey[i] = 0;
             }
                ant[AntNow].TracePtr = 0;
                CanFindFood = 1;
            } /* of still have food */
        }
        if(tttx==home.xxx&&ttty==home.yyy)
            ant[AntNow].SmellAmount[SMELL_TYPE_HOME] = MAX_SMELL;
    }  /* of search for food */
}

void DealKey(char key)
{
    int i;
    switch(key)
    {
        case 'p':   gettime(&endtime);
                    DispPlayTime();
                    getch();
                    gotoxy(1,MAXY+1);
                    for(i=1;i<=MAXX-1;i++) putch(SPACE);
                    break;
        case 't':   if(SmellDispFlag)


              {
                        SmellDispFlag=0;
                        ClearSmellDisp();
              }
                    else SmellDispFlag = 1;
                    break;
        case '1':   DispSmell(SMELL_TYPE_FOOD);
                    getch();
                    ClearSmellDisp();
                    break;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩电影一区二区三区四区| 国产精品不卡在线| 久色婷婷小香蕉久久| 日韩一区二区免费电影| 天堂久久久久va久久久久| 777a∨成人精品桃花网| 久久99精品久久久久久国产越南 | 国产精品白丝av| 国产日韩精品一区二区三区| 成人av免费在线| 亚洲超碰97人人做人人爱| 日韩欧美中文字幕精品| 国产一本一道久久香蕉| 亚洲婷婷综合久久一本伊一区| 色婷婷综合久色| 日韩福利视频导航| 国产精品久久久久久久久图文区| 在线观看一区日韩| 理论电影国产精品| 亚洲伦理在线精品| 日韩欧美国产电影| 色哟哟精品一区| 老司机精品视频导航| 中文字幕第一区第二区| 欧美日韩专区在线| 国产成人综合在线播放| 亚洲电影一级黄| 欧美国产一区二区在线观看| 欧美羞羞免费网站| 国产酒店精品激情| 天堂在线亚洲视频| 中文字幕亚洲成人| 久久综合成人精品亚洲另类欧美 | 卡一卡二国产精品| 亚洲人吸女人奶水| 亚洲精品一区二区三区四区高清| 91丨九色丨尤物| 国产一区在线观看视频| 亚洲一区二区视频在线| 国产欧美精品一区二区色综合| 欧美色精品在线视频| 成人视屏免费看| 九色porny丨国产精品| 亚洲黄色小视频| 国产日产欧美一区二区三区| 欧美日韩国产片| 日本韩国欧美国产| 国产精品性做久久久久久| 日韩在线播放一区二区| 一区二区三区在线视频观看| 国产欧美一区二区三区网站| 欧美大胆人体bbbb| 欧美日韩免费电影| 97se亚洲国产综合自在线观| 国产一区亚洲一区| 韩国成人精品a∨在线观看| 日韩不卡一区二区| 亚洲大片精品永久免费| 亚洲精品国产无套在线观 | 中日韩av电影| 欧美tickling挠脚心丨vk| 欧美亚洲国产bt| 91久久精品日日躁夜夜躁欧美| 国产精品中文有码| 国产呦萝稀缺另类资源| 国内精品国产成人国产三级粉色 | 亚洲一区二区在线观看视频| 国产精品电影一区二区三区| 国产精品蜜臀av| 欧美高清在线一区| 国产精品乱人伦一区二区| 国产三级一区二区| 国产亚洲1区2区3区| 国产日韩欧美亚洲| 国产精品国产自产拍高清av| 欧美极品少妇xxxxⅹ高跟鞋| 精品国产成人系列| 久久尤物电影视频在线观看| 精品va天堂亚洲国产| 欧美tickle裸体挠脚心vk| 久久综合狠狠综合久久综合88| 欧美videos中文字幕| 久久久五月婷婷| 国产免费观看久久| 日韩理论片中文av| 亚洲高清免费观看| 麻豆一区二区在线| 国产精品77777| 99国产精品久| 欧洲国内综合视频| 欧美一区二区三区在线电影| 欧美电影免费观看高清完整版在线观看| 日韩免费一区二区三区在线播放| 日韩午夜激情av| 国产亚洲成av人在线观看导航| 国产精品久久毛片a| 亚洲一区二区三区四区五区中文| 视频一区在线播放| 国产a精品视频| 91电影在线观看| 欧美成人一区二区三区片免费 | 一本色道久久综合亚洲精品按摩| 色国产精品一区在线观看| 欧美丰满少妇xxxxx高潮对白| 日韩视频免费观看高清完整版在线观看| 91精品国产综合久久精品图片 | 久久伊99综合婷婷久久伊| 中文乱码免费一区二区| 亚洲成av人片一区二区| 国内外精品视频| 在线精品视频一区二区三四 | 欧美精品成人一区二区三区四区| 欧美一区二区女人| 国产精品久久久爽爽爽麻豆色哟哟 | 中文字幕日韩精品一区 | 精品乱人伦小说| 综合久久久久久| 日本不卡视频一二三区| 成人视屏免费看| 日韩网站在线看片你懂的| 日韩美女视频一区| 国产九九视频一区二区三区| 91成人在线精品| 欧美国产一区二区| 日本欧美在线看| 色婷婷av一区二区三区软件| 久久综合久久综合久久综合| 亚洲欧美精品午睡沙发| 久久99国产精品麻豆| 一本久久a久久免费精品不卡| xfplay精品久久| 午夜av电影一区| 一本在线高清不卡dvd| 欧美va在线播放| 天堂va蜜桃一区二区三区| 99在线精品视频| 国产色产综合产在线视频| 免费在线成人网| 欧美蜜桃一区二区三区| 亚洲摸摸操操av| 成人午夜激情片| 久久久精品国产免费观看同学| 日韩中文字幕不卡| 欧美日韩一区在线观看| 国产精品久久久久久久久免费相片| 蜜臀av性久久久久蜜臀aⅴ四虎| 91视视频在线观看入口直接观看www | 日韩高清不卡一区| 欧美性受极品xxxx喷水| 亚洲欧洲日韩综合一区二区| 韩国成人福利片在线播放| 欧美精品色一区二区三区| 亚洲免费资源在线播放| 99久久精品免费看| 国产精品美女久久福利网站| 狠狠色丁香久久婷婷综合丁香| 91精品免费观看| 偷拍自拍另类欧美| 91精品国产91久久久久久最新毛片 | 国产精品全国免费观看高清| 国产一区二区三区日韩| 欧美成va人片在线观看| 久久99蜜桃精品| 久久久久久久久久久久久久久99| 美女在线一区二区| 精品久久人人做人人爱| 久久精品av麻豆的观看方式| 欧美本精品男人aⅴ天堂| 精品亚洲成a人在线观看| 日韩欧美在线网站| 国产一区二区三区不卡在线观看| 久久久综合九色合综国产精品| 国产一区二区三区美女| 中文字幕欧美区| 91蝌蚪porny成人天涯| 亚洲一区国产视频| 制服.丝袜.亚洲.中文.综合| 天天影视涩香欲综合网| 日韩亚洲欧美高清| 国产一区视频在线看| 国产精品精品国产色婷婷| 91国产成人在线| 男人的天堂久久精品| 精品日本一线二线三线不卡| 国产一区美女在线| 亚洲三级免费电影| 51精品秘密在线观看| 国产一区二区三区最好精华液| 国产精品无人区| 欧美日韩在线播放| 精品一区二区三区日韩| 国产精品国产精品国产专区不蜜| 日本韩国欧美国产| 另类小说图片综合网| 中文字幕av免费专区久久| 欧美天堂亚洲电影院在线播放| 久久精品国产亚洲a| 最新国产の精品合集bt伙计| 欧美三级电影一区| 国产精华液一区二区三区|