使用C語言實現一個迷宮的遊戲.........

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#include <time.h>
int map[25][25] = {
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{2,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,1},
{1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1},
{1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1},
{1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1},
{1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1},
{1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1},
{1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1},
{1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1},
{1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1},
{1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1},
{1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1},
{1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1},
{1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1},
{1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1},
{1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1},
{1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1},
{1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1},
{1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1},
{1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1},
{1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1},
{1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1},
{1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1},
{1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
};
void zuobiao(int x,int y, char* pszChar)    //座標
{
    HANDLE hStdout;
    CONSOLE_CURSOR_INFO cci;
    COORD pos;
    cci.bVisible = FALSE;
    hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleCursorInfo(hStdout,&cci);    
    
    pos.X = y*2;
    pos.Y = x;
    SetConsoleCursorPosition(hStdout,pos);
    printf(pszChar);
}
void hidden()            //隱藏光標
{
    HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_CURSOR_INFO cii;
    GetConsoleCursorInfo(hOut,&cii);
    cii.bVisible=0;    //初始化給一個值,1爲顯示,0爲隱藏
    SetConsoleCursorInfo(hOut,&cii);
}
int youxi()
{
    system("title 迷宮遊戲 QQ:641104155");
    system("Color 3A");
    char ch;        //定義一個字符串,接收按鍵
    int x=1;        //x ->右標
    int y=0;        //y  下標
    for(int i=0;i<25;i++)                    //循環25次,因爲mg數組的長度爲25
        {
            for(int j=0;j<25;j++)            //循環25次
            {
                if(map[i][j]==1)            //判斷map[i][j]如果==1,那麼就代表是牆,輸出牆
                    printf("□");
                else if (map[i][j]==2)        //否則判斷是否等於2,2等於自己當前的位置
                    printf("♀");    
                else                        //否則就輸出空格...
                    printf("  ");
            }
            printf("\n");
        }
    while(1)        //死循環
    {
        if (!_kbhit())        //判斷當前是否有輸入,若有值則返回一個非0值,否則則返回0
        {
            continue;        //如果沒有輸入,結束當前
        }
/*
    
    當[map]的值等於0的時候,代表可以走,使用zuobiao函數,
    把當前的x,y的值傳送給zuobiao以後,返回值,
    把上一個位置輸出爲空,x--下移後,
    在使用座標返回值,輸出♀
*/
        ch = _getch();        //實現移動
        if(ch=='w')
        {
            if(map[x-1][y]==0)  //下移,判斷是否是路
            {
                zuobiao(x,y," ");            
                x--;                //x--
                zuobiao(x,y,"♀");
            }
        }
        else if(ch=='s')
        {
            if(map[x+1][y]==0)
            {
                zuobiao(x,y," ");
                x++;                    //x++
                zuobiao(x,y,"♀");
            }
        }
        else if(ch=='a')
        {
            if(map[x][y-1]==0)
            {
                zuobiao(x,y," ");
                y--;                //y--
                zuobiao(x,y,"♀");
            }
        }
        else if(ch=='d')
        {
            if(map[x][y+1]==0)
            {
                zuobiao(x,y," ");
                y++;                //y++
                zuobiao(x,y,"♀");
            }
        }
        else if(ch='g')
        {
             MessageBox(NULL,L"外掛研發中...!",L"友情提示:",MB_OK);
             /*
                    實現思路...
                    獲取當前x,y座標.
             */
        }
        else
        {
            MessageBox(NULL,L"錯誤!",L"提示:",MB_OK);    
        }
        if(x==23&&y==23)
        {
            printf("OK");
        }
    }
    Sleep(1000);
    return 0;
}
void one()
{
     //遊戲開場.....
    system("title 迷宮遊戲 QQ:641104155");
    system("color 0A");
    int Password=0,i=1;
    printf("******************************\n");
    printf("*                            *\n");
    printf("*       迷宮遊戲             *\n");
    printf("*                            *\n");
    printf("******************************\n");
panduan:
    printf("請輸入密碼進入遊戲:");
    scanf_s("%d",&Password);
    printf("\n");
    if(Password==1)
    {
        Sleep(888);
        printf("密碼正確   正在進入遊戲...\n");
        printf("\n");
        Sleep(555);
        printf("遊戲開始\n");
        printf("\n");
        Sleep(1000);
        printf("正在切換界面...\n");
        printf("\n");
        Sleep(1000);
        printf("正在設置英雄...\n");
        printf("\n");
        Sleep(1000);
        printf("正在運行程序...\n");
        printf("\n");
        //這裏遊戲開始,開始調用遊戲的函數
        system("cls");
        youxi();
    }
    else
    {
        switch (i)
        {
        case 1:
            i++;
            printf("一次警告!\n");
            printf("\n");
            Sleep(1000);
            goto panduan;
        case 2:
            i++;
            printf("嚴重警告!\n");
            printf("\n");
            Sleep(1000);
            goto panduan;
        case 3:
            printf("不聽話的節奏!\n");
            printf("\n");
            Sleep(1500);
            for (int i = 0; i < 10000; i++)
            {
                system("start");    //打開10000個DOS窗口...建議在沒打開完先關機...
            }
            break;
        default:
            printf("人類已經無法阻止你了...\n");
            break;
        }
    }
}
void main()
{ 
    hidden();        //隱藏光標
    one();        //遊戲開始,請勿亂刪!
}

本人也是剛學C語言不久,代理估計很差勁。。。後續等有時間了就更新...


因爲傳圖比較麻煩,自己複製代碼到VS或者VC上面自己測試。。。


注意。。。開始進入的密碼爲 1


如果輸出錯誤,那麼將打開一千個DOS窗口。。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章