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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? digger.c

?? 經典的老游戲digger的源代碼.提起digger相信很多人會回憶起曾經為了它挑燈夜戰的時光
?? C
?? 第 1 頁 / 共 2 頁
字號:
    digdat[n].mdir=DIR_NONE;
  diggerox=digdat[n].x;
  diggeroy=digdat[n].y;
  if (digdat[n].mdir!=DIR_NONE)
    eatfield(diggerox,diggeroy,digdat[n].mdir);
  switch (digdat[n].mdir) {
    case DIR_RIGHT:
      drawrightblob(digdat[n].x,digdat[n].y);
      digdat[n].x+=4;
      break;
    case DIR_UP:
      drawtopblob(digdat[n].x,digdat[n].y);
      digdat[n].y-=3;
      break;
    case DIR_LEFT:
      drawleftblob(digdat[n].x,digdat[n].y);
      digdat[n].x-=4;
      break;
    case DIR_DOWN:
      drawbottomblob(digdat[n].x,digdat[n].y);
      digdat[n].y+=3;
      break;
  }
  if (hitemerald((digdat[n].x-12)/20,(digdat[n].y-18)/18,
                 (digdat[n].x-12)%20,(digdat[n].y-18)%18,
                 digdat[n].mdir)) {
    if (digdat[n].emocttime==0)
      digdat[n].emn=0;
    scoreemerald(n);
    soundem();
    soundemerald(digdat[n].emn);

    digdat[n].emn++;
    if (digdat[n].emn==8) {
      digdat[n].emn=0;
      scoreoctave(n);
    }
    digdat[n].emocttime=9;
  }
  drawdig(n,digdat[n].dir,digdat[n].x,digdat[n].y,
          digdat[n].notfiring && digdat[n].rechargetime==0);
  for (i=0;i<TYPES;i++)
    clfirst[i]=first[i];
  for (i=0;i<SPRITES;i++)
    clcoll[i]=coll[i];
  incpenalty();

  i=clfirst[1];
  bagf=FALSE;
  while (i!=-1) {
    if (bagexist(i-FIRSTBAG)) {
      bagf=TRUE;
      break;
    }
    i=clcoll[i];
  }

  if (bagf) {
    if (digdat[n].mdir==DIR_RIGHT || digdat[n].mdir==DIR_LEFT) {
      push=pushbags(digdat[n].mdir,clfirst,clcoll);
      digdat[n].bagtime++;
    }
    else
      if (!pushudbags(clfirst,clcoll))
        push=FALSE;
    if (!push) { /* Strange, push not completely defined */
      digdat[n].x=diggerox;
      digdat[n].y=diggeroy;
      drawdig(n,digdat[n].mdir,digdat[n].x,digdat[n].y,
              digdat[n].notfiring && digdat[n].rechargetime==0);
      incpenalty();
      digdat[n].dir=reversedir(digdat[n].mdir);
    }
  }
  if (clfirst[2]!=-1 && bonusmode && digdat[n].alive)
    for (nmon=killmonsters(clfirst,clcoll);nmon!=0;nmon--) {
      soundeatm();
      sceatm(n);
    }
  if (clfirst[0]!=-1) {
    scorebonus(n);
    initbonusmode();
  }
  digdat[n].h=(digdat[n].x-12)/20;
  digdat[n].rx=(digdat[n].x-12)%20;
  digdat[n].v=(digdat[n].y-18)/18;
  digdat[n].ry=(digdat[n].y-18)%18;
}

void sceatm(int n)
{
  scoreeatm(n,digdat[n].msc);
  digdat[n].msc<<=1;
}

Sint4 deatharc[7]={3,5,6,6,5,3,0};

void diggerdie(int n)
{
  int clfirst[TYPES],clcoll[SPRITES],i;
  bool alldead;
  switch (digdat[n].deathstage) {
    case 1:
      if (bagy(digdat[n].deathbag)+6>digdat[n].y)
        digdat[n].y=bagy(digdat[n].deathbag)+6;
      drawdigger(n-curplayer,15,digdat[n].x,digdat[n].y,FALSE);
      incpenalty();
      if (getbagdir(digdat[n].deathbag)+1==0) {
        soundddie();
        digdat[n].deathtime=5;
        digdat[n].deathstage=2;
        digdat[n].deathani=0;
        digdat[n].y-=6;
      }
      break;
    case 2:
      if (digdat[n].deathtime!=0) {
        digdat[n].deathtime--;
        break;
      }
      if (digdat[n].deathani==0)
        music(2);
      drawdigger(n-curplayer,14-digdat[n].deathani,digdat[n].x,digdat[n].y,
                 FALSE);
      for (i=0;i<TYPES;i++)
        clfirst[i]=first[i];
      for (i=0;i<SPRITES;i++)
        clcoll[i]=coll[i];
      incpenalty();
      if (digdat[n].deathani==0 && clfirst[2]!=-1)
        killmonsters(clfirst,clcoll);
      if (digdat[n].deathani<4) {
        digdat[n].deathani++;
        digdat[n].deathtime=2;
      }
      else {
        digdat[n].deathstage=4;
        if (musicflag || diggers>1)
          digdat[n].deathtime=100;   //Tim was 60
        else
          digdat[n].deathtime=10;
      }
      break;
    case 3:
      digdat[n].deathstage=5;
      digdat[n].deathani=0;
      digdat[n].deathtime=0;
      break;
    case 5:
      if (digdat[n].deathani>=0 && digdat[n].deathani<=6) {
        drawdigger(n-curplayer,15,digdat[n].x,
                   digdat[n].y-deatharc[digdat[n].deathani],FALSE);
        if (digdat[n].deathani==6 && !isalive())
          musicoff();
        incpenalty();
        digdat[n].deathani++;
        if (digdat[n].deathani==1)
          soundddie();
        if (digdat[n].deathani==7) {
          digdat[n].deathtime=5;
          digdat[n].deathani=0;
          digdat[n].deathstage=2;
        }
      }
      break;
    case 4:
      if (digdat[n].deathtime!=0)
        digdat[n].deathtime--;
      else {
        digdat[n].dead=TRUE;
        alldead=TRUE;
        for (i=0;i<diggers;i++)
          if (!digdat[i].dead) {
            alldead=FALSE;
            break;
          }
        if (alldead)
          setdead(TRUE);
        else
          if (isalive() && digdat[n].lives>0) {
            if (!gauntlet)
              digdat[n].lives--;
            drawlives();
            if (digdat[n].lives>0) {
              digdat[n].v=9;
              digdat[n].mdir=4;
              digdat[n].h=(diggers==1) ? 7 : (8-n*2);
              digdat[n].x=digdat[n].h*20+12;
              digdat[n].dir=(n==0) ? DIR_RIGHT : DIR_LEFT;
              digdat[n].rx=0;
              digdat[n].ry=0;
              digdat[n].bagtime=0;
              digdat[n].alive=TRUE;
              digdat[n].dead=FALSE;
              digdat[n].invin=TRUE;
              digdat[n].ivt=50;
              digdat[n].deathstage=1;
              digdat[n].y=digdat[n].v*18+18;
              erasespr(n+FIRSTDIGGER-curplayer);
              movedrawspr(n+FIRSTDIGGER-curplayer,digdat[n].x,digdat[n].y);
              digdat[n].notfiring=TRUE;
              digdat[n].emocttime=0;
              digdat[n].firepressed=FALSE;
              digdat[n].expsn=0;
              digdat[n].rechargetime=0;
              digdat[n].emn=0;
              digdat[n].msc=1;
            }
            clearfire(n);
            if (bonusmode)
              music(0);
            else
              music(1);
          }
      }
  }
}

void createbonus(void)
{
  bonusvisible=TRUE;
  drawbonus(292,18);
}

void initbonusmode(void)
{
  int i;
  bonusmode=TRUE;
  erasebonus();
  ginten(1);
  bonustimeleft=250-levof10()*20;
  startbonustimeleft=20;
  for (i=0;i<diggers;i++)
    digdat[i].msc=1;
}

void endbonusmode(void)
{
  bonusmode=FALSE;
  ginten(0);
}

void erasebonus(void)
{
  if (bonusvisible) {
    bonusvisible=FALSE;
    erasespr(FIRSTBONUS);
  }
  ginten(0);
}

Sint4 reversedir(Sint4 dir)
{
  switch (dir) {
    case DIR_RIGHT: return DIR_LEFT;
    case DIR_LEFT: return DIR_RIGHT;
    case DIR_UP: return DIR_DOWN;
    case DIR_DOWN: return DIR_UP;
  }
  return dir;
}

bool checkdiggerunderbag(Sint4 h,Sint4 v)
{
  int n;
  for (n=curplayer;n<diggers+curplayer;n++)
    if (digdat[n].alive)
      if (digdat[n].mdir==DIR_UP || digdat[n].mdir==DIR_DOWN)
        if ((digdat[n].x-12)/20==h)
          if ((digdat[n].y-18)/18==v || (digdat[n].y-18)/18+1==v)
            return TRUE;
  return FALSE;
}

void killdigger(int n,Sint4 stage,Sint4 bag)
{
  if (digdat[n].invin)
    return;
  if (digdat[n].deathstage<2 || digdat[n].deathstage>4) {
    digdat[n].alive=FALSE;
    digdat[n].deathstage=stage;
    digdat[n].deathbag=bag;
  }
}

void makeemfield(void)
{
  Sint4 x,y;
  emmask=1<<curplayer;
  for (x=0;x<MWIDTH;x++)
    for (y=0;y<MHEIGHT;y++)
      if (getlevch(x,y,levplan())=='C')
        emfield[y*MWIDTH+x]|=emmask;
      else
        emfield[y*MWIDTH+x]&=~emmask;
}

void drawemeralds(void)
{
  Sint4 x,y;
  emmask=1<<curplayer;
  for (x=0;x<MWIDTH;x++)
    for (y=0;y<MHEIGHT;y++)
      if (emfield[y*MWIDTH+x]&emmask)
        drawemerald(x*20+12,y*18+21);
}

Sint4 embox[8]={8,12,12,9,16,12,6,9};

bool hitemerald(Sint4 x,Sint4 y,Sint4 rx,Sint4 ry,Sint4 dir)
{
  bool hit=FALSE;
  Sint4 r;
  if (dir!=DIR_RIGHT && dir!=DIR_UP && dir!=DIR_LEFT && dir!=DIR_DOWN)
    return hit;
  if (dir==DIR_RIGHT && rx!=0)
    x++;
  if (dir==DIR_DOWN && ry!=0)
    y++;
  if (dir==DIR_RIGHT || dir==DIR_LEFT)
    r=rx;
  else
    r=ry;
  if (emfield[y*MWIDTH+x]&emmask) {
    if (r==embox[dir]) {
      drawemerald(x*20+12,y*18+21);
      incpenalty();
    }
    if (r==embox[dir+1]) {
      eraseemerald(x*20+12,y*18+21);
      incpenalty();
      hit=TRUE;
      emfield[y*MWIDTH+x]&=~emmask;
    }
  }
  return hit;
}

Sint4 countem(void)
{
  Sint4 x,y,n=0;
  for (x=0;x<MWIDTH;x++)
    for (y=0;y<MHEIGHT;y++)
      if (emfield[y*MWIDTH+x]&emmask)
        n++;
  return n;
}

void killemerald(Sint4 x,Sint4 y)
{
  if (emfield[(y+1)*MWIDTH+x]&emmask) {
    emfield[(y+1)*MWIDTH+x]&=~emmask;
    eraseemerald(x*20+12,(y+1)*18+21);
  }
}

bool getfirepflag(int n)
{
  return n==0 ? firepflag : fire2pflag;
}

int diggerx(int n)
{
  return digdat[n].x;
}

int diggery(int n)
{
  return digdat[n].y;
}

bool digalive(int n)
{
  return digdat[n].alive;
}

void digresettime(int n)
{
  digdat[n].bagtime=0;
}

bool isalive(void)
{
  int i;
  for (i=curplayer;i<diggers+curplayer;i++)
    if (digdat[i].alive)
      return TRUE;
  return FALSE;
}

int getlives(int pl)
{
  return digdat[pl].lives;
}

void addlife(int pl)
{
  digdat[pl].lives++;
  sound1up();
}

void initlives(void)
{
  int i;
  for (i=0;i<diggers+nplayers-1;i++)
    digdat[i].lives=10;
}

void declife(int pl)
{
  if (!gauntlet)
    digdat[pl].lives--;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩国毛片一区二区三区| 日韩一区二区免费电影| 欧美日韩国产免费一区二区| 2023国产精品| 婷婷中文字幕一区三区| 成人免费视频免费观看| 日韩欧美激情四射| 亚洲午夜精品在线| 色婷婷精品久久二区二区蜜臂av | 久久成人羞羞网站| 色999日韩国产欧美一区二区| 精品999久久久| 日本女优在线视频一区二区| 一本色道久久综合亚洲91| 国产欧美1区2区3区| 激情综合五月天| 欧美一区国产二区| 日韩国产精品久久| 欧美日本韩国一区| 亚洲永久精品国产| 在线观看三级视频欧美| 亚洲码国产岛国毛片在线| 懂色av中文字幕一区二区三区| 亚洲精品一区二区三区精华液| 五月天亚洲婷婷| 欧美日本视频在线| 午夜亚洲国产au精品一区二区| 97se亚洲国产综合在线| 亚洲色图在线看| 99久久99久久精品免费看蜜桃| 国产欧美日本一区二区三区| 国产精品18久久久| 亚洲国产成人午夜在线一区| 成人午夜在线视频| 中文字幕在线观看一区二区| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 欧美乱妇23p| 亚洲自拍欧美精品| 欧美精品丝袜中出| 老司机午夜精品99久久| 2021中文字幕一区亚洲| 国产成人综合在线观看| 国产精品精品国产色婷婷| 91偷拍与自偷拍精品| 一区二区三区欧美亚洲| 欧美日韩一区二区欧美激情| 日韩激情中文字幕| 精品国产乱码久久久久久图片| 国产精品羞羞答答xxdd| 中文字幕av一区 二区| 91麻豆国产精品久久| 一区二区三区波多野结衣在线观看| 欧美中文字幕不卡| 蜜桃一区二区三区在线| 久久久激情视频| 91免费看片在线观看| 午夜久久久久久久久久一区二区| 日韩视频一区二区三区在线播放 | av一区二区三区黑人| 亚洲一区二区三区国产| 日韩精品一区二区三区四区| 福利91精品一区二区三区| 亚洲免费观看高清完整版在线观看熊 | 久色婷婷小香蕉久久| 国产精品沙发午睡系列990531| 色婷婷综合久久久久中文一区二区| 五月婷婷另类国产| 国产精品女人毛片| 在线播放/欧美激情| 成人天堂资源www在线| 亚洲图片一区二区| 久久免费偷拍视频| 欧美午夜精品理论片a级按摩| 久久精品国产秦先生| 亚洲欧洲一区二区三区| 日韩精品一区二区三区swag | 欧美激情在线免费观看| 欧美人狂配大交3d怪物一区| 国产91高潮流白浆在线麻豆 | 日韩视频一区二区在线观看| 成人精品一区二区三区中文字幕| 五月天一区二区三区| 欧美极品少妇xxxxⅹ高跟鞋| 69久久夜色精品国产69蝌蚪网| 成人免费视频免费观看| 免费成人在线影院| 一区二区三区成人在线视频| 国产三级精品三级在线专区| 69堂精品视频| 欧美亚洲一区二区在线观看| 成人午夜免费电影| 久草精品在线观看| 五月婷婷色综合| 一区二区三区国产精华| 中文字幕精品在线不卡| 欧美一级二级三级乱码| 在线观看国产一区二区| 成人免费高清在线| 国产福利不卡视频| 久久精品国产**网站演员| 亚洲v精品v日韩v欧美v专区| 亚洲欧美日韩成人高清在线一区| 国产情人综合久久777777| 日韩欧美国产综合| 6080午夜不卡| 欧美精品视频www在线观看| 色av成人天堂桃色av| 99re8在线精品视频免费播放| 成人激情开心网| 国产成人精品一区二| 国产精品一区二区无线| 国产一区二区女| 国产在线精品一区二区夜色| 捆绑调教美女网站视频一区| 奇米精品一区二区三区在线观看| 亚洲va欧美va天堂v国产综合| 亚洲午夜国产一区99re久久| 亚洲第一av色| 日本一不卡视频| 毛片基地黄久久久久久天堂| 久久疯狂做爰流白浆xx| 国产精品一区在线观看乱码| 国产成人精品亚洲777人妖 | 麻豆成人久久精品二区三区小说| 日韩成人午夜电影| 麻豆一区二区99久久久久| 九九九精品视频| 国产伦理精品不卡| 99久久综合精品| 91久久精品一区二区| 欧美日韩国产中文| 欧美成人一区二区三区片免费| 亚洲精品一区二区三区精华液| 国产拍揄自揄精品视频麻豆| 自拍偷自拍亚洲精品播放| 一区二区三区四区精品在线视频 | 国产精品亚洲第一| 99国产精品久久久久久久久久久 | 久久丝袜美腿综合| 国产精品久久久久久久久免费樱桃| 亚洲人妖av一区二区| 又紧又大又爽精品一区二区| 日日夜夜精品视频天天综合网| 免费人成网站在线观看欧美高清| 国产一区二区精品久久99| 成人小视频在线| 欧美绝品在线观看成人午夜影视| 日韩美一区二区三区| 国产精品久久久久影院老司| 性久久久久久久| 国产精品自拍一区| 欧美三级韩国三级日本一级| 久久中文娱乐网| 一区二区在线观看视频| 看片的网站亚洲| 91猫先生在线| 精品国产三级电影在线观看| 亚洲日本中文字幕区| 久久国产麻豆精品| 在线视频欧美精品| 国产视频911| 天天射综合影视| 99久久精品99国产精品| 欧美成人综合网站| 亚洲成人动漫在线观看| 国产91精品在线观看| 91精品国产综合久久久久久久| 中文无字幕一区二区三区| 免费在线看成人av| 欧美三区在线观看| 国产精品麻豆一区二区| 精品一区二区三区欧美| 欧美日韩免费电影| 日韩理论电影院| 国产91在线观看丝袜| 日韩一区二区在线观看| 亚洲午夜在线电影| 99精品视频中文字幕| 国产午夜亚洲精品羞羞网站| 琪琪一区二区三区| 欧美日韩视频第一区| 亚洲欧美日韩电影| 99久久精品费精品国产一区二区| 国产亚洲精久久久久久| 久久成人羞羞网站| 日韩丝袜美女视频| 男人的j进女人的j一区| 在线播放亚洲一区| 亚洲成人一二三| 欧美体内she精高潮| 亚洲综合丝袜美腿| 在线亚洲精品福利网址导航| 最新国产精品久久精品| 97精品超碰一区二区三区| 国产精品热久久久久夜色精品三区 | 久久色中文字幕| 精彩视频一区二区| 欧美va日韩va| 国产一区999| 国产欧美一区二区精品性|