简单贪吃蛇游戏

1 贪吃蛇游戏原理

1.1 构造蛇身:定义一个坐标数组,存放的是蛇的每一节蛇身所在的坐标位置。

1.2 移动效果:每次移动时,将每一节蛇身(蛇头除外)依次往前移动一节,去掉蛇的最后一节,确定蛇的方向

1.3 移动判断:每次移动时,判断蛇头是否触碰食物,如果碰到了食物,只进行前移蛇身和增加蛇头的操作,不进行擦除蛇尾的操作
2游戏设计

2.1 游戏首页
在这里插入图片描述
在这里插入图片描述

2.2 开始游戏
在这里插入图片描述在这里插入图片描述

2.3 退出游戏
在这里插入图片描述
3.游戏实现

3.1 游戏首页

void fist_show()
{
   
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
	cout << "        贪吃蛇游戏       " << endl;
	cout << "                          " << endl;
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
	cout << "*————————————*" << endl;
	cout << "*                        *" << endl;
	cout << "*                        *" << endl;
	cout << "*       1,游戏说明      *" << endl;
	cout << "*       2,开始游戏      *" << endl;
	cout << "*       3,结束游戏      *" << endl;
	cout << "*                        *" << endl;
	cout << "*                        *" << endl;
	cout << "*————————————*" << endl;
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
	system("pause");
	system("cls");
}

游戏说明介绍

void game_instruction()
{
   
	color(5);
	cout << "*********游戏说明如下:***********" << endl;
	color(3);
	cout << "*                                *" << endl;
	cout << "*  使用↑.↓.←.→控制蛇的移动   *" << endl;
	cout << "*  不能咬到自己                  *" << endl;
	cout << "*  不能撞到墙                    *" << endl;
	cout << "*  按到空格键暂停游戏            *" << endl;
	color(5);
	cout << "*******************
  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
实现移动,吃食变长游戏把子上下左右控制蛇的方向,寻找吃的东西,每吃一口就能得到一定的积分,而且蛇的身子会越吃越长,身子越长玩的难度就越大,不能碰墙,不能咬到自己的身体,更不能咬自己的尾巴,等到了一定的分数,就能过关,然后继续玩下一关。[3] 二、“贪吃蛇”游戏的发展编辑 改变此款游戏的特别多。比如在蛋的方面,可能放上带道具的蛋,使蛇吃完后具有保护,穿墙等特种功能,而且难度逐渐变难,游戏制作的精细度和画面的质量也随着版本的提高而不断提高,且有单人及团队联机对战版本陆续推出。 参考资料游戏把子上下左右控制蛇的方向,寻找吃的东西,每吃一口就能得到一定的积分,而且蛇的身子会越吃越长,身子越长玩的难度就越大,不能碰墙,不能咬到自己的身体,更不能咬自己的尾巴,等到了一定的分数,就能过关,然后继续玩下一关。[3] 二、“贪吃蛇”游戏的发展编辑 改变此款游戏的特别多。比如在蛋的方面,可能放上带道具的蛋,使蛇吃完后具有保护,穿墙等特种功能,而且难度逐渐变难,游戏制作的精细度和画面的质量也随着版本的提高而不断提高,且有单人及团队联机对战版本陆续推出。 游戏把子上下左右控制蛇的方向,寻找吃的东西,每吃一口就能得到一定的积分,而且蛇的身子会越吃越长,身子越长玩的难度就越大,不能碰墙,不能咬到自己的身体,更不能咬自己的尾巴,等到了一定的分数,就能过关,然后继续玩下一关。[3] 二、“贪吃蛇”游戏的发展编辑 改变此款游戏的特别多。比如在蛋的方面,可能放上带道具的蛋,使蛇吃完后具有保护,穿墙等特种功能,而且难度逐渐变难,游戏制作的精细度和画面的质量也随着版本的提高而不断提高,且有单人及团队联机对战版本陆续推出。
以下是一个简单贪吃蛇游戏代码: ```csharp using UnityEngine; using System.Collections.Generic; public class SnakeGame : MonoBehaviour { public GameObject snakePrefab; public GameObject foodPrefab; private List<GameObject> snake = new List<GameObject>(); private Vector2 direction = Vector2.right; private GameObject food; void Start () { InvokeRepeating("Move", 0.3f, 0.3f); GenerateFood(); } void Update () { if (Input.GetKey(KeyCode.RightArrow) && direction != -Vector2.right) direction = Vector2.right; else if (Input.GetKey(KeyCode.DownArrow) && direction != Vector2.up) direction = -Vector2.up; else if (Input.GetKey(KeyCode.LeftArrow) && direction != Vector2.right) direction = -Vector2.right; else if (Input.GetKey(KeyCode.UpArrow) && direction != -Vector2.up) direction = Vector2.up; } void Move () { Vector2 headPosition = snake[0].transform.position; Vector2 newHeadPosition = headPosition + direction; if (IsOutOfBounds(newHeadPosition)) GameOver(); else if (IsSnake(newHeadPosition)) GameOver(); else { if (food.transform.position == newHeadPosition) { GameObject bodySegment = Instantiate(snakePrefab, newHeadPosition, Quaternion.identity); snake.Insert(0, bodySegment); GenerateFood(); } else { GameObject tail = snake[snake.Count-1]; snake.RemoveAt(snake.Count-1); tail.transform.position = newHeadPosition; snake.Insert(0, tail); } } } bool IsOutOfBounds (Vector2 position) { return position.x < -10f || position.x > 10f || position.y < -5f || position.y > 5f; } bool IsSnake (Vector2 position) { foreach (GameObject segment in snake) if (segment.transform.position == position) return true; return false; } void GameOver () { CancelInvoke(); Debug.Log("Game Over!"); } void GenerateFood () { Vector2 position = new Vector2(Random.Range(-10, 11), Random.Range(-5, 6)); while (IsSnake(position) || IsOutOfBounds(position)) position = new Vector2(Random.Range(-10, 11), Random.Range(-5, 6)); food = Instantiate(foodPrefab, position, Quaternion.identity); } } ``` 这个代码使用了Unity中的`GameObject`、`Vector2`、`Random`等类。在`Start()`函数中,我们通过调用`InvokeRepeating()`函数来定时调用`Move()`函数,实现贪吃蛇的运动。在`Update()`函数中,我们监听用户的按键输入,并根据输入改变贪吃蛇的方向。在`Move()`函数中,我们首先计算出贪吃蛇头部下一步的位置`newHeadPosition`,然后判断是否越界或与自身重合,如果是则游戏结束;否则,如果下一步的位置与食物位置重合,则在贪吃蛇头部插入一个新的身体段,并生成一个新的食物;否则,将贪吃蛇尾部移动到下一步的位置,并将其插入到贪吃蛇头部。 在`IsOutOfBounds()`函数中,我们判断一个位置是否越界。在`IsSnake()`函数中,我们判断一个位置是否与贪吃蛇身体段重合。`GameOver()`函数用于游戏结束的逻辑。`GenerateFood()`函数用于生成新的食物。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值