C ++スネーク-D

#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 ] [ 2 ] = { 0 }。
    // スネーク[0] 2 =。// 为蛇头
    
    ためint型 i = 0 ; iはレンを<; iは++ 
    { 
        スネーク[I] [ 0 ] =レン- 、I - 1 
    } 
    Food.X = W / 2 
    Food.Y = H / 2 
    地図[Food.Y] [Food.X] = 2 ; 

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

            // 321
             // 0111
             // ここで留意その 
            X =スネーク[I] [ 0 ]; 
            Y =スネーク[I] [ 1。];
             // ここで、二次元アレイの理解に依存
             // もののYは常に0です
             // 向かっマップ[Y]アドレス
             // 書き込み、これらのタイプ得ることが推論によって
             // *(地図[Y] + X)= 1;
             // マップ[Y] [X] = 1;。 
            *(地図[ 0 ] + X)= 1 ;
             // マップ[0] [X] = 1; 
        }
         のためのINT I = 0; 私はHを<; 私は++ 
        { 
            ためINT J = 0 J <W; J ++ 
            { 
                のstd :: COUT << SNAKE [マップ[I] [J]。
            } 
            のstd :: coutの << はstd :: ENDL。
        } 
        のmemset(地図、0はsizeof (MAP))。
        SnekeMove(); 
        int型 I =レン; I> 0 ; i-- 
        { 
            スネーク[I] [ 0 ] =スネーク[I - 1 ] [ 0 ]。
        }

        もし(g_Dir == UP)
        { 
            スネーク[ 0 ] [ 0 ] - = W。
        } 
        であれば(g_Dir == DOWN)
        { 
            スネーク[ 0 ] [ 0 ] + = W。
        } 
        であれば(g_Dir == LEFT)
        { 
            スネーク[ 0 ] [ 0 ] - 
        } 
        であれば(g_Dir == RIGHT)
        { 
            スネーク[ 0 ] [ 0 ] ++ ; 
        }

        睡眠(50 )。
    } 


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

 

おすすめ

転載: www.cnblogs.com/YZFHKMS-X/p/11780545.html