C++ 贪吃蛇一维
#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++ 贪吃蛇一维的更多相关文章
- [LeetCode] Design Snake Game 设计贪吃蛇游戏
Design a Snake game that is played on a device with screen size = width x height. Play the game onli ...
- 小项目特供 贪吃蛇游戏(基于C语言)
C语言写贪吃蛇本来是打算去年暑假写的,结果因为ACM集训给耽搁了,因此借寒假的两天功夫写了这个贪吃蛇小项目,顺带把C语言重温了一次. 是发表博客的前一天开始写的,一共写了三个版本,第一天写了第一版,第 ...
- Python制作AI贪吃蛇
前提:本文实现AI贪吃蛇自行对战,加上人机对战,文章末尾附上源代码以及各位大佬的链接,还有一些实现步骤,读者可再次基础上自行添加电脑VS电脑和玩家VS玩家(其实把人机对战写完,这2个都没什么了,思路都 ...
- JS贪吃蛇小游戏
效果图展示: 具体实现代码如下: (1)html部分 !DOCTYPE html> <html> <head> <meta charset="utf-8& ...
- H5游戏开发:贪吃蛇
贪吃蛇的经典玩法有两种: 积分闯关 一吃到底 第一种是笔者小时候在掌上游戏机最先体验到的(不小心暴露了年龄),具体玩法是蛇吃完一定数量的食物后就通关,通关后速度会加快:第二种是诺基亚在1997年在其自 ...
- C项目实践--贪吃蛇(1)
1.功能需求分析 1.1主要功能 i.游戏欢迎界面 ii.游戏执行功能,包括计算得分 iii.游戏结束界面 1.2游戏基本规则 游戏开始时蛇的长度是4个单位,并且按照当前方向不停地移动.移动范围是CO ...
- C - 简易贪吃蛇的编写
不多废话,直接进入正题——用C编写简易贪吃蛇.附上拙劣的源码 * c-snake * 首先说明使画面动起来的原理:通过 system("cls"); 清除当前控制台的显示,再pri ...
- Python-pygame案例AI贪吃蛇
# coding: utf-8 import pygame,sys,time,random from pygame.locals import * # 定义颜色变量 redColour = pygam ...
- Python制作AI贪吃蛇,很多很多细节、思路都写下来了!
前提:本文实现AI贪吃蛇自行对战,加上人机对战,读者可再次基础上自行添加电脑VS电脑和玩家VS玩家(其实把人机对战写完,这2个都没什么了,思路都一样) 实现效果: 很多人学习python,不知道从何学 ...
随机推荐
- Unity中动态绘制圆柱体
问题背景 上次写了动态绘制立方体,这最近又来了新功能,绘制圆柱(风筒),要求是给了很多节点,根据节点去动态绘制风筒,风筒就是圆柱连接而成的,可以理解为管道,还有就是拐角处注意倒角,圆润过度过来. 实现 ...
- VS2013 蛋疼的“AJAX Control Toolkit”安装过程
1.AJAX Control Toolkit 下载问题 方法一. 在vs2013中 工具->NuGet程序包管理器->管理解决方案的NuGet程序包 搜索 ajax z找到 AjaxCon ...
- linux 定时执行sql
说明: 放执行脚本的路径是: /home/vagrant/ssh 文件夹结构: /home |_ vagrant |__ ssh |___ move_order_old_data.sh |___ mo ...
- [转]走进 LINQ 的世界
序 在此之前曾发表过三篇关于 LINQ 的随笔: 进阶:<LINQ 标准查询操作概述>(强烈推荐) 技巧:<Linq To Objects - 如何操作字符串> 和 <L ...
- 安装监控MongoDB的Python安装包时候报错:HTTP Error 403: SSL is required
安装pymongo-2.3.tar.gz,执行命令python setup.py install报错: HTTP Error 403: SSL is required 分析原因:安装需要下载这个dis ...
- CDH 下线节点
rm -rf /var/web/com/public 杜绝这种删除方式 停止集群下线的节点 步骤: 1 停止主机上的角色 2 解除授权 3 从集群中删除 4 为了避免数据丢失,必须一台一台的进行,如 ...
- Js数据类型和运算符
1.数据类型 原始类型:数值 字符串 布尔值: 复杂类型:对象: 数值(number) 特殊的数值:NaN,NaN不等于任何 ...
- thinkphp读取配置
无论何种配置文件,定义了配置文件之后,都统一使用系统提供的C方法(可以借助Config单词来帮助记忆)来读取已有的配置. 获取已经设置的参数值:C('参数名称') 例如, $model = C('UR ...
- Linux命令(1):date
查看时间: date "+%Y-%m-%d %H:%M:%S" 参数说明: %n : 下一行 %t : 跳格 %H : 小时(00..23) %I : 小时(01..12) %k ...
- sshpass批量分发ssh秘钥
首先安装sshpass: yum -y install sshpass 单条命令: sshpass -p“password” ssh-copy-id -i /root/.ssh/id_rsa.pub ...