将代码过程中比较重要的内容做个珍藏,下边代码是关于C++编写的在控制台界面操作的吃豆子游戏的代码,希望能对各朋友有所用处。

#include "lib.h"#pragma onceextern int level;int main()
{FOOD food;WALL wall;BODY CurPos;HALL hall;int iExit = 0;while(1){if(iExit)break;Init(&food,&wall,&CurPos,&hall);MakeWall(&wall);while(1){Sleep(200);int res = Move(&food,&wall,&CurPos);break;{iExit = 1;break;}ShowScore(&CurPos,&food);}}return 0;
}lib.h#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>#define KEY_UP               WM_USER + 1
#define KEY_DOWN            WM_USER + 2
#define KEY_LEFT            WM_USER + 3
#define KEY_RIGHT           WM_USER + 4#define DIRECTION_UP        WM_USER + 5
#define DIRECTION_DOWN      WM_USER + 6
#define DIRECTION_LEFT      WM_USER + 7
#define DIRECTION_RIGHT     WM_USER + 8#define PRINT_WALL          WM_USER + 9
#define PRINT_FOOD          WM_USER + 10
#define PRINT_BODY          WM_USER + 11
#define PRINT_CLEAN         WM_USER + 12#define KNOCK_WALL         WM_USER + 13
#define KNOCK_FOOD          WM_USER + 14struct POS
{int x;int y;
};
struct WALL
{POS pos[9999];int len;
};
struct FOOD
{POS pos[8];int len;int IsHidden;
};
struct BODY
{POS pos;int Direction;
};
struct HALL{POS pos[200];int len;
};lib.cpp#include "lib.h"#pragma onceHANDLE hMain_Out;
HANDLE hMain_In;
CONSOLE_CURSOR_INFO info;
int iBeans = 0;
int level = 1;short wall[17][24] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,-1,0,0,0,0,0,-1,-1,-1,0,0,0,-1,0,0,0,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,-1,0,0,0,0,0,-1,-1,-1,-1,-1,0,-1,-1,-1,-1,-1,0,-1,0,-1,-1,-1,-1,-1,-1,-1,0,0,0,-1,0,0,-1,0,-1,0,0,0,0,-1,0,-1,-1,-1,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,0,0,0,0,-1,0,0,0,-1,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,-1,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,-1,0,0,-1,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,0,-1,0,0,-1,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,0,-1,-1,-1,-1,0,-1,-1,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,0,0,0,0,-1,-1,-1,-1,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,-1,-1,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
{if(KNOCK_WALL == TYPE){int i;for(i = 0 ; i < pWall->len ; ++i){if(IsOver(pBody->pos,pWall->pos[i],KNOCK_WALL))}}else if(KNOCK_FOOD == TYPE){int i;for(i = 1 ; i <= pFood->len ; ++i){if(IsOver(pFood->pos[i],pBody->pos,KNOCK_WALL))}}return 0;
}{int iKey = GetKey();return -1;if(iKey){pBody->Direction = iKey + 4;iKey = 0;}if(0 == iKey){if(DIRECTION_UP == pBody->Direction)--pBody->pos.y;else if(DIRECTION_DOWN == pBody->Direction)++pBody->pos.y;else if(DIRECTION_LEFT == pBody->Direction)--pBody->pos.x;else if(DIRECTION_RIGHT == pBody->Direction)++pBody->pos.x;}if(IsKnock(pWall,pBody,pFood,KNOCK_WALL)){return 0;}int ix = IsKnock(pWall,pBody,pFood,KNOCK_FOOD);if(ix){++iBeans;int i;for(i = ix ; i <= (pFood->len - 1) ; ++i)pFood->pos[i] = pFood->pos[i + 1];--(pFood->len);{++level;return 1;}}Print(&pBody->pos,PRINT_BODY);return 0;
}int IsOver(POS pos1,POS pos2,int TYPE)
{if((pos1.x == pos2.x && pos1.y == pos2.y) || (pos2.x + 1 == pos1.x && pos2.y == pos1.y))return 1;return 0;
}{int x,y;int ix = 0;for(x = 0 ; x <= 16 ; ++x){for(y = 0 ; y <= 23 ; ++y){if(0 == wall[x][y]){pWall->pos[ix].y = x;Print(&pWall->pos[ix++],PRINT_WALL);}}}}{hMain_Out = GetStdHandle(STD_OUTPUT_HANDLE);hMain_In = GetStdHandle(STD_INPUT_HANDLE);GetConsoleCursorInfo(hMain_Out,&info);info.bVisible = FALSE;SetConsoleCursorInfo(hMain_Out,&info);pFood->len = 0;pWall->len = 0;pHall->len = 0;system("mode con cols=50 lines=21");int x,y;int ix = 0;for(x = 0 ; x < 17 ; ++x){for(y = 0 ; y < 24 ; ++y){{pHall->pos[ix++].y = x;}}}pHall->len = ix;pBody->pos.x = 2;pBody->pos.y = 1;pBody->Direction = DIRECTION_DOWN;printf("%d %dn",pHall->pos[0].x,pHall->pos[0].y);int i;MakeFood(pHall,pFood);for(i = 1 ; i <= 7 ; ++i){Print(&pFood->pos[i],PRINT_FOOD,i);}}int GetKey()
{if(GetAsyncKeyState(VK_UP))return KEY_UP;if(GetAsyncKeyState(VK_DOWN))return KEY_DOWN;if(GetAsyncKeyState(VK_LEFT))return KEY_LEFT;if(GetAsyncKeyState(VK_RIGHT))return KEY_RIGHT;if(GetAsyncKeyState(VK_ESCAPE))}{COORD pos;pos.X = p->x;pos.Y = p->y;SetConsoleCursorPosition(hMain_Out,pos);if(PRINT_WALL == TYPE)printf("■");else if(PRINT_FOOD == TYPE)printf("%d",ix);else if(PRINT_BODY == TYPE)printf("1");else if(PRINT_CLEAN == TYPE)printf(" ");
}{COORD pos;pos.X = 0;pos.Y = 18;SetConsoleCursorPosition(hMain_Out,pos);printf("tBeans left : %d | pos : x=%d,y=%dn",pFood->len,pBody->pos.x,pBody->pos.y);printf("ttLevel : %d",level);
}{srand((unsigned)time(NULL));int tot;for(tot = 1 ; tot <= 7 ; ++tot){pFood->pos[tot].x = pHall->pos[ixFood].x;pFood->pos[tot].y = pHall->pos[ixFood].y;}pFood->len = 7;
}

C++编写的在控制台界面操作的吃豆子游戏的代码相关推荐

  1. 吃豆豆游戏的C语言程序码,C++实现基于控制台界面的吃豆子游戏

    本文实例讲述了C++实现基于控制台界面的吃豆子游戏.分享给大家供大家参考.具体分析如下: 程序运行界面如下所示: ESC键可退出游戏. main.cpp源文件如下: #include "li ...

  2. 控制台界面的吃豆子游戏

    ESC键可退出游戏. main.cpp #include "lib.h"#pragma onceextern int level;int main() {FOOD food;WAL ...

  3. java编写某计算器控制台程序_计算器 - 进阶的憨狗 - 博客园

    源起 最近在看程杰著作的<大话设计模式>,全书以小菜和大鸟对话的形势,由浅入深的讲解程序的设计思想,影射出一个个设计模式.我之前虽然也使用过一些设计模式,但没有系统的学习.整理.总结,现从 ...

  4. sas软件使用mysql吗_图解SAS软件统计分析(一):基本知识和界面操作

    图解SAS软件统计分析(一):基本知识和界面操作.本文介绍常用统计分析软件SAS,大多数研究者一听到SAS要编程,就想着会很难,但当你熟悉SAS软件的基本操作界面之后,基本上通过拷贝复制就能得到你想要 ...

  5. (阿里云笔记)轻量应用服务器控制台界面的使用

    目录 1.前言 2.控制台选项概况 3.站点设置--域名 4.安全--防火墙 5.管理服务器密码 6.管理密钥 7.重置系统 8.管理快照 9.自定义镜像 10.总结 1.前言         本章介 ...

  6. java如何让控制台不输出报错_Java 控制台输入输出操作记录

    Java.io 包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io 包中的流支持很多种格式,比如:基本类型.对象.本地化字符集等等. 一个流可以理解为一个数据 ...

  7. 编写精美的聊天界面(左边显示接收消息,右边显示发送消息)(项目已上传GitHub)

    附上我的GitHub项目地址: https://github.com/Skymqq/UIChat.git 学习Android开发,了解一个精美聊天界面的实现是很有必要的,如果可以掌握这个技能,那么在下 ...

  8. QT5界面操作2:如何用状态栏显示鼠标坐标

    在文  QT界面操作1:如何跟踪鼠标位置?实现了鼠标位置捕获,这里用两种方式显示鼠标坐标 1)状态栏显示 2)窗口刷新显示 先看如何获取鼠标位置的代码. import sys from PyQt5.Q ...

  9. linux设置逻辑卷进不了图形界面,LVM逻辑卷管理器图形界面操作

    LVM逻辑卷管理器图形界面操作 LVM有关概念 LVM(Logical Volume Manager)即逻辑卷管理器,它最先是在Linux 2.4内核中被集成到内核中去的,它的出现改变了传统的磁盘空间 ...

  10. linux 修复图形界面,图形界面操作的备份和恢复Linux发行版

    原标题:图形界面操作的备份和恢复Linux发行版 来自:Linux迷 链接:https://www.linuxmi.com/redo-rescue-2-0-6-linux.html 现在可以下载Red ...

最新文章

  1. html 省份,城市 选择器附效果图
  2. trigger error php,php trigger_error函数怎么用
  3. 新手向:Vue 2.0 的建议学习顺序
  4. C++ 百炼成钢20
  5. Linux知识积累(8)卸载安装jdk
  6. LeetCode 450. 删除二叉搜索树中的节点
  7. 什么是陀螺仪的dr算法_PID控制器调参工具——DR-PID Tuning(Matlab GUI)
  8. 求素数的c语言表达式,使用c语言判断100以内素数的示例(c语言求素数)
  9. Abelssoft Undeleter(数据恢复软件)v5.01免费版
  10. ERP原理与应用教程-第一章
  11. 一文介绍完整:python猴子补丁python monkey patch 没听过?
  12. 【深度学习——BNN】:二值神经网络BNN——学习与总结
  13. POI单元格合并(合并后边框空白修复)、自动列宽、水平居中、垂直居中、设置背景颜色、设置字体等常见问题
  14. Java:新世纪时代的召唤--启航
  15. 花朵藤条植物生长动画婚礼视频标题pr模板
  16. libreCAD源码阅读笔记2
  17. g4560和二代i5_奔腾g4560和i5 2500K哪个好
  18. SpringBoot启动图标修改(通俗易懂)
  19. Python笔记,Python链接mysql
  20. 3亿美元换0.003秒,但时间一直这么贵!

热门文章

  1. 【硬件】PIC32单片机烧写器以及线序说明
  2. c语言延时时间计算器,rc延时电路延时时间计算公式
  3. 信息论复习四:信源编码
  4. 清华学霸尹成Python爬虫视频 [MP4] (33.96G)
  5. 局域网 如何连接主机_局域网远程操控电脑方法
  6. 超级计算机卫星云图,台风路径实时发布系统20号台风云图 台风艾莎尼高清卫星云图实时追踪...
  7. 【ffmpeg】视频解码器
  8. 前端新手小白必看--最全静态网页模板网站
  9. UE4 实时渲染原理优化策略笔记
  10. Xweibo2.0nbsp;游客可以访问任何页面【…