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

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

?? wz.c

?? ben wenjian shi tongguo yong cbainxie chengxu shixianfdgdgdf
?? C
字號:
#include <stdio.h>
#include <bios.h>
#include <ctype.h>
#include <conio.h>
#include <dos.h>

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

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

/*定義棋盤左上角點(diǎn)在屏幕上的位置*/
#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

/*定義棋盤上交叉點(diǎn)的狀態(tài), 即該點(diǎn)有無棋子 */
/*若有棋子, 還應(yīng)能指出是哪個玩家的棋子   */
#define CHESSNULL   0  /*沒有棋子*/
#define CHESS1      'O'/*一號玩家的棋子*/
#define CHESS2      'X'/*二號玩家的棋子*/

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

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

/**********************************************************/
/* 定義數(shù)據(jù)結(jié)構(gòu)                                           */

/*棋盤交叉點(diǎn)坐標(biāo)的數(shù)據(jù)結(jié)構(gòu)*/
struct point
{
   int x,y;
};

/**********************************************************/
/*自定義函數(shù)原型說明                                      */
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;         /*指示當(dāng)前行棋方          */
struct point gCursor;    /*光標(biāo)在棋盤上的位置      */
char gChessBoard[19][19];/*用于記錄棋盤上各點(diǎn)的狀態(tài)*/
/**********************************************************/

/**********************************************************/
/*主函數(shù)*/
void main()
{
  int press;
  int bOutWhile=FALSE;/*退出循環(huán)標(biāo)志*/

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

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

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

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

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

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

    if(bOutWhile==TRUE)
      break;
  }

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

/*界面初始化,數(shù)據(jù)初始化*/
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;
  /* 棋盤數(shù)據(jù)清零, 即棋盤上各點(diǎn)開始的時候都沒有棋子 */
  for(i=0;i<19;i++)
    for(j=0;j<19;j++)
      gChessBoard[i][j]=CHESSNULL;
  /*光標(biāo)初始位置*/
  gCursor.x=gCursor.y=0;

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

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

  /*顯示當(dāng)前行棋方*/
  ShowOrderMsg(gPlayOrder);
  /*光標(biāo)移至棋盤的左上角點(diǎn)處*/
  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);

}

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

  textcolor(GREEN);

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

  /*左下角交叉點(diǎn)*/
  if(x==0&&y==18)
  {
    putch(CROSSLD);
    return;
  }

  /*右上角交叉點(diǎn)*/
  if(x==18&&y==0)
  {
    putch(CROSSRU);
    return;
  }

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

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

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

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

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

  /*棋盤中間的交叉點(diǎn)*/
  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)
      ;/*如果用戶沒有按鍵,空循環(huán)*/

   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)
{
   /*判斷交叉點(diǎn)上有無棋子*/
   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;
}

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

/*判斷在指定方向上是否有連續(xù)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++)/*????????i<testnum*2-1*/
   {
     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;
}

/*移動光標(biāo)*/
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);
}

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

/*顯示當(dāng)前行棋方*/
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;/*是光標(biāo)移動鍵*/

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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产激情偷乱视频一区二区三区| 国产一区二区三区四区在线观看 | 欧美中文字幕不卡| 久久99精品一区二区三区三区| 亚洲色欲色欲www在线观看| 日韩欧美高清一区| 在线观看国产91| 国产999精品久久| 免费欧美在线视频| 亚洲成人免费观看| 亚洲啪啪综合av一区二区三区| 久久久久国产免费免费| 91精品国产综合久久久蜜臀图片| 91婷婷韩国欧美一区二区| 国产精品1区2区| 美女一区二区久久| 日韩va欧美va亚洲va久久| 一区二区视频在线| 国产精品国产三级国产专播品爱网| 精品国产乱码久久久久久免费| 欧美日韩欧美一区二区| 欧美电影一区二区三区| 91网站最新地址| fc2成人免费人成在线观看播放 | 日本一区二区免费在线| 欧美精品一区二区三区在线播放 | 欧美日韩一区国产| 一本大道久久a久久综合| 99在线视频精品| 成人国产精品免费观看视频| 国产精品12区| 国产99精品在线观看| 国产成人免费网站| 成人免费视频视频| 成人激情av网| 91视频一区二区| 99国产精品视频免费观看| av不卡一区二区三区| 不卡一区二区在线| 91蝌蚪porny| 在线亚洲免费视频| 欧美日韩精品一区二区天天拍小说| 色婷婷亚洲精品| 欧美三级乱人伦电影| 欧美日本在线一区| 欧美一区二区观看视频| 欧美电影免费观看高清完整版| 精品久久一区二区三区| 国产三级精品三级在线专区| 国产精品福利一区二区| 亚洲精品成人少妇| 视频一区中文字幕| 麻豆成人综合网| 国产成人精品亚洲午夜麻豆| 99久久er热在这里只有精品66| 日韩欧美黄色影院| 精品入口麻豆88视频| 国产亚洲欧洲997久久综合 | 精品毛片乱码1区2区3区| 久久网站最新地址| 国产精品不卡一区二区三区| 亚洲综合在线观看视频| 亚洲高清久久久| 看片的网站亚洲| 成人精品国产免费网站| 欧洲国内综合视频| 欧美电影免费观看高清完整版| 欧美国产禁国产网站cc| 一区二区三区在线高清| 奇米在线7777在线精品| 国产91丝袜在线观看| 日本国产一区二区| 欧美电影精品一区二区| 国产精品传媒入口麻豆| 全部av―极品视觉盛宴亚洲| 成人精品国产福利| 91精品国产全国免费观看| 国产三级精品视频| 天天影视网天天综合色在线播放| 国产美女av一区二区三区| 欧美亚洲日本一区| 2020国产精品| 亚洲电影在线播放| 国产黄色91视频| 欧美肥妇毛茸茸| 国产精品福利电影一区二区三区四区| 日韩精品亚洲一区| av中文字幕亚洲| 精品国免费一区二区三区| 亚洲精品乱码久久久久久久久| 麻豆精品视频在线观看视频| 一本色道久久综合狠狠躁的推荐| 日韩精品中文字幕在线一区| 亚洲一区二区中文在线| 欧美日韩国产欧美日美国产精品| 国产女人水真多18毛片18精品视频| 亚洲国产精品人人做人人爽| 成人av资源在线观看| 精品欧美一区二区在线观看| 艳妇臀荡乳欲伦亚洲一区| 粉嫩aⅴ一区二区三区四区五区 | 国产日产精品1区| 美腿丝袜在线亚洲一区| 日本精品一区二区三区高清| 国产性色一区二区| 久久国产尿小便嘘嘘| 欧美日韩你懂得| 亚洲免费观看在线视频| 懂色中文一区二区在线播放| 日韩免费观看高清完整版| 一区二区三区中文字幕在线观看| 福利一区二区在线观看| 久久综合久久鬼色中文字| 日韩精品国产精品| 欧美日韩一区国产| 亚洲激情五月婷婷| 一本大道久久精品懂色aⅴ | 精品无码三级在线观看视频| 欧美日免费三级在线| 亚洲摸摸操操av| 91在线一区二区| 成人免费一区二区三区视频| 丁香婷婷综合色啪| 国产日韩欧美精品在线| 国产精品亚洲视频| 国产欧美日韩麻豆91| 粉嫩av亚洲一区二区图片| 久久综合国产精品| 国产一区 二区 三区一级| xf在线a精品一区二区视频网站| 日韩成人免费看| 欧美一区二区精美| 日本成人在线视频网站| 欧美一级淫片007| 美腿丝袜亚洲色图| 亚洲精品一区二区三区香蕉| 91麻豆swag| 亚洲欧美日韩成人高清在线一区| 91香蕉视频mp4| 一区二区三区国产豹纹内裤在线| 欧美体内she精视频| 丝袜脚交一区二区| 精品区一区二区| 国产电影一区二区三区| 国产精品乱码一区二区三区软件| 成人av在线资源网站| 亚洲欧洲韩国日本视频| 91成人免费在线| 日韩专区中文字幕一区二区| 欧美大尺度电影在线| 国产乱码精品一区二区三区av| 久久精品视频一区二区三区| 99在线精品观看| 亚洲成人资源网| 亚洲精品一区二区三区在线观看| 丰满亚洲少妇av| 亚洲午夜视频在线| 精品国产免费人成在线观看| 国产黄色精品网站| 一区二区免费看| 91精品国模一区二区三区| 国产精品亚洲视频| 一区二区不卡在线播放| 日韩一区二区电影在线| 成人夜色视频网站在线观看| 樱花影视一区二区| 日韩欧美国产麻豆| 成人av网站大全| 日韩国产成人精品| 国产精品理论在线观看| 欧美日韩国产在线观看| 激情综合色播五月| 一区二区中文视频| 欧美一区二区人人喊爽| 成人精品亚洲人成在线| 亚洲一区二区成人在线观看| 欧美精品一区二区三区很污很色的| av不卡在线播放| 蜜桃av一区二区| 亚洲精品国产一区二区精华液 | 99久久er热在这里只有精品15| 视频精品一区二区| 偷拍亚洲欧洲综合| 欧美激情在线一区二区三区| 在线播放中文一区| 99久久精品久久久久久清纯| 久久精品免费观看| 亚洲精品免费电影| 国产女主播一区| 欧美成人艳星乳罩| 欧美性生活影院| 波多野结衣91| 久久99国产精品久久99| 一区二区三区91| 国产亚洲精品aa午夜观看| 日韩一级大片在线| 欧美三级一区二区| 97精品国产露脸对白| 国产又粗又猛又爽又黄91精品| 亚洲不卡在线观看|