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,不知道从何学 ...
随机推荐
- JQuery日记6.7 Javascript异步模型(二)
异步模型看起来非常美,但事实上它也是有天生缺陷的.看以下代码 try { setTimeout( function(){ throw new Error( '你抓不到我的!' ); }, 100); ...
- python接口自动化(响应对象方法)
python接口自动化(响应对象方法) 一.encoding作用 获取请求的编码(在不设置响应编码时,响应的信息默认使用的是请求的编码格式):r.encoding 设置响应的编码:r.encoding ...
- 前端 JavaScript BOM & DOM
内容目录: 1. BOM 2. DOM BOM(Browser Object Model)是指浏览器对象模型,它使 JavaScript 有能力与浏览器进行"对话". DOM (D ...
- SQL Injection简介
- python之next和send用法详解
如果send不携带参数,那么send(None) 和next()的作用的相同的,如: def a(): print('aaa') p = ' #print(p) print('bbb') r = a( ...
- No parser no filepath given问题解决
关于 vue 项目 run dev 的时候,控制台警告: No parser and no filepath given, using 'babylon' the parser now but thi ...
- leetcood学习笔记-203-移除链表元素
题目描述: 方法:#在改pre链表时 head中的值也改变 class Solution(object): def removeElements(self, head, val): "&qu ...
- Batch - attrib 命令
原文地址:CMD中使用attrib命令设置文件只读.隐藏属性详解 本文介绍一个cmd下的一个attrib.exe的小程序,它可以用来设置文件的属性.我们知道文件的属性有只读.隐藏.系统.存档和无内容索 ...
- spring mvc hibernate spring 整合的增删改查+后台校验+bootstrap
整合之前先知道大概的思路,首先要知道每个框架的重点要点. 1.首先我们从数据库开始 --创建数据库 create database gs --创建表 create table food ( id ,) ...
- thinkphp 上传安全
网站的上传功能也是一个非常容易被攻击的入口,所以对上传功能的安全检查是尤其必要的. 大理石平台支架 系统提供的上传类Think\Upload提供了安全方面的支持,包括对文件后缀.文件类型.文件大小以及 ...