C語言實現的迷宮遊戲

來源:互聯網
上載者:User

烏雲老師的話:學習檢測鍵盤資訊之後,餘文彪同學當堂就作出了通過鍵盤在螢幕上下左右移動一個星星的程式。

老師給幾位同學大略說了一下迷宮遊戲的實現思路,彭搏同學下次課就把做好的迷宮遊戲拿出來了,wonderful!

思路分明,代碼簡練,注釋清晰,只得大家學習。

同時他還實現了一個簡單推箱子遊戲,可謂程式快手了。

#include"stdio.h"
#include"bios.h"
#define LEFT 75
#define RIGHT 77
#define UPPER 72
#define DOWN 80
#define ESC 27
union keyboard  /*定義讀取鍵盤碼的共用體類型*/
{
unsigned int iKeyInfo;
char chKeyBit[2];
};
int fnGetKey(void)  /*定義讀取鍵盤碼的函數*/
{
union keyboard uniKey1; /*定義讀取鍵盤碼的共用體變數*/
while(bioskey(1)==0); /*檢測使用者是否按鍵*/
uniKey1.iKeyInfo=bioskey(0);  /*讀取按鍵資訊*/
return(uniKey1.chKeyBit[0]==0?uniKey1.chKeyBit[1]:uniKey1.chKeyBit[0]); /*返回ASCII碼或擴充碼*/
}
void main()
{
int iKey,x=11,y=6;  /*x,y為人物移動後座標*/
int chMap[10][10]={ /*用二維數組定義地圖*/
                  {0,0,0,0,0,0,0,0,0,0}, /*0表示牆1表示路2表示出口*/
                  {0,1,0,0,1,1,1,1,1,0},
                  {0,1,1,0,1,0,1,0,1,0},
                  {0,0,1,0,1,0,1,0,1,0},
                  {0,0,1,1,1,0,0,0,1,0},
                  {0,0,0,0,0,0,1,1,1,0},
                  {0,1,0,0,1,1,1,0,0,0},
                  {0,1,1,1,1,0,0,0,2,0},
                  {0,1,0,0,1,1,1,1,1,0},
                  {0,0,0,0,0,0,0,0,0,0},
                  };
int i,j; /*反覆進行求移動的座標運算*/
  while(1)
  {
  for(i=0;i<10;i++) /*輸出新地圖(重新整理地圖)*/
  {
   gotoxy(10,5+i);
   for(j=0;j<10;j++)
    {
     if(chMap[i][j]==0)
        printf("#");
     if(chMap[i][j]==1)
        printf(" ");
     if(chMap[i][j]==2)
        printf("E");
    }

  }
  if(chMap[y-5][x-10]==2) /*如果如果人的座標和目標座標重合輸出"YOU WIN!"退出*/
  {
    clrscr();
    printf("You Win!");
    break;
  } /*在起始(或移動後)的座標輸出人*/
  gotoxy(x,y);
  printf("*\b");
  iKey=fnGetKey(); /*按讀取的按鍵資訊改變座標如果改變的座標和牆(0)重合則不改變*/
  if(iKey==LEFT&&chMap[y-5][x-1-10]!=0)
     x--;
  if(iKey==RIGHT&&chMap[y-5][x+1-10]!=0)
     x++;
  if(iKey==UPPER&&chMap[y-1-5][x-10]!=0)
     y--;
  if(iKey==DOWN&&chMap[y+1-5][x-10]!=0)
     y++;
  if(iKey==ESC) /*輸入ESC退出並輸出"YOU LOST"*/
  {
    clrscr();
    printf("You Lost");
    break;
  }
  clrscr();
  }
getch();
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.