C++ 简单的控制台贪吃蛇小游戏

时间:2022-03-12 01:44:08

  由于比较懒,所以不怎么写,觉得这样不应该。我应该对自己学的做出整理,不管是高端低端,写出来是自己的。

 // 贪吃蛇.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++ 简单的控制台贪吃蛇小游戏的更多相关文章

  1. 一个控制台贪吃蛇小游戏(wsad控制移动)

    /******************************************** * 程序名称:MR.DUAN 的贪吃蛇游戏(链表法) * 作 者:WindAutumn <flutti ...

  2. 贪吃蛇小游戏-----C语言实现

    1.分析 众所周知,贪吃蛇游戏是一款经典的益智游戏,有PC和手机等多平台版本,既简单又耐玩.该游戏通过控制蛇头方向吃食物,从而使得蛇变得越来越长,蛇不能撞墙,也不能装到自己,否则游戏结束.玩过贪吃蛇的 ...

  3. Java GUI学习&comma;贪吃蛇小游戏

    JAVA GUI练习 贪吃蛇小游戏 前几天虽然生病了,但还是跟着狂神学习了GUI的方面,跟着练习了贪吃蛇的小项目,这里有狂神写的源码点我下载,还有我跟着敲的点我下载,嘿嘿,也就注释了下重要的地方,这方 ...

  4. JS高级---案例:贪吃蛇小游戏

    案例:贪吃蛇小游戏 可以玩的小游戏,略复杂,过了2遍,先pass吧 先创建构造函数,再给原型添加方法.分别创建食物,小蛇和游戏对象. 食物,小蛇的横纵坐标,设置最大最小值,运动起来的函数,按上下左右键 ...

  5. 用GUI实现java版贪吃蛇小游戏

    项目结构 新建一个JFrame窗口,作为程序入口 public class GameStart{ public static void main(String[] args) { JFrame jFr ...

  6. Java 用java GUI写一个贪吃蛇小游戏

    目录 主要用到 swing 包下的一些类 上代码 游戏启动类 游戏数据类 游戏面板类 代码地址 主要用到 swing 包下的一些类 JFrame 窗口类 JPanel 面板类 KeyListener ...

  7. JavaScript实践-简单的贪吃蛇小游戏

    实现逻辑: //获取Html中的格子(行,列) //建立数组存储所有格子(x,y) //建立数组用于存储蛇身(x,y) //生成随机坐标(x,y)的函数 //随机创建蛇身并存储到蛇身数组 //创建食物 ...

  8. 用python&plus;pygame写贪吃蛇小游戏

    因为python语法简单好上手,前两天在想能不能用python写个小游戏出来,就上网搜了一下发现了pygame这个写2D游戏的库.了解了两天再参考了一些资料就开始写贪吃蛇这个小游戏. 毕竟最开始的练手 ...

  9. html5面向对象做一个贪吃蛇小游戏

    canvas加面向对象方式的贪吃蛇 2016-08-25 这个小游戏可以增加对面向对象的理解,可以加强js逻辑能力,总之认真自己敲一两遍收获还是不少啊!!适合刚学canvas的同学练习!! 废话不多说 ...

随机推荐

  1. java中Integer&comma;String判断相等与integer的比较大小

    package sfk.bbs.test.springjsbctempletTest; import static org.junit.Assert.*; import org.junit.Test; ...

  2. selenium-webdriver&lpar;python&rpar; &lpar;十五&rpar; -- 鼠标事件

    本节重点: ActionChains 类 context_click()  右击 double_click()   双击 drag_and_drop()  拖动 测试的产品中有一个操作是右键点击文件列 ...

  3. Java学习之字符串的创建

    转自:http://lavasoft.blog.51cto.com/62575/80034/ Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,很多时 ...

  4. 开发Nginx模块Helloworld

    本文是对<深入理解Nginx>一书中的实例进行实战时的记录. 1模块目录结构 my_test_module/ ├── config └── ngx_http_mytest_module.c ...

  5. 前端周报:前端面试题及答案总结;JavaScript参数传递的深入理解

    1.2017前端面试题及答案总结 |掘金技术征文 "金三银四,金九银十",用来形容求职最好的几个月.但是随着行业的饱和,初中级前端er就业形势不容乐观. 行业状态不可控,我们能做的 ...

  6. &lbrack;转帖&rsqb;git命令参考手册

                      git init                                                  # 初始化本地git仓库(创建新仓库) git ...

  7. java 多线程(生产者消费者)

    转 https://www.oschina.net/code/snippet_111708_25438 这个问题挺经典,我这个解法的本质在于将问题抽象为生产者消费者模型,但是是一个特殊的生产者消费者模 ...

  8. Jlink使用技巧系列教程索引

    近两个月,写写停停,总算完成了这个系列的教程,不容易啊! Jlink使用技巧系列文章: 以下是各文章的链接,直接点击即可进入阅读. Jlink使用技巧之合并烧写文件 Jlink使用技巧之烧写SPI F ...

  9. 3&period;5 MIPS体系结构

    计算机组成 3 指令系统体系结构 3.5 MIPS体系结构 MIPS是精简指令系统的代表,采用了与X86相反的设计理念,并引领了精简指令系统的潮流,那就让我们一起来看一看这究竟是怎么一回事. 要探讨M ...

  10. STL中list中push&lowbar;back&lpar;对象&rpar;保存对象的内部实现

    STL中list中push_back(对象)保存对象的内部实现 1. 在容器中,存放的是对象拷贝 #include<iostream> #include<list> using ...