#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. 567. Permutation in String【滑动窗口】

    Given two strings s1 and s2, write a function to return true if s2 contains the permutation of s1. I ...

  2. Spring对junit的整合

    Spring对junit的整合 package cn.mepu.service; import cn.mepu.config.SpringConfiguration; import cn.mepu.d ...

  3. C# ASCII码和英文字母相互转换和ASCII码对照表

    1.字母转换成ASCII码 string str = "hello"; ]; array = System.Text.Encoding.ASCII.GetBytes(str); / ...

  4. 打开桌面上的图标就会弹出"打开些文件可能会对您的计算机有害"解决方案

    问题截图 方案步骤 运行 gpedit.msc 用户配置--管理模板--windows组件--附件管理器 找到中等危险文件类型抱含列表后右键-编辑 在指定中等风险扩展名中加入你文件的扩展名 应用, 确 ...

  5. EF批量添加数据之修改SQL Server执行上限

    asp.net core 项目 打开Startup.cs services.AddDbContext<MyContext>( options => { options.UseSqlS ...

  6. 单源最短路径问题2 (Dijkstra算法)

    用邻接矩阵 /* 单源最短路径问题2 (Dijkstra算法) 样例: 5 7 0 1 3 0 3 7 1 2 4 1 3 2 2 3 5 2 4 6 3 4 4 输出: [0, 3, 7, 5, 9 ...

  7. linux安装MySQL-5.6.22-1.el6.i686.rpm-bundle.tar

    1.首先搜索系统有没有安装过mysql,使用命令 rpm -qa|grep mysql 有的话先卸载 rpm -e --nodeps  + mysql应用名字\ 2.在/usr/local下创建mys ...

  8. bzoj1059题解

    [解题思路] 因为只要验证可行性,所以考虑行和考虑列是等价的,故我们只考虑行的交换操作. 这样,拆一波点,把每一行拆成两个点,左边为原交换行,右边为目标交换行,原问题等价于能否对这个二分图进行完全匹配 ...

  9. CF16E Fish(状压+期望dp)

    [传送门[(https://www.luogu.org/problemnew/show/CF16E) 解题思路 比较简单的状压+期望.设\(f[S]\)表示\(S\)这个状态的期望,转移时挑两条活着的 ...

  10. NX二次开发-UFUN设置视图边界线显示隐藏UF_DRAW_set_border_display

    #include <uf.h> #include <uf_draw.h> #include <uf_drf.h> #include <uf_obj.h> ...