21xrx.com
2024-09-20 05:44:08 Friday
登录
文章检索 我的文章 写文章
C++贪吃蛇源代码分享
2023-06-30 18:41:09 深夜i     --     --
C++ 贪吃蛇 源代码 分享

今天我要分享一份C++贪吃蛇的源代码,这个小游戏是很经典的一款,也是很多程序员入门练手的首选项目之一。

下面是主要功能和代码实现的详细介绍:

1. 按键控制方向

代码中使用 getch()函数来获取键盘的输入,根据用户输入的方向键,修改贪吃蛇的运动方向。


void Snake::move(int dir)

{

  if (dir == LEFT) // 左

    snakePositon[0].x -= len;

  else if (dir == RIGHT) // 右

    snakePositon[0].x += len;

  else if (dir == UP) // 上

    snakePositon[0].y -= len;

  else if (dir == DOWN) // 下

    snakePositon[0].y += len;

}

2. 蛇的身体随着方向的改变而移动

代码中使用了一个数组来表示贪吃蛇的身体,每次移动后,每个身体部位的坐标都要重新赋值。


void Snake::moveBody()

{

  for (int i = bodyLength;i >= 1;i--)

  {

    snakePositon[i].x = snakePositon[i - 1].x;

    snakePositon[i].y = snakePositon[i - 1].y;

  }

}

3. 蛇吃到食物后变长

代码中使用了一个标志变量,如果蛇头的坐标与食物坐标重合,则标志变量置为true。每次移动后,如果标志变量为真,则将蛇的身体加1。


void Snake::eat()

{

  if ((snakePositon[0].x == foodPositon.x) && (snakePositon[0].y == foodPositon.y))

  {

    isEaten = true;

    score += 10;

  }

  if (isEaten)

  {

    bodyLength++;

    isEaten = false;

  }

}

4. 游戏结束

代码中使用了几个判断语句,分别判断蛇是否跑出界外,是否撞到自己以及是否达到游戏目标。如果游戏结束,输出分数并退出游戏。


void Snake::gameOver()

{

  if ((snakePositon[0].x < 0) || (snakePositon[0].x > X - len) || (snakePositon[0].y < 0) || (snakePositon[0].y > Y - len))

  {

    cout << "you have gone outside !" << endl;

    cout << "your score is " << score << endl;

    exit(0);

  }

  for (int i = 1;i < bodyLength;i++)

  {

    if ((snakePositon[i].x == snakePositon[0].x) && (snakePositon[i].y == snakePositon[0].y))

    {

      cout << "you have hit your body !" << endl;

      cout << "your score is " << score << endl;

      exit(0);

    }

  }

  if (bodyLength == MAX_Length)

  {

    cout << "congratulation! you win the game!" << endl;

    exit(0);

  }

}

以上就是我分享的关于C++贪吃蛇的源代码,希望对大家有帮助。当然,这只是一个基础版的小游戏,有兴趣的朋友可以继续扩展它,让它变得更加有趣。

  
  

评论区

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