C++ 简单的控制台贪吃蛇小游戏
由于比较懒,所以不怎么写,觉得这样不应该。我应该对自己学的做出整理,不管是高端低端,写出来是自己的。
// 贪吃蛇.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include<iostream>
#include"Windows.h"
#include<ctime> nData g_Snake[];
nData g_Food; using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int nKeyState = ;
int nSnakeMove = ;
int nSnakeLeng = ;
bool bSnake = false; //初始化食物
srand((unsigned)time(NULL));
g_Food.X = rand() % + ;
g_Food.Y = rand() % + ; //初始化蛇头 g_Snake[].X = ;
g_Snake[].Y = ; while (true)
{
system("CLS");
//开始菜单键盘输入
if (nKeyState < )
{
if (KEY_DOWN(VK_DOWN))
{
nKeyState++;
if (nKeyState > )
{
nKeyState = ;
}
}
else if (KEY_DOWN(VK_UP))
{
nKeyState--;
if (nKeyState < )
{
nKeyState = ;
}
}
else if (KEY_DOWN(VK_RETURN))
{
if (nKeyState == e_Menu_StartGame)
{
nKeyState = e_GO_StartGame;
}
}
}
//蛇动作
else if (nKeyState == e_GO_StartGame)
{
//备份蛇头
g_Snake[].XOD = g_Snake[].X;
g_Snake[].YOD = g_Snake[].Y; if (KEY_DOWN(VK_UP))
{
if (nSnakeMove == e_Move_Down)
{
nSnakeMove = e_Move_Down;
}
else
{
nSnakeMove = e_Move_Up;
}
}
else if (KEY_DOWN(VK_DOWN))
{
if (nSnakeMove == e_Move_Up)
{
nSnakeMove = e_Move_Up;
}
else
{
nSnakeMove = e_Move_Down;
}
}
else if (KEY_DOWN(VK_LEFT))
{ if (nSnakeMove == e_Move_Right)
{
nSnakeMove = e_Move_Right;
}
else
{
nSnakeMove = e_Move_Left;
}
}
else if (KEY_DOWN(VK_RIGHT))
{
if (nSnakeMove == e_Move_Left)
{
nSnakeMove = e_Move_Left;
}
else
{
nSnakeMove = e_Move_Right;
}
}
}
switch (nSnakeMove)
{
case e_Move_Up: g_Snake[].X--; break;
case e_Move_Down: g_Snake[].X++; break;
case e_Move_Left: g_Snake[].Y--; break;
case e_Move_Right: g_Snake[].Y++; break;
} //蛇撞墙
if (nGameFrame[g_Snake[].X][g_Snake[].Y] == )
{
nKeyState = e_GO_GameOver;
}
//过关
if (nSnakeLeng == )
{
nKeyState = e_Go_WinGame;
} //蛇吃到自己`
for (int i = ; i <= nSnakeLeng; i++)
{
if (g_Snake[i].X == g_Snake[].X&&g_Snake[i].Y == g_Snake[].Y)
{
nKeyState = e_GO_GameOver;
}
} //遍历蛇身位置
for (int i = ; i < nSnakeLeng; i++)
{
g_Snake[i].XOD = g_Snake[i].X;
g_Snake[i].YOD = g_Snake[i].Y;
g_Snake[i].X = g_Snake[i - ].XOD;
g_Snake[i].Y = g_Snake[i - ].YOD;
} //吃到食物
if (g_Food.X==g_Snake[].X&&g_Food.Y==g_Snake[].Y)
{
srand((unsigned)time(NULL));
g_Food.X = rand() % + ;
g_Food.Y = rand() % + ;
nSnakeLeng++;
} //渲染.
if (nKeyState < )
{
cout << "■■■■■■■■■■■■■■■■■" << endl;
cout << "■■■■■■■■■■■■■■■■■" << endl;
cout << "■■■■ ■■■■" << endl;
if (nKeyState == e_Menu_StartGame)
{
cout << "■■■■ >-开始游戏 ■■■■" << endl;
cout << "■■■■ 游戏设置 ■■■■" << endl;
cout << "■■■■ 游戏结束 ■■■■" << endl;
}
else if (nKeyState == e_Menu_GameSet)
{
cout << "■■■■ 开始游戏 ■■■■" << endl;
cout << "■■■■ >-游戏设置 ■■■■" << endl;
cout << "■■■■ 游戏结束 ■■■■" << endl;
}
else if (nKeyState == e_Menu_EndGame)
{
cout << "■■■■ 开始游戏 ■■■■" << endl;
cout << "■■■■ 游戏设置 ■■■■" << endl;
cout << "■■■■ >-游戏结束 ■■■■" << endl;
}
cout << "■■■■ ■■■■" << endl;
cout << "■■■■■■■■■■■■■■■■■" << endl;
cout << "■■■■■■■■■■■■■■■■■" << endl;
}
else if (nKeyState==e_GO_StartGame)
{
for (int i = ; i < ; i++)
{
for (int a = ; a < ; a++)
{
for (int n = ; n < nSnakeLeng; n++)
{
if (i == g_Snake[n].X&&a == g_Snake[n].Y)
{
bSnake = true;
break;
}
else
{
bSnake = false;
}
}
if (nGameFrame[i][a] == )
{
cout << "■";
}
else if (i == g_Snake[].X&&a == g_Snake[].Y)
{
cout << "◎";
}
else if (bSnake == true)
{
cout << "●";
}
else if (i == g_Food.X&&a == g_Food.Y)
{
cout << "◆";
}
else
{
cout << " ";
}
}
cout << endl;
}
}
else if (nKeyState == e_GO_GameOver)
{
cout << "GAME OVER"<<endl;
}
else if (nKeyState==e_Go_WinGame)
{
cout << "老铁666!"<<endl;
} }
return ;
}
控制台贪吃蛇小游戏
C++ 简单的控制台贪吃蛇小游戏的更多相关文章
- 一个控制台贪吃蛇小游戏(wsad控制移动)
/******************************************** * 程序名称:MR.DUAN 的贪吃蛇游戏(链表法) * 作 者:WindAutumn <flutti ...
- 贪吃蛇小游戏-----C语言实现
1.分析 众所周知,贪吃蛇游戏是一款经典的益智游戏,有PC和手机等多平台版本,既简单又耐玩.该游戏通过控制蛇头方向吃食物,从而使得蛇变得越来越长,蛇不能撞墙,也不能装到自己,否则游戏结束.玩过贪吃蛇的 ...
- Java GUI学习,贪吃蛇小游戏
JAVA GUI练习 贪吃蛇小游戏 前几天虽然生病了,但还是跟着狂神学习了GUI的方面,跟着练习了贪吃蛇的小项目,这里有狂神写的源码点我下载,还有我跟着敲的点我下载,嘿嘿,也就注释了下重要的地方,这方 ...
- JS高级---案例:贪吃蛇小游戏
案例:贪吃蛇小游戏 可以玩的小游戏,略复杂,过了2遍,先pass吧 先创建构造函数,再给原型添加方法.分别创建食物,小蛇和游戏对象. 食物,小蛇的横纵坐标,设置最大最小值,运动起来的函数,按上下左右键 ...
- 用GUI实现java版贪吃蛇小游戏
项目结构 新建一个JFrame窗口,作为程序入口 public class GameStart{ public static void main(String[] args) { JFrame jFr ...
- Java 用java GUI写一个贪吃蛇小游戏
目录 主要用到 swing 包下的一些类 上代码 游戏启动类 游戏数据类 游戏面板类 代码地址 主要用到 swing 包下的一些类 JFrame 窗口类 JPanel 面板类 KeyListener ...
- JavaScript实践-简单的贪吃蛇小游戏
实现逻辑: //获取Html中的格子(行,列) //建立数组存储所有格子(x,y) //建立数组用于存储蛇身(x,y) //生成随机坐标(x,y)的函数 //随机创建蛇身并存储到蛇身数组 //创建食物 ...
- 用python+pygame写贪吃蛇小游戏
因为python语法简单好上手,前两天在想能不能用python写个小游戏出来,就上网搜了一下发现了pygame这个写2D游戏的库.了解了两天再参考了一些资料就开始写贪吃蛇这个小游戏. 毕竟最开始的练手 ...
- html5面向对象做一个贪吃蛇小游戏
canvas加面向对象方式的贪吃蛇 2016-08-25 这个小游戏可以增加对面向对象的理解,可以加强js逻辑能力,总之认真自己敲一两遍收获还是不少啊!!适合刚学canvas的同学练习!! 废话不多说 ...
随机推荐
- Codeforces Round #553 (Div. 2)
传送门 A. Maxim and Biology 题意: 给出一个串s,问最少需要多少步操作使得串s包含"ACTG"这个子串,输出最少操作次数: 题解: 枚举每个位置 i,求出将 ...
- Android sdk platform,sdk tools,sdk Build tools,sdk platform tools 的关系
1. sdk platform 简单理解为系统版本 最新级别: 28:Android 9 27:Android 8.1 26:Android 8.0 25:Android 7.1 24:Android ...
- (最短路 Floyd) P2910 [USACO08OPEN]寻宝之路Clear And Present Danger 洛谷
题意翻译 题目描述 农夫约翰正驾驶一条小艇在牛勒比海上航行. 海上有N(1≤N≤100)个岛屿,用1到N编号.约翰从1号小岛出发,最后到达N号小岛. 一张藏宝图上说,如果他的路程上经过的小岛依次出现了 ...
- NLTK基础
Python上著名的⾃然语⾔处理库 ⾃带语料库,词性分类库 ⾃带分类,分词,等等功能 强⼤的社区⽀持 还有N多的简单版wrapper 安装语料库 # 方式一 import nltk nltk.down ...
- 关于微信登录授权获取unionid的方法
前言:微信登录授权是目前普遍存在于小程序的,还有一种静默授权方式是微信提供的但是不推荐使用,由于不同设备登录openid是不同的那么我们应该怎样拿到一个唯一的ID呢,下面做分享 wxml代码 < ...
- 查看linux的cpu信息
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 # 查看物理CPU个数 cat /proc/cpuinfo| ...
- div的默认position值是静态的static
div的默认position值是静态的static,如果相对父元素使用Position:absolute的话,需要手动在父元素上添加Position.
- python学习04
数据类型-list,tuple 1) 1.1.list的表现方法:[1,2,3,4,5,6] 1.2.计算list的长度用 len() 1.3 list中的索引 a =[1,2,3,4,5] a[1] ...
- 《Java编程思想第四版完整中文高清版.pdf》-笔记
D.2.1 安插自己的测试代码 插入下述“显式”计时代码,对程序进行评测: long start = System.currentTimeMillis(); // 要计时的运算代码放在这儿 long ...
- 【归纳】正则表达式及Python中的正则库
正则表达式 正则表达式30分钟入门教程 runoob正则式教程 正则表达式练习题集(附答案) 元字符\b代表单词的分界处,在英文中指空格,标点符号或换行 例子:\bhi\b可以用来匹配hi这个单词,且 ...