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

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

?? ship.txt

?? 潛艇大戰大戰 帶源程序
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
  for (y=0;y<32;y++)
      for (x=0;x<32;x++)
          if (BOMB[y][x]) Pset(x+xx,y+yy,BOMB[y][x]);
}
void boat(int xx,int yy,int num)
{
  int y,x;
  for (y=0;y<32;y++)
      for (x=0;x<64;x++)
	  if (SHIP[num][y][x]) Pset(x+xx,y+yy,SHIP[num][y][x]);
}
void torp(int xx,int yy)
{
  int y,x;
  for (y=0;y<16;y++)
      for (x=0;x<16;x++)
          if (TORP[y][x]) Pset(x+xx,y+yy,TORP[y][x]);
}
void ship(int xx,int yy,BYTE Type,BYTE Dir)
{
  int x,y;

  bPaint=TRUE;
  PIC_SHIP=Back2;
  PIC_SHIP+=(long)(Type*2+Dir)*63l;
  for (y=0;y<20;y++)
  {
      for (x=0;x<63;x++)
	  if (*PIC_SHIP++) Pset(x+xx,19-y+yy,*(PIC_SHIP-1));
      PIC_SHIP+=441l;
  }
}

/* 物體系統,創建各個物體,刪除各個物體,畫出各個物體 */
int CreateTorp(int x,int y)
{
  int i=0;

  if (TorpUsed==MAXTORP) return NULL;

  while (tpTorp[++i].Used);

  tpTorp[i].x=x;
  tpTorp[i].y=y;
  tpTorp[i].Used=TRUE;
  TorpUsed++;
  return i;
}
void KillTorp(int *TorpID)
{
  if (tpTorp[*TorpID].Used)
  {
     TorpUsed--;
     tpTorp[*TorpID].Used=FALSE;
  }
  *TorpID=NULL;
}
void DrawTorp()
{
  int i=0;
  int ID;

  while (!tpTorp[++i].Used);

  if (i==MAXTORP+1) return;
  bPaint=TRUE;
  if (!CLS)
  {
     ClearScreen(2);
     CLS=TRUE;
  }
  for (i=1;i<=MAXTORP;i++)
  {
      if (tpTorp[i].Used)
      {
	 if (tpTorp[i].y<34)
	 {
	    KillTorp(&ID_Torp[i]);
	    /* 我方船只被炸 */
            if (tpTorp[i].x-MyX>10&&tpTorp[i].x-MyX<50)
	    {
	       ID=CreateExpl(tpTorp[i].x-23,tpTorp[i].y-26);
	       if (ID) ID_Expl[ID]=ID;
	       KillSelf();
	    }
	 }
	 torp(tpTorp[i].x,tpTorp[i].y);
	 tpTorp[i].y--;
      }
  }

}

int CreateShip(int y,BYTE Type)
{
  int i=0;

  if (ShipUsed==MAXSHIP) return NULL;

  while (spShip[++i].Used);

  spShip[i].y=y;
  spShip[i].Used=TRUE;
  spShip[i].Dir=random(2);
  spShip[i].Type=Type;
  spShip[i].x=-64;
  if (!spShip[i].Dir) spShip[i].x=320;
  ShipUsed++;
  return i;
}
void KillShip(int *ShipID)
{
  if (spShip[*ShipID].Used)
  {
     ShipUsed--;
     spShip[*ShipID].Used=FALSE;
  }
  *ShipID=NULL;
}
void DrawShip()
{
  int i=0;
  int ID;

  while (!spShip[++i].Used);

  if (i==MAXSHIP+1) return;
  bPaint=TRUE;
  if (!CLS)
  {
     ClearScreen(2);
     CLS=TRUE;
  }
  for (i=1;i<=MAXSHIP;i++)
  {
      if (spShip[i].Used)
      {
	 if (random(10)==3)
	 {
	    ID=CreateTorp(spShip[i].x+32,spShip[i].y);
	    if (ID) ID_Torp[ID]=ID;
	 }
         ship(spShip[i].x,spShip[i].y,spShip[i].Type,spShip[i].Dir);
	 if (spShip[i].Dir)
         {
            spShip[i].x+=2;
            if (spShip[i].x>320) KillShip(&ID_Ship[i]);
         }
         else
         {
            spShip[i].x-=2;
            if (spShip[i].x<-64) KillShip(&ID_Ship[i]);
         }
      }
  }

}

int CreateExpl(int x,int y)
{
  int i=0;

  if (ExplUsed==MAXEXPL) return NULL;

  while (elExpl[++i].Used);

  elExpl[i].x=x;
  elExpl[i].y=y;
  elExpl[i].Used=TRUE;
  elExpl[i].Num=0;
  ExplUsed++;
  return i;
}
void KillExpl(int *ExplID)
{
  if (elExpl[*ExplID].Used)
  {
     ExplUsed--;
     elExpl[*ExplID].Used=FALSE;
     elExpl[*ExplID].Num=0;
  }
  *ExplID=NULL;
}

void DrawExpl()
{
  int  x,y,i=0;

  while (!elExpl[++i].Used);

  if (i==MAXEXPL+1) return;
  bPaint=TRUE;
  if (!CLS)
  {
     ClearScreen(2);
     CLS=TRUE;
  }
  for (i=1;i<=MAXEXPL;i++)
  {
      if (elExpl[i].Num==15) KillExpl(&ID_Expl[i]);
      if (elExpl[i].Used)
      {
         bPaint=TRUE;
         PIC_EXPL=Back1;
         PIC_EXPL+=(long)elExpl[i].Num*62l;
         elExpl[i].Num++;
         for (y=0;y<64;y++)
         {
	     if (SOUND) sound(random(2000)+500);
	     for (x=0;x<62;x++)
		 if (*PIC_EXPL++) Pset(x+elExpl[i].x,(63-y)+elExpl[i].y,*(PIC_EXPL-1));
	     PIC_EXPL+=870l;
	 }
	 nosound();
      }
  }
}


int CreateBomb(int x,int y)
{
  int i=0;

  if (BombUsed==MAXBOMB) return NULL;

  while (bbBomb[++i].Used);

  bbBomb[i].x=x;
  bbBomb[i].y=y;
  bbBomb[i].Used=TRUE;
  BombUsed++;
  return i;
}
void KillBomb(int *BombID)
{
  if (bbBomb[*BombID].Used)
  {
     BombUsed--;
     bbBomb[*BombID].Used=FALSE;
  }
  *BombID=NULL;
}
void DrawBomb()
{
  int i=0,j;
  int ID;

  while (!bbBomb[++i].Used);

  if (i==MAXBOMB+1) return;
  bPaint=TRUE;
  if (!CLS)
  {
     ClearScreen(2);
     CLS=TRUE;
  }
  for (i=1;i<=MAXBOMB;i++)
  {
      if (bbBomb[i].Used)
      {
         for (j=1;j<=MAXSHIP;j++)
         {
     	     /* 敵方潛艇被炸 */
	     if (spShip[j].Used&&abs(spShip[j].y-bbBomb[i].y)<16&&abs(spShip[j].x-bbBomb[i].x+16)<32)
             {
		switch (spShip[j].Type)
                {
                  case 0:
                       Score+=10;
                       LevelScore+=10;
                       break;
                  case 1:
                       Score+=20;
                       LevelScore+=20;
                       break;
                  case 2:
                       Score+=40;
                       LevelScore+=40;
                       break;
                  case 3:
                       Life++;
                       break;
                }
		KillShip(&ID_Ship[j]);
		KillBomb(&ID_Bomb[i]);
		ID=CreateExpl(bbBomb[i].x-20,bbBomb[i].y);
		if (ID) ID_Expl[ID]=ID;
	     }
         }
         bomb(bbBomb[i].x,bbBomb[i].y);
	 bbBomb[i].y+=2;
	 if (bbBomb[i].y>170) KillBomb(&ID_Bomb[i]);
      }
  }
}

/* 畫出各個物體 */
void DrawObject()
{
  CLS=FALSE;
  DrawBomb();
  DrawShip();
  DrawTorp();
  if (!bPaint) return;
  if (!CLS) ClearScreen(2);
  boat(MyX,2,Flash);
  DrawExpl();
  if (DISP)
  {
     OutString(0,0,"LIFE:",96);
     itoa(Life+1,STR,10);
     OutString(5,0,STR,96);
     if (SOUND) OutString(7,0,"Sound",2);
     itoa(MAXBOMB-BombUsed,STR,10);
     OutString(13,0,"BOMB:",89);
     OutString(18,0,STR,89);
     itoa(Level+1,STR,10);
     OutString(21,0,"LEVEL:",13);
     OutString(27,0,STR,13);
     OutString(30,0,"SCORE:",52);
     itoa(Score,STR,10);
     OutString(36,0,STR,52);
  }
  ReFresh();
}

/* 初始化游戲數據 */
void InitGame()
{
  int i;

  BombUsed=0;
  ShipUsed=0;
  TorpUsed=0;
  ExplUsed=0;

  for (i=1;i<=MAXSHIP;i++) KillShip(&ID_Ship[i]);
  for (i=1;i<=MAXBOMB;i++) KillBomb(&ID_Bomb[i]);
  for (i=1;i<=MAXTORP;i++) KillTorp(&ID_Torp[i]);
  for (i=1;i<=MAXEXPL;i++) KillExpl(&ID_Expl[i]);

  Flash=FALSE;
  ALIVE=TRUE;
  DONE=FALSE;
  MyX=0;
  MyY=0;
  Life=3;
  Score=25;
  LevelScore=25;
  Level=0;
}

/* 游戲主過程 */
void GameMain()
{
  BYTE   bKey;
  int    ShipType;
  int    i,ID;

  bKey=ScanKey();
  /* 鍵盤循環 */
  while (bKey!=1&&ALIVE)
  {
    /* 時鐘時間處理 */
    TimerEvent();
    if (Life==0)
       Flash=!Flash;
    else
       Flash=FALSE;
    /* 創建敵方艦艇 */
    if (random(10)==4)
    {
       i=random(100);
       if (i<50)
          ShipType=0;
       else if (i>=50&&i<75)
          ShipType=1;
       else if (i>=75&&i<95)
          ShipType=2;
       else if (i>95)
          ShipType=3;
       ID=CreateShip(random(6)*20+70,ShipType);
       if (ID) ID_Ship[ID]=ID;
    }
    switch (bKey)
    {
      case 115:
      case 75:
	   bPaint=TRUE;
           MyX-=4;
           if (MyX<0) MyX=0;
	   break;
      case 2:
	   Life++;
	   break;
      case 3:
	    MAXBOMB++;
	    if (MAXBOMB>20) MAXBOMB=20;
      case 77:
      case 116:
	   bPaint=TRUE;
           MyX+=4;
	   if (MyX>256) MyX=256;
           break;
      case 31:
	   SOUND=!SOUND;
	   break;
      case 32:
	   DISP=!DISP;
	   break;
      case 57:
	   if (LevelScore==0) break;
	   /* 發出炮彈 */
           ID=CreateBomb(MyX+20,32);
	   if (ID)
	   {
	      Score-=5;
	      LevelScore-=5;
	      ID_Bomb[ID]=ID;
	   }
    }
    bKey=ScanKey();
    if (LevelScore>=500)
    {
       Level++;
       LevelScore=0;
       if (Level<15)
	  OutString(15,10,"Next Level!",13);
       else
       {
	  OutString(14,10,"Very Good!!",13);
	  DONE=TRUE;
	  bKey=1;
       }
       ReFresh();
       wait();
    }
    MAXSHIP=Level+3;
    MAXTORP=Level+5;
    MAXEXPL=Level+5;
  }

}
void main()
{
  BOOL QUIT=FALSE;
  int  nKey;

  /* 申請內存 */
  Video=farmalloc(64000);
  if (Video==NULL)
  {
     printf("Not enough Memory\n");
     exit(0);
  }

  Back1=farmalloc(59520);
  if (Back1==NULL)
  {
     printf("Not enough Memory\n");
     farfree(Video);
     exit(0);
  }

  Back2=farmalloc(10080);
  if (Back2==NULL)
  {
     printf("Not enough Memory\n");
     farfree(Back2);
     farfree(Video);
     exit(0);
  }

  randomize();
  Logo();
  setmode();
  SetAllPal();
  readboat();
  readship();
  readexpl();
  readbomb();
  readtorp();
  ClearScreen(2);
  boat(0,2,0);
  KillAllTimer();
  CreateTimer(1,DrawObject);
  ReFresh();

  while (!QUIT)
  {
     GameMain();
     bPaint=TRUE;
     if (!ALIVE)
	OutString(15,10,"GAME OVER",96);
     OutString(14,12,"QUIT? (Y/N)",89);
     ReFresh();
     nKey=getch();
     while (!(nKey=='Y'||nKey=='y'||nKey=='N'||nKey=='n'))
     {
	nKey=getch();
     }
     if (nKey=='Y'||nKey=='y') QUIT=TRUE;
     if (!ALIVE||DONE) InitGame();
  }
  closemode();
  KillAllTimer();
  farfree(Video);
  farfree(Back1);
  farfree(Back2);
  printf("***NOBLE STUDIO***Written By FanobleMeng--2001.12");
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日日夜夜免费精品| 国产精品乡下勾搭老头1| 亚洲品质自拍视频网站| 亚洲动漫第一页| 国产一区亚洲一区| 精品午夜久久福利影院| 91热门视频在线观看| 欧美一区二区三区免费在线看| 国产午夜亚洲精品午夜鲁丝片 | 中文字幕精品一区二区三区精品| 国产精品拍天天在线| 亚洲高清免费在线| 国产成人精品www牛牛影视| 欧美综合在线视频| 国产精品网站在线播放| 亚洲第一在线综合网站| 丁香六月综合激情| 91精品国产品国语在线不卡| 国产精品素人一区二区| 天天操天天干天天综合网| 国产成人精品一区二区三区四区| 在线观看中文字幕不卡| 久久久噜噜噜久久中文字幕色伊伊| 国产精品久久久久久久久图文区| 日本欧美大码aⅴ在线播放| 不卡av免费在线观看| 精品久久久久久综合日本欧美| 亚洲免费伊人电影| 国产99久久久精品| 精品国产乱码久久久久久免费| 亚洲人成精品久久久久| 高清不卡在线观看av| 欧美白人最猛性xxxxx69交| 日本一区二区三区高清不卡| 另类小说欧美激情| 7777精品伊人久久久大香线蕉| 亚洲视频一区二区在线观看| 国产精品一线二线三线精华| 日韩欧美一区二区免费| 日韩一区欧美二区| 欧美日韩高清一区二区三区| 自拍偷拍亚洲欧美日韩| 成人黄色免费短视频| 国产午夜三级一区二区三| 精品亚洲国内自在自线福利| 欧美群妇大交群的观看方式| 亚洲男人的天堂av| 欧美在线看片a免费观看| 国产精品毛片久久久久久 | 欧美午夜精品一区二区三区| 中文字幕免费不卡| 成人免费高清在线| 欧美国产一区二区| 麻豆国产欧美一区二区三区| 欧美在线你懂得| 亚洲女人的天堂| 欧美写真视频网站| 日韩精品亚洲专区| 欧美一卡在线观看| 国产麻豆一精品一av一免费| 久久精品亚洲精品国产欧美| 国产丶欧美丶日本不卡视频| 国产视频911| gogo大胆日本视频一区| 亚洲人成亚洲人成在线观看图片| 91搞黄在线观看| 欧美aⅴ一区二区三区视频| 欧美日韩亚洲另类| 免费视频最近日韩| 久久久不卡网国产精品一区| 成人美女视频在线观看18| 亚洲欧洲无码一区二区三区| 色94色欧美sute亚洲线路一久| 性久久久久久久| 久久五月婷婷丁香社区| 成人性视频免费网站| 国产精品久久久久aaaa| 国产成人亚洲综合a∨婷婷| 国产精品久久久久永久免费观看 | 色综合天天综合| 性做久久久久久久免费看| 欧美一区2区视频在线观看| 国产剧情一区二区| 一区二区三区久久| 久久综合av免费| 在线观看免费成人| 黑人精品欧美一区二区蜜桃| 日韩一区二区三区在线| 成人动漫av在线| 亚洲成人免费电影| 久久精品亚洲一区二区三区浴池| 日本道精品一区二区三区| 秋霞影院一区二区| 亚洲手机成人高清视频| 日韩欧美一级二级三级久久久| 粉嫩aⅴ一区二区三区四区五区| 亚洲电影一区二区| 国产日本一区二区| 91精品婷婷国产综合久久性色| 成人午夜电影网站| 麻豆成人在线观看| 亚洲综合视频网| 国产精品无遮挡| 日韩丝袜美女视频| 欧美性极品少妇| 波多野结衣在线aⅴ中文字幕不卡| 日韩高清不卡在线| 亚洲与欧洲av电影| 亚洲人吸女人奶水| 国产欧美日韩在线视频| 欧美一卡二卡三卡四卡| 在线观看网站黄不卡| 国产精品99久久久久久宅男| 日韩电影在线观看电影| 亚洲免费看黄网站| 国产日韩欧美a| 3d成人动漫网站| 欧美色倩网站大全免费| 高清免费成人av| 国产成人aaa| 麻豆精品新av中文字幕| 亚洲成a人在线观看| 国产精品嫩草99a| 亚洲国产精品激情在线观看| 精品人在线二区三区| 欧美精品乱码久久久久久按摩 | 午夜精品久久久久久久久| 国产精品成人在线观看| 久久综合色天天久久综合图片| 在线国产电影不卡| 91福利在线观看| 欧美影视一区二区三区| 色婷婷久久一区二区三区麻豆| 99精品偷自拍| 91高清视频在线| 精品视频在线免费观看| 91福利区一区二区三区| 国产成人在线视频网站| 丁香婷婷综合网| aaa亚洲精品| 色呦呦日韩精品| 欧美性受极品xxxx喷水| 欧美综合亚洲图片综合区| 在线观看欧美黄色| 51精品久久久久久久蜜臀| 久久中文字幕电影| 亚洲一区在线看| 国产麻豆精品在线| 91黄色小视频| 久久人人97超碰com| 亚洲女人的天堂| 国产麻豆午夜三级精品| 一本大道av伊人久久综合| 日韩一级片在线播放| 国产精品久线在线观看| 日韩精品免费专区| 成人综合婷婷国产精品久久免费| 欧美性色黄大片| 中文一区一区三区高中清不卡| 亚洲午夜免费福利视频| 久久99精品久久久| 欧洲亚洲国产日韩| 欧美国产精品劲爆| 久久99日本精品| 欧美色图在线观看| 亚洲欧美怡红院| 国内精品久久久久影院色| 色噜噜狠狠色综合中国| www国产精品av| 视频一区二区三区中文字幕| av福利精品导航| 国产欧美日韩另类一区| 日本中文字幕不卡| 欧美在线你懂得| 亚洲美女少妇撒尿| 国产99久久久久久免费看农村| 日韩欧美一二区| 欧美96一区二区免费视频| 在线观看视频91| 伊人一区二区三区| jlzzjlzz亚洲女人18| 国产网站一区二区三区| 精品一区二区三区蜜桃| 欧美吻胸吃奶大尺度电影| 国产精品美女久久久久久久| 久久99国产精品麻豆| 欧美一区二区三区在线| 亚洲线精品一区二区三区八戒| 91天堂素人约啪| 一区在线中文字幕| 99久久久久久| 中文字幕中文字幕中文字幕亚洲无线| 精彩视频一区二区三区| 欧美一区午夜视频在线观看| 亚洲 欧美综合在线网络| 日本福利一区二区| 亚洲国产中文字幕在线视频综合| 日本二三区不卡| 亚洲成人一区在线| 精品视频1区2区|