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

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

?? wuziqiyuanchengxu.c

?? 本程序是經過本人和相當多的同事的共同使用和驗證
?? C
字號:
/**********************************************************/
/*      本程序在Turbo C或Borland C下編譯通過              */
/*      源程序在光盤 \source\ 目錄下                      */
/*      文件名: afive.c                                   */
/**********************************************************/

/**********************************************************/
/* 程序中用到的庫函數所在頭文件應用 #include 命令包含進來 */

#include <stdio.h>
#include <bios.h>
#include <ctype.h>
#include <conio.h>
#include <dos.h>

/**********************************************************/
/* 定義符號常量                                           */

/*定義畫棋盤所需的制表符*/
#define CROSSRU     0xbf  /*右上角點*/
#define CROSSLU     0xda  /*左上角點*/
#define CROSSLD     0xc0  /*左下角點*/
#define CROSSRD     0xd9  /*右下角點*/
#define CROSSL      0xc3  /*左邊*/
#define CROSSR      0xb4  /*右邊*/
#define CROSSU      0xc2  /*上邊*/
#define CROSSD      0xc1  /*下邊*/
#define CROSS       0xc5  /*十字交叉點*/

/*定義棋盤左上角點在屏幕上的位置*/
#define MAPXOFT     5
#define MAPYOFT     2

/*定義1號玩家的操作鍵鍵碼*/
#define PLAY1UP     0x1157/*上移--'W'*/
#define PLAY1DOWN   0x1f53/*下移--'S'*/
#define PLAY1LEFT   0x1e41/*左移--'A'*/
#define PLAY1RIGHT  0x2044/*右移--'D'*/
#define PLAY1DO     0x3920/*落子--空格鍵*/

/*定義2號玩家的操作鍵鍵碼*/
#define PLAY2UP     0x4800/*上移--方向鍵up*/
#define PLAY2DOWN   0x5000/*下移--方向鍵down*/
#define PLAY2LEFT   0x4b00/*左移--方向鍵left*/
#define PLAY2RIGHT  0x4d00/*右移--方向鍵right*/
#define PLAY2DO     0x1c0d/*落子--回車鍵Enter*/

/*若想在游戲中途退出, 可按 Esc 鍵*/
#define ESCAPE      0x011b

/*定義棋盤上交叉點的狀態, 即該點有無棋子 */
/*若有棋子, 還應能指出是哪個玩家的棋子   */
#define CHESSNULL   0  //沒有棋子
#define CHESS1      'O'//一號玩家的棋子
#define CHESS2      'X'//二號玩家的棋子

/*定義按鍵類別*/
#define KEYEXIT        0/*退出鍵*/
#define KEYFALLCHESS   1/*落子鍵*/
#define KEYMOVECURSOR  2/*光標移動鍵*/
#define KEYINVALID     3/*無效鍵*/

/*定義符號常量: 真, 假 --- 真為1, 假為0 */
#define TRUE        1
#define FALSE       0

/**********************************************************/
/* 定義數據結構                                           */

/*棋盤交叉點坐標的數據結構*/
struct point
{
   int x,y;
};

/**********************************************************/
/*自定義函數原型說明                                      */
void Init(void);
int  GetKey(void);
int CheckKey(int press);
int  ChangeOrder(void);
int  ChessGo(int Order,struct point Cursor);
void DoError(void);
void DoOK(void);
void DoWin(int Order);
void MoveCursor(int Order,int press);
void DrawCross(int x,int y);
void DrawMap(void);
int  JudgeWin(int Order,struct point Cursor);
int  JudgeWinLine(int Order,struct point Cursor,int direction);
void ShowOrderMsg(int Order);
void EndGame(void);
/**********************************************************/

/**********************************************************/
/* 定義全局變量                                           */
int  gPlayOrder;         /*指示當前行棋方          */
struct point gCursor;    /*光標在棋盤上的位置      */
char gChessBoard[19][19];/*用于記錄棋盤上各點的狀態*/
/**********************************************************/

/**********************************************************/
/*主函數*/
void main()
{
  int press;
  int bOutWhile=FALSE;/*退出循環標志*/

  Init();/*初始化圖象,數據*/

  while(1)
  {
    press=GetKey();/*獲取用戶的按鍵值*/
    switch(CheckKey(press))/*判斷按鍵類別*/
    {
    /*是退出鍵*/
    case KEYEXIT:
      clrscr();/*清屏*/
      bOutWhile = TRUE;
      break;

    /*是落子鍵*/
    case KEYFALLCHESS:
      if(ChessGo(gPlayOrder,gCursor)==FALSE)/*走棋*/
        DoError();/*落子錯誤*/
      else
      {
        DoOK();/*落子正確*/

        /*如果當前行棋方贏棋*/
        if(JudgeWin(gPlayOrder,gCursor)==TRUE)
        { 
          DoWin(gPlayOrder);
          bOutWhile = TRUE;/*退出循環標志置為真*/
        }
        /*否則*/
        else
          /*交換行棋方*/
          ChangeOrder();
      }
      break;

    /*是光標移動鍵*/
    case KEYMOVECURSOR:
      MoveCursor(gPlayOrder,press);
      break;

    /*是無效鍵*/
    case KEYINVALID:
      break;
    }

    if(bOutWhile==TRUE)
      break;
  }

  /*游戲結束*/
  EndGame();
}
/**********************************************************/

/*界面初始化,數據初始化*/
void Init(void)
{
  int i,j;
  char *Msg[]=
  {
    "Player1 key:",
    "  UP----w",
    "  DOWN--s",
    "  LEFT--a",
    "  RIGHT-d",
    "  DO----space",
    "",
    "Player2 key:",
    "  UP----up",
    "  DOWN--down",
    "  LEFT--left",
    "  RIGHT-right",
    "  DO----ENTER",
    "",
    "exit game:",
    "  ESC",
    NULL,
  };

  /*先手方為1號玩家*/
  gPlayOrder = CHESS1;
  /*棋盤數據清零, 即棋盤上各點開始的時候都沒有棋子*/
  for(i=0;i<19;i++)
    for(j=0;j<19;j++)
      gChessBoard[i][j]=CHESSNULL;
  /*光標初始位置*/
  gCursor.x=gCursor.y=0;

  /*畫棋盤*/
  textmode(C40);
  DrawMap();

  /*顯示操作鍵說明*/
  i=0;
  textcolor(BROWN);
  while(Msg[i]!=NULL)
  {
    gotoxy(25,3+i);
    cputs(Msg[i]);
    i++;
  }

  /*顯示當前行棋方*/
  ShowOrderMsg(gPlayOrder);
  /*光標移至棋盤的左上角點處*/
  gotoxy(gCursor.x+MAPXOFT,gCursor.y+MAPYOFT);
}

/*畫棋盤*/
void DrawMap(void)
{
  int i,j;

  clrscr();

  for(i=0;i<19;i++)
    for(j=0;j<19;j++)
      DrawCross(i,j);

}

/*畫棋盤上的交叉點*/
void DrawCross(int x,int y)
{
  gotoxy(x+MAPXOFT,y+MAPYOFT);
  /*交叉點上是一號玩家的棋子*/
  if(gChessBoard[x][y]==CHESS1)
  {
    textcolor(LIGHTBLUE);
    putch(CHESS1);
    return;
  }
  /*交叉點上是二號玩家的棋子*/
  if(gChessBoard[x][y]==CHESS2)
  {
    textcolor(LIGHTBLUE);
    putch(CHESS2);
    return;
  }

  textcolor(GREEN);

  /*左上角交叉點*/
  if(x==0&&y==0)
  {
    putch(CROSSLU);
    return;
  }

  /*左下角交叉點*/
  if(x==0&&y==18)
  {
    putch(CROSSLD);
    return;
  }
  
  /*右上角交叉點*/
  if(x==18&&y==0)
  {
    putch(CROSSRU);
    return;
  }

  /*右下角交叉點*/
  if(x==18&&y==18)
  {
    putch(CROSSRD);
    return;
  }

  /*左邊界交叉點*/
  if(x==0)
  {
    putch(CROSSL);
    return;
  }

  /*右邊界交叉點*/
  if(x==18)
  {
    putch(CROSSR);
    return;
  }

  /*上邊界交叉點*/
  if(y==0)
  {
    putch(CROSSU);
    return;
  }

  /*下邊界交叉點*/
  if(y==18)
  {
    putch(CROSSD);
    return;
  }

  /*棋盤中間的交叉點*/
  putch(CROSS);
}

/*交換行棋方*/
int ChangeOrder(void)
{
  if(gPlayOrder==CHESS1)
    gPlayOrder=CHESS2;
  else
    gPlayOrder=CHESS1;

  return(gPlayOrder);
}

/*獲取按鍵值*/
int GetKey(void)
{
   char lowbyte;
   int press;

   while (bioskey(1) == 0)
      ;/*如果用戶沒有按鍵,空循環*/

   press=bioskey(0);
   lowbyte=press&0xff;
   press=press&0xff00 + toupper(lowbyte);
   return(press);
}

/*落子錯誤處理*/
void DoError(void)
{
   sound(1200);
   delay(50);
   nosound();
}

/*贏棋處理*/
void DoWin(int Order)
{
   sound(1500);delay(100);
   sound(0);   delay(50);
   sound(800); delay(100);
   sound(0);   delay(50);
   sound(1500);delay(100);
   sound(0);   delay(50);
   sound(800); delay(100);
   sound(0);   delay(50);
   nosound();

   textcolor(RED+BLINK);
   gotoxy(25,20);
   if(Order==CHESS1)
     cputs("PLAYER1 WIN!");
   else
     cputs("PLAYER2 WIN!");
   gotoxy(25,21);
   cputs("  \\<^+^>/");
   getch();
}

/*走棋*/
int  ChessGo(int Order,struct point Cursor)
{
   /*判斷交叉點上有無棋子*/
   if(gChessBoard[Cursor.x][Cursor.y]==CHESSNULL)
   {
     /*若沒有棋子, 則可以落子*/
     gotoxy(Cursor.x+MAPXOFT,Cursor.y+MAPYOFT);
     textcolor(LIGHTBLUE);
     putch(Order);
     gotoxy(Cursor.x+MAPXOFT,Cursor.y+MAPYOFT);
     gChessBoard[Cursor.x][Cursor.y]=Order;
     return TRUE;
   }
   else
     return FALSE;
}

/*判斷當前行棋方落子后是否贏棋*/
int  JudgeWin(int Order,struct point Cursor)
{
  int i;
  for(i=0;i<4;i++)
    /*判斷在指定方向上是否有連續5個行棋方的棋子*/
    if(JudgeWinLine(Order,Cursor,i))
      return TRUE;
  return FALSE;
}

/*判斷在指定方向上是否有連續5個行棋方的棋子*/
int  JudgeWinLine(int Order,struct point Cursor,int direction)
{
   int i;
   struct point pos,dpos;
   const int testnum = 5;
   int count;

   switch(direction)
   {
   case 0:/*在水平方向*/
     pos.x=Cursor.x-(testnum-1);
     pos.y=Cursor.y;
     dpos.x=1;
     dpos.y=0;
     break;
   case 1:/*在垂直方向*/
     pos.x=Cursor.x;
     pos.y=Cursor.y-(testnum-1);
     dpos.x=0;
     dpos.y=1;
     break;
   case 2:/*在左下至右上的斜方向*/
     pos.x=Cursor.x-(testnum-1);
     pos.y=Cursor.y+(testnum-1);
     dpos.x=1;
     dpos.y=-1;
     break;
   case 3:/*在左上至右下的斜方向*/
     pos.x=Cursor.x-(testnum-1);
     pos.y=Cursor.y-(testnum-1);
     dpos.x=1;
     dpos.y=1;
     break;
   }

   count=0;
   for(i=0;i<testnum*2+1;i++)
   {
     if(pos.x>=0&&pos.x<=18&&pos.y>=0&&pos.y<=18)
     {
       if(gChessBoard[pos.x][pos.y]==Order)
       {
             count++;
             if(count>=testnum)
             return TRUE;
       }
       else
         count=0;
     }
     pos.x+=dpos.x;
     pos.y+=dpos.y;
   }

   return FALSE;
}

/*移動光標*/
void MoveCursor(int Order,int press)
{
  switch(press)
  {
  case PLAY1UP:
    if(Order==CHESS1&&gCursor.y>0)
      gCursor.y--;
    break;
  case PLAY1DOWN:
    if(Order==CHESS1&&gCursor.y<18)
      gCursor.y++;
    break;
  case PLAY1LEFT:
    if(Order==CHESS1&&gCursor.x>0)
      gCursor.x--;
    break;
  case PLAY1RIGHT:
    if(Order==CHESS1&&gCursor.x<18)
      gCursor.x++;
    break;

  case PLAY2UP:
    if(Order==CHESS2&&gCursor.y>0)
      gCursor.y--;
    break;
  case PLAY2DOWN:
    if(Order==CHESS2&&gCursor.y<18)
      gCursor.y++;
    break;
  case PLAY2LEFT:
    if(Order==CHESS2&&gCursor.x>0)
      gCursor.x--;
    break;
  case PLAY2RIGHT:
    if(Order==CHESS2&&gCursor.x<18)
      gCursor.x++;
    break;
  }

  gotoxy(gCursor.x+MAPXOFT,gCursor.y+MAPYOFT);
}

/*游戲結束處理*/
void EndGame(void)
{
   textmode(C80);
}

/*顯示當前行棋方*/
void ShowOrderMsg(int Order)
{
  gotoxy(6,MAPYOFT+20);
  textcolor(LIGHTRED);
  if(Order==CHESS1)
     cputs("Player1 go!");
  else
     cputs("Player2 go!");

  gotoxy(gCursor.x+MAPXOFT,gCursor.y+MAPYOFT);
}

/*落子正確處理*/
void DoOK(void)
{
   sound(500);
   delay(70);
   sound(600);
   delay(50);
   sound(1000);
   delay(100);
   nosound();
}

/*檢查用戶的按鍵類別*/
int CheckKey(int press)
{
    if(press==ESCAPE)
      return KEYEXIT;/*是退出鍵*/

    else 
    if
    ( ( press==PLAY1DO && gPlayOrder==CHESS1) ||
      ( press==PLAY2DO && gPlayOrder==CHESS2)
    )
      return KEYFALLCHESS;/*是落子鍵*/

    else
    if
    ( press==PLAY1UP   || press==PLAY1DOWN  ||
      press==PLAY1LEFT || press==PLAY1RIGHT ||
      press==PLAY2UP   || press==PLAY2DOWN  ||
      press==PLAY2LEFT || press==PLAY2RIGHT
    )
      return KEYMOVECURSOR;/*是光標移動鍵*/

    else
      return KEYINVALID;/*按鍵無效*/
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品福利一区| 国产精品人人做人人爽人人添| 国产aⅴ精品一区二区三区色成熟| 日韩高清一级片| 婷婷开心激情综合| 日韩福利电影在线观看| 婷婷一区二区三区| 蜜桃一区二区三区在线| 韩国精品久久久| 成人免费观看视频| av一区二区久久| 91成人免费在线视频| 欧美视频一区在线| 欧美一级日韩一级| 久久久久久久久久美女| 亚洲少妇30p| 午夜激情久久久| 国产在线不卡一区| 成人av电影免费观看| 日本高清不卡aⅴ免费网站| 欧美日韩www| 国产亚洲精品aa| 亚洲制服丝袜av| 久久99国内精品| jiyouzz国产精品久久| 欧美剧情片在线观看| 久久综合九色欧美综合狠狠| 亚洲欧美在线视频观看| 视频一区视频二区在线观看| 国产精品亚洲人在线观看| 色噜噜偷拍精品综合在线| 日韩欧美一区二区免费| 亚洲免费在线电影| 久久99精品久久只有精品| 91一区二区在线| 精品对白一区国产伦| 有坂深雪av一区二区精品| 狠狠色综合日日| 欧美无砖专区一中文字| 欧美tickling网站挠脚心| 亚洲同性gay激情无套| 激情av综合网| 欧美色精品在线视频| 中文字幕av一区二区三区免费看| 日韩在线卡一卡二| av不卡在线播放| www欧美成人18+| 视频一区国产视频| 色哟哟日韩精品| 国产欧美日韩精品a在线观看| 无吗不卡中文字幕| 色欧美片视频在线观看| 国产精品沙发午睡系列990531| 日本不卡1234视频| 欧美日韩激情一区二区| 亚洲欧美色图小说| 丁香六月综合激情| 精品人伦一区二区色婷婷| 亚洲成av人片在线观看| 91女神在线视频| 自拍偷拍国产精品| 91在线观看一区二区| 国产精品萝li| 成人永久免费视频| 欧美国产精品久久| 国产91精品露脸国语对白| 久久一留热品黄| 狠狠色狠狠色综合| 精品国产伦理网| 激情欧美一区二区| 久久久国产一区二区三区四区小说 | 国产麻豆精品theporn| 91精品国产色综合久久ai换脸| 亚洲成人一二三| 欧美日韩午夜在线| 青娱乐精品视频| 欧美大尺度电影在线| 看电影不卡的网站| 国产婷婷色一区二区三区四区| 国产伦理精品不卡| 国产欧美一区二区精品性| 成人美女在线视频| 国产精品久久久久婷婷二区次| 不卡av在线网| 樱桃视频在线观看一区| 欧美日本免费一区二区三区| 美女视频免费一区| 久久久www免费人成精品| 成人午夜激情影院| 亚洲午夜精品久久久久久久久| 欧美日本一区二区| 国产精品影视在线观看| 亚洲欧美在线aaa| 777久久久精品| 国产呦萝稀缺另类资源| 中文字幕一区av| 欧美美女喷水视频| 国产老妇另类xxxxx| 国产精品白丝在线| 欧美精品在线观看一区二区| 狠狠色2019综合网| 亚洲欧美另类图片小说| 6080午夜不卡| 99re这里都是精品| 免费人成在线不卡| 国产精品初高中害羞小美女文| 欧美日韩欧美一区二区| 国产高清精品在线| 午夜av区久久| 国产精品免费丝袜| 制服.丝袜.亚洲.中文.综合| 粉嫩av一区二区三区在线播放| 一区二区三区成人| 欧美激情一二三区| 91麻豆精品国产91久久久久| 成人精品鲁一区一区二区| 天天av天天翘天天综合网 | 制服丝袜日韩国产| 波多野结衣的一区二区三区| 蜜桃av一区二区在线观看| 综合自拍亚洲综合图不卡区| 精品欧美一区二区久久| 成人a级免费电影| 日韩av电影免费观看高清完整版在线观看| 日韩精品中文字幕在线一区| 91在线观看高清| 国产成人午夜精品影院观看视频| 日日夜夜免费精品视频| 亚洲少妇屁股交4| 久久久99精品久久| 欧美精品日韩一本| 色婷婷av一区二区三区gif| 国产成人免费在线视频| 琪琪一区二区三区| 亚洲成av人片在线| 亚洲最大成人网4388xx| 国产精品国产精品国产专区不片| 欧美tk—视频vk| 日韩无一区二区| 欧美一级视频精品观看| 欧美绝品在线观看成人午夜影视| 色8久久精品久久久久久蜜| 成人av网址在线| 大胆欧美人体老妇| 成人综合在线网站| 国产精品亚洲午夜一区二区三区| 极品尤物av久久免费看| 蜜桃av一区二区| 免费成人av资源网| 免费三级欧美电影| 奇米影视一区二区三区小说| 午夜视频久久久久久| 亚洲一区二区3| 五月婷婷久久丁香| 日本aⅴ免费视频一区二区三区| 一区二区三区四区国产精品| 一区二区三区自拍| 亚洲国产精品久久久久秋霞影院| 亚洲综合成人在线| 五月天一区二区| 男女激情视频一区| 国内久久精品视频| 丰满白嫩尤物一区二区| 99国产麻豆精品| 欧美色图免费看| 日韩欧美一级在线播放| 久久影院视频免费| 成人欧美一区二区三区小说| 亚洲青青青在线视频| 婷婷国产在线综合| 国产乱码精品一区二区三| 成人深夜福利app| 在线看一区二区| 日韩一区二区不卡| 中文字幕乱码亚洲精品一区| 亚洲狠狠丁香婷婷综合久久久| 天天av天天翘天天综合网色鬼国产| 久久精品99久久久| 91亚洲国产成人精品一区二三| 欧美亚洲一区二区在线观看| 日韩三级.com| 亚洲欧洲日产国码二区| 亚洲va国产天堂va久久en| 国产一区二区不卡| 91九色02白丝porn| 精品国产露脸精彩对白| 亚洲精品综合在线| 卡一卡二国产精品| 91猫先生在线| 26uuu亚洲综合色欧美 | 欧美日韩一区二区欧美激情| 26uuu国产电影一区二区| 亚洲激情图片小说视频| 久久99精品久久久久婷婷| 91成人国产精品| 国产欧美日产一区| 免费欧美在线视频| 色婷婷av一区二区三区gif | 91在线观看免费视频| 91精品国产一区二区三区|