21xrx.com
2024-12-22 20:57:32 Sunday
登录
文章检索 我的文章 写文章
简易版c++贪吃蛇代码
2023-07-04 02:35:56 深夜i     --     --
C++ 贪吃蛇 代码

贪吃蛇是一款非常经典的游戏,它的玩法简单,操作容易上手,具有非常高的娱乐性和挑战性。如果你想了解如何用C++来实现简易版的贪吃蛇游戏,那么请看下面的代码:

首先,我们需要定义一些基本的数据结构,如蛇的头、身体、食物、地图等。然后,我们需要实现一些基本操作,如蛇的移动、吃食物、增加身体等。最后,我们需要用循环来不断更新蛇的状态,直到游戏结束为止。

下面是简易版C++贪吃蛇代码的核心部分:


#include <iostream>

#include <conio.h>

#include <windows.h>

using namespace std;

const int X = 30;

const int Y = 20;

const int maxn = 150;

int dx[ 4 ] = 0;

int dy[ 4 ] = 0;

int map[ Y ][ X ] = { 0 };

int h, t, fx, fy, score;

struct node

y;

q[ maxn ];

void gotoxy(int x, int y)

{

  COORD pos = x;

  HANDLE output = GetStdHandle(STD_OUTPUT_HANDLE);

  SetConsoleCursorPosition(output, pos);

}

void init()

{

  for (int i = 0; i < X; i++) map[ 0 ][ i ] = map[ Y - 1 ][ i ] = -1;

  for (int i = 0; i < Y; i++) map[ i ][ 0 ] = map[ i ][ X - 1 ] = -1;

  for (int i = 1; i <= 3; i++) q[ i ].x = 3 - i + 1, q[ i ].y = 5, map[ q[ i ].y ][ q[ i ].x ] = 1;

  h = 1, t = 3;

  fx = rand() % ( X - 4 ) + 2, fy = rand() % ( Y - 4 ) + 2;

  map[ fy ][ fx ] = 2;

  score = 0;

}

void move(int dir)

{

  int x = q[ h ].x + dx[ dir ];

  int y = q[ h ].y + dy[ dir ];

  if (map[ y ][ x ] == 1 || map[ y ][ x ] == -1)

  {

    Beep( 5000, 200 );

    system( "cls" );

    cout << "Game Over!\nYour score is " << score << endl;

    exit( 0 );

  }

  if (map[ y ][ x ] == 2)

  {

    q[ --h ] = y ;

    map[ y ][ x ] = 1;

    score++;

    gotoxy( 0, Y );

    cout << "Score: " << score << endl;

    fx = rand() % ( X - 4 ) + 2, fy = rand() % ( Y - 4 ) + 2;

    while (map[ fy ][ fx ] != 0)

    {

      fx = rand() % ( X - 4 ) + 2, fy = rand() % ( Y - 4 ) + 2;

    }

    map[ fy ][ fx ] = 2;

    return;

  }

  q[ --h ] = x;

  map[ y ][ x ] = 1;

  map[ q[ t ].y ][ q[ t ].x ] = 0;

  t--;

  return;

}

void draw()

{

  for (int i = 0; i < Y; i++)

  {

    for (int j = 0; j < X; j++)

    {

      if (map[ i ][ j ] == -1) cout << "* ";

      else if (map[ i ][ j ] == 0) cout << " ";

      else if (map[ i ][ j ] == 1) cout << "# ";

      else if (map[ i ][ j ] == 2) cout << "$ ";

    }

    cout << endl;

  }

}

int main()

{

  srand( (unsigned)time( NULL ) );

  init();

  draw();

  while (1)

  {

    if (_kbhit())

    {

      int c = _getch();

      if (c == 27) break;

      if (c == 72) move( 0 );

      if (c == 77) move( 1 );

      if (c == 80) move( 2 );

      if (c == 75) move( 3 );

    }

    else move( 1 );

    draw();

    Sleep( 100 );

  }

  return 0;

}

在以上代码中,我们使用了一些函数来完成屏幕的输出、移动光标、计时等操作,来增强游戏的交互性和可玩性。同时,我们也设置了一些突发事件的响应机制,如蛇碰到障碍物、吃到食物等,来增加游戏的随机性和挑战性。

通过以上代码,我们可以轻松实现一个简易版的C++贪吃蛇游戏,让人们在学习编程的过程中感受到游戏的乐趣和coding的快乐。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复