#include <iostream>
#include <conio.h>
#include <windows.h>
#include <time.h> int g_Dir = ;
#define UP 0
#define DOWN 1
#define LEFT 2
#define RIGHT 3 struct FOOD
{
int X = ;
int Y = ;
bool State = ;
}Food; //方向控制
void SnekeMove()
{
if (::GetAsyncKeyState(VK_UP) & )
g_Dir = ;
if (::GetAsyncKeyState(VK_DOWN) & )
g_Dir = ;
if (::GetAsyncKeyState(VK_LEFT) & )
g_Dir = ;
if (::GetAsyncKeyState(VK_RIGHT) & )
g_Dir = ;
} //主函数
int main()
{
srand((unsigned int)time(NULL));
int W = ;
int H = ;
int Len = ;
int Map[ * ] = { };
int Snake[] = { };
//Snake[0] = 2;//为蛇头 for (int i = ; i < Len; i++)
{
Snake[i] = Len - i - ;
}
Food.X = W / ;
Food.Y = H / ;
Map[Food.Y * W + Food.X] = ; const char *SNAKE[] = { " ", "■" ,"★"};
while (true)
{
system("cls");
for (int i = ; i < Len; i++)
{
// 2 1 0
// 1 1 1 // 3 2 1
// 0 1 1 1
//这里需要注意
Map[Snake[i]] = ;
}
Map[Food.Y * W + Food.X] = ;
if (Map[Snake[]] == Map[Food.Y * W + Food.X])
{
Map[Food.Y * W + Food.X] = ;
do
{
bool FoodState = false;
Food.X = rand() % W;
Food.Y = rand() % H;
for (int i = ; i < Len; i++)
{
if (Map[Food.Y * W + Food.X] != Map[Snake[i]])
{
FoodState = true;
}
}
if (FoodState)
{
Map[Food.Y * W + Food.X] = ;
break;
}
} while (true);
Len++;
} for (int i = ; i < H; i++)
{
for (int j = ; j < W; j++)
{
//蛇头在地图上的坐标
if (i * W + j == Snake[])
{
if (i == H - || j == W - )
{
//撞墙
system("pause");
return ;
}
}
}
} for (int i = ; i < H; i++)
{
for (int j = ; j < W; j++)
{
std::cout << SNAKE[Map[i * W + j]];
}
std::cout << std::endl;
}
std::cout << std::endl;
//for (int i = 0; i < Len; i++)
//{
// std::cout << Snake[i]<<" ";
//}
//std::cout << std::endl;
std::cout <<"蛇的长度为 : "<<Len<<std::endl;
memset(Map, , sizeof(Map)); SnekeMove(); for (int i = Len; i > ; i--)
{
// 2 1 0
//默认往右挪
// 2 2 1 0
//后面++
// 3 2 1 0
//完成一次移动
Snake[i] = Snake[i - ];
/*
比如往下
// 3 2 1 0
// 23 3 2 1 0
*/
}
if (g_Dir == UP)
{
Snake[] -= W;
}
if (g_Dir == DOWN)
{
Snake[] += W;
}
if (g_Dir == LEFT)
{
Snake[]--;
}
if (g_Dir == RIGHT)
{
Snake[]++;
} Sleep();
} //https://www.bilibili.com/video/av29007126/?spm_id_from=333.788.videocard.1
system("pause");
return ;
}

C++ 贪吃蛇一维的更多相关文章

  1. [LeetCode] Design Snake Game 设计贪吃蛇游戏

    Design a Snake game that is played on a device with screen size = width x height. Play the game onli ...

  2. 小项目特供 贪吃蛇游戏(基于C语言)

    C语言写贪吃蛇本来是打算去年暑假写的,结果因为ACM集训给耽搁了,因此借寒假的两天功夫写了这个贪吃蛇小项目,顺带把C语言重温了一次. 是发表博客的前一天开始写的,一共写了三个版本,第一天写了第一版,第 ...

  3. Python制作AI贪吃蛇

    前提:本文实现AI贪吃蛇自行对战,加上人机对战,文章末尾附上源代码以及各位大佬的链接,还有一些实现步骤,读者可再次基础上自行添加电脑VS电脑和玩家VS玩家(其实把人机对战写完,这2个都没什么了,思路都 ...

  4. JS贪吃蛇小游戏

    效果图展示: 具体实现代码如下: (1)html部分 !DOCTYPE html> <html> <head> <meta charset="utf-8& ...

  5. H5游戏开发:贪吃蛇

    贪吃蛇的经典玩法有两种: 积分闯关 一吃到底 第一种是笔者小时候在掌上游戏机最先体验到的(不小心暴露了年龄),具体玩法是蛇吃完一定数量的食物后就通关,通关后速度会加快:第二种是诺基亚在1997年在其自 ...

  6. C项目实践--贪吃蛇(1)

    1.功能需求分析 1.1主要功能 i.游戏欢迎界面 ii.游戏执行功能,包括计算得分 iii.游戏结束界面 1.2游戏基本规则 游戏开始时蛇的长度是4个单位,并且按照当前方向不停地移动.移动范围是CO ...

  7. C - 简易贪吃蛇的编写

    不多废话,直接进入正题——用C编写简易贪吃蛇.附上拙劣的源码 * c-snake * 首先说明使画面动起来的原理:通过 system("cls"); 清除当前控制台的显示,再pri ...

  8. Python-pygame案例AI贪吃蛇

    # coding: utf-8 import pygame,sys,time,random from pygame.locals import * # 定义颜色变量 redColour = pygam ...

  9. Python制作AI贪吃蛇,很多很多细节、思路都写下来了!

    前提:本文实现AI贪吃蛇自行对战,加上人机对战,读者可再次基础上自行添加电脑VS电脑和玩家VS玩家(其实把人机对战写完,这2个都没什么了,思路都一样) 实现效果: 很多人学习python,不知道从何学 ...

随机推荐

  1. POJ 2135 /// 最小费用流最大流 非负花费 BellmanFord模板

    题目大意: 给定一个n个点m条边的无向图 求从点1去点n再从点n回点1的不重叠(同一条边不能走两次)的最短路 挑战P239 求去和回的两条最短路很难保证不重叠 直接当做是由1去n的两条不重叠的最短路 ...

  2. Excel函数——ANSI字符集与Code、Char、Asc函数

    小叙背景 Windows系统下,默认的字符集为ANSI,该字符编码方式在不同语言环境下采用不同的编码方案,在中文系统下ANSI编码是GBK.ANSI由ASCII扩展而来,ANSI下无论何种具体的编码方 ...

  3. forEarch 和 for in

    forEarch 遍历数组,遍历的过程中不能被终止,必须每一个值遍历一遍后才能停下来,for  in遍历对象中的属性 代码: <!DOCTYPE html> <html lang=& ...

  4. jq-demo-轮播图

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. SQLServer2008上的SDE备份和还原

    一.备份 右键数据库>任务>备份.选择完整模式,导出为xxx.bak文件即可. 二.还原 1.创建sde用户名,新建同名数据库xxx,并指定sde为xxx的拥有者. 2.在master上创 ...

  6. Servlet 上传图片

    目录 Servlet 上传图片 预备 需求包 pom 前端代码 Servlet 上传图片 预备 需求包 commons-fileupload -用于上传 jstl -用于jsp页面遍历 servlet ...

  7. 【JZOJ6403】a

    description analysis 考虑\((0,0,0)\)走到某个点\((i,j,k)\)的贡献,相当于插板问题 \(i+j\)个空插\(k\)个板可以有空,\(i\)个空插\(j\)个板可 ...

  8. 【基础】Hint控制语句执行

    mysql常用的hint对于经常使用oracle的朋友可能知道,oracle的hint功能种类很多,对于优化sql语句提供了很多方法.同样,在mysql里,也有类似的hint功能.下面介绍一些常用的. ...

  9. JavaWeb学习篇之----Tomcat中配置数字证书以及网络传输数据中的密码学知识

    今天是学习JavaWeb的第二天,我们来了解什么呢?就了解一下Tomcat中配置数字证书的相关内容,但是在说这部分内容的时候,我们貌似得先说一下数字证书的相关概念,那说到数字证书的时候我们还得了解一些 ...

  10. NX二次开发-UFUN输入表达式TAG,得到表达式值UF_MODL_ask_exp_tag_value

    NX9+VS2012 #include <uf.h> #include <uf_modl.h> UF_initialize(); //创建表达式 tag_t NewExpTag ...