C ++スネーク一次元

#include <iostreamの> 
する#include <conio.h> 
の#include <WINDOWS.H> 
の#include <TIME.H> INT g_Dir = 3 #define UP 0
 の#define DOWN 1
 の#define LEFT 2
 の#define RIGHT 3 構造体FOOD 
{ INT X = 0 int型 Y = 0 ;
    BOOL状態= 0 ; 
}食物; // 方向控制ボイドSnekeMove()
{ 場合(:: GetAsyncKeyState(VK_UP)&1




    



    
        g_Dir = 0 もし(:: GetAsyncKeyState(VK_DOWN)&1 
        g_Dir = 1 もし(:: GetAsyncKeyState(VK_LEFT)&1 
        g_Dir = 2 もし(:: GetAsyncKeyState(VK_RIGHT)&1 
        g_Dir = 3 
} 

// 主函数
INT メイン()
{ 
    にsrand((符号なし整数)時間(NULL))。
    int型 W = 20 ;
    int型 H =20 ;
    int型レン= 3 ;
    INTマップ[ 20 * 20 ] = { 0 }。
    INTスネーク[ 50 ] = { 0 }。
    // スネーク[0] 2 =。// 为蛇头
    
    ためint型 i = 0 ; iはレンを<; iは++ 
    { 
        スネーク[I] =レン- 、I - 1 
    } 
    Food.X = W / 2 
    Food.Y = H / 2 
    地図[Food.Y * W + Food.X] =2 ; 

    CONST  のchar *ヘビ[] = { "   "" "" " }。
    一方、
    { 
        システム(" CLS " )。
        以下のためにint型 i = 0 ; iはレンを<; iは++ 
        { 
            // 2 1 0
             // 1 1 1 

            // 3 2 1
             // 0 1 1 1
             // 这里需要注意 
            マップ[スネーク[I] = 1 
        } 
        マップ[Food.Y * W + Food.X] = 2 ;
        もし(MAP [スネーク[ 0 ]] ==マップ[Food.Y * W + Food.X])
        { 
            マップ[Food.Y * W + Food.X] = 0 ;
            やる
            { 
                BOOL FoodState = ; 
                Food.X =ランド()%のW。
                Food.Y =ランド()%のH。
                以下のためにint型私= 0 ;私はレンを<;私は++ 
                { 
                    もし!(マップ[Food.Y * W + Food.X] =地図[スネーク[I]]) 
                    { 
                        FoodState = 
                    } 
                } 
                もし(FoodState)
                { 
                    マップ[Food.Y * W + Food.X] = 2 ;
                    破ります; 
                } 
            } 一方)。
            レン ++ ; 
        } 

        のためにint型 i = 0 ; iはHを<; iは++ 
        { 
            ためINT J =0 ; J <Wであり; J ++ 
            { 
                // スネークヘッドが地図上の座標
                IF(I Jが== * Wが蛇ある+ [ 0 ])
                { 
                    IF - (I == H 1 - || J == Wである。1 
                    { 
                        //  
                        システム(" PAUSE " );
                         戻り 0 ; 
                    } 
                } 
            } 
        } 

        のためのint型 I = 0を I ++は; IはHを< 
        { 
            int型 J = 0 ; J <W; J ++ 
            { 
                のstd :: COUT << SNAKE [マップ[iがW * + J]。
            } 
            のstd :: coutの << はstd :: ENDL。
        } 
        のstd :: coutの << はstd :: ENDL。
        // ため(; iはレンを<; I = 0 int型私は++)
         // {
         //     はstd :: COUT <<スネーク[I] <<」「。
        // }
         // はstd :: coutの<<はstd ::てendl; 
        std :: coutの<< " 蛇的长度为:" <<レン<< はstd ::てendl;0はsizeof (マップ)); 

        SnekeMove(); 


        のためint型 I>; I =レンを0 ; i-- 
        { 
            // 2. 1 0
             // 右移動デフォルト
             @ 2210
             @ リア++
             // 3210
             // 完全に一度移動 
            スネークを[I]は[Iは- =スネーク1。];
             / * 
            このような下向き
            3210 @ 
            23 @は3210 
            * / 
        } 
        IF(== g_Dir UP ) 
        {
            蛇[ 0 ] - = W。
        } 
        であれば(g_Dir == DOWN)
        { 
            スネーク[ 0 ] + = W。
        } 
        であれば(g_Dir == LEFT)
        { 
            スネーク[ 0 ] - 
        } 
        であれば(g_Dir == RIGHT)
        { 
            スネーク[ 0 ] ++ ; 
        } 
        


        スリープ(50 )。
    } 


    // https://www.bilibili.com/video/av29007126/?spm_id_from=333.788.videocard.1 
    システム(一時停止" );
     戻り 0 ; 
}

 

おすすめ

転載: www.cnblogs.com/YZFHKMS-X/p/11780544.html
おすすめ