c++ 控制台游戏打砖块

这个代码逻辑有点问题(出现了六个无法消除的幸运星),正在修改。
代码:

#include<iostream>
#include<conio.h>
#include<Windows.h>
using namespace std;
enum{RightUp,RightDown,LeftUp,LeftDown,Over
};
void hui(int map[20][20]){for (int i = 0; i < 20; i++){for (int j = 0; j < 20; j++){if (map[i][j] == 0){cout << "  ";}else if (map[i][j] == 4 || map[i][j] == 5){cout << "■";}else if (map[i][j] == 3){cout << "★";}else if (map[i][j] == 2){cout << "〓";}else if (map[i][j] == 1){cout << "●";}}cout << endl;}
}
void move(COORD & ball,int cx, int cy,int map[20][20],int & Gstate){map[ball.X][ball.Y] = 0;ball.X += cx;ball.Y += cy;if (ball.Y==19&&Gstate==RightDown){ball.Y--;ball.X--;Gstate = LeftDown;}else if (ball.Y == 19 && Gstate == RightUp){ball.Y--;ball.X++;Gstate = LeftUp;}else if (ball.Y == 0 && Gstate == LeftUp){ball.Y++;ball.X++;Gstate = RightUp;}else if (ball.Y == 0 && Gstate == LeftDown){ball.Y++;ball.X--;Gstate = RightDown;}else if (ball.X == 0 && Gstate == RightUp){ball.X++;ball.Y--;Gstate = RightDown;}else if (ball.X == 0 && Gstate == LeftUp){ball.X++;ball.Y++;Gstate = LeftDown;}else if (map[ball.X][ball.Y] == 3 && Gstate == LeftUp){map[ball.X][ball.Y+1] = 0;ball.X++;ball.Y++;Gstate = LeftDown;}else if (map[ball.X][ball.Y-1] == 3 && Gstate == RightUp){map[ball.X][ball.Y-1] = 0;ball.X++;ball.Y--;Gstate = RightDown;}else if (map[ball.X][ball.Y] == 2 && Gstate == LeftDown){ball.X--;ball.Y++;Gstate = LeftUp;}else if (map[ball.X][ball.Y] == 2 && Gstate == RightDown){ball.X--;ball.Y--;Gstate = RightUp;}else if (ball.X == 19){ball.X--;Gstate = Over;}map[ball.X][ball.Y] = 1;
}
void minego(COORD & mine, int sy, int map[20][20]){for (int i = mine.X; i <= mine.Y; i++){map[18][i] = 0;}mine.X += sy;mine.Y += sy;if (mine.X > 0 && mine.Y < 19){for (int i = mine.X; i <= mine.Y; i++){map[18][i] = 2;}}else{mine.X -= sy;mine.Y -= sy;for (int i = mine.X; i <= mine.Y; i++){map[18][i] = 2;}}
}
void main(){HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);CONSOLE_CURSOR_INFO CursorInfo;GetConsoleCursorInfo(handle, &CursorInfo);//获取控制台光标信息CursorInfo.bVisible = false; //隐藏控制台光标SetConsoleCursorInfo(handle, &CursorInfo);int map[20][20]={};for (int i = 0; i < 20;i++){for (int j = 0; j < 20; j++){if (i==0 || j == 0 || j == 19){map[i][j] = 5;}else if (i == 19){ map[i][j] = 4; }else if (i<4){map[i][j] = 3;}}}COORD ball = { 17, 10 };COORD mine = { 9, 11 };map[ball.X][ball.Y] = 1;for (int i = mine.X; i <= mine.Y; i++){map[18][i] = 2;}hui(map);int Gstate = RightUp;HANDLE hOutput;COORD coord = { 0, 0 };hOutput = GetStdHandle(STD_OUTPUT_HANDLE);//创建新的缓冲区HANDLE hOutBuf = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,CONSOLE_TEXTMODE_BUFFER,NULL);//设置新的缓冲区为活动显示缓冲SetConsoleActiveScreenBuffer(hOutBuf);//隐藏两个缓冲区的光标CONSOLE_CURSOR_INFO cci;cci.bVisible = 0;cci.dwSize = 1;SetConsoleCursorInfo(hOutput, &cci);SetConsoleCursorInfo(hOutBuf, &cci);//双缓冲处理显示DWORD bytes = 100;char data[1600];while (Gstate!=Over){ReadConsoleOutputCharacterA(hOutput, data, 1600, coord, &bytes);WriteConsoleOutputCharacterA(hOutBuf, data, 1600, coord, &bytes);system("cls");hui(map);Sleep(100);char Control;if (_kbhit()){Control = _getch();switch (Control){case 'a':minego(mine, -1, map); break;case 'd':minego(mine,1, map); break;default:break;}}switch (Gstate){case RightUp:move(ball, -1, 1, map, Gstate); break;case RightDown:move(ball, 1, 1, map, Gstate); break;case LeftUp:move(ball, -1, -1, map, Gstate); break;case LeftDown:move(ball, 1, -1, map, Gstate); break;default:break;}}ReadConsoleOutputCharacterA(hOutput, data, 1600, coord, &bytes);WriteConsoleOutputCharacterA(hOutBuf, data, 1600, coord, &bytes);cout << "游戏结束" << endl;system("pause");
}

PS:没写注释,逻辑可能有点小复杂,欢迎交流。

c++ 控制台游戏打砖块相关推荐

  1. 经典游戏打砖块(粗糙版)

    经典游戏打砖块(粗糙版) 经典游戏打砖块(粗糙版) 具体代码 文件列表 经典游戏打砖块(粗糙版) 简略地实现了游戏的主要逻辑,运行结果存在bug,当小球碰到挡板的边缘处,有时会发生颤动,个人猜测是因为 ...

  2. c语言经典游戏,C语言——经典小游戏——打砖块

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 C语言--经典小游戏--打砖块 玩法:按A与D控制球拍的移动,按S暂停游戏 百度网盘下载:http://pan.baidu.com/s/1o64ECTc ...

  3. Java控制台游戏~600行代码实现打怪小游戏

    Java控制台游戏~600行代码实现打怪小游戏(多图预警) 一,先放个启动界面(一些英雄,怪物技能介绍跟装备属性都写在里边): 二,在这个简单的小游戏里,你可以体验到: 1.打怪: 2.随机玩法寻宝: ...

  4. 用javascript编写的小游戏-打砖块

    用javascript编写的小游戏-打砖块 前言 启发 下载链接 游戏功能说明 代码效果演示 代码 后记 前言 这是我在CSDN发表的第一篇文章.是我在初学javascript后, 忽然来了兴致, 编 ...

  5. 控制台游戏7-泡泡堂

    目前为止写过最长的代码-- 作为c语言结课作业-- 没有算法难度试图以码量取胜.jpg 灵感来源4399Q版泡泡堂-- 除了人物用箭头表示,放炸弹往面前放-- 大概是个阉割版了qwq 致我的童年qwq ...

  6. python控制台小游戏_学习编程的好方法——控制台游戏

    本文难度:★☆☆☆☆ 题图:控制台RPG游戏--诛仙剑 by 呆呆的码农 一.前言 在我大知乎,有以下基本日常问题:如何学习C语言? 如何学习C++? 如何学习Python? 如何学习XXXX语言? ...

  7. C/C++代码实现各种控制台游戏,大神请收下我的膝盖!

    一.如何学习C++ 用一句话形容这类问题--高默新泪.高手因为不想反复回答这类问题而沉默--新手因为苦苦找不到入门的路而流泪. 本文想要给苦恼的新手们指明一个前进的方向. 下面是小编整理好的一套系统的 ...

  8. 史上最牛C语言控制台游戏!C语言控制台音游——Rhythm Slasher! 附上源代码供交流学习

    这个游戏是我大一上学期弄出来,刚学C语言,学了循环和选择结构.那时候数据结构都不太会,但是按捺不住自己的想法,总想用现有的东西做点什么. 就连窗体程序都不会,没有任何的图片,全是ASCII字符的一个游 ...

  9. 用C语言做一个横板过关类型的控制台游戏

    前言:本教程是写给刚学会C语言基本语法不久的新生们. 因为在学习C语言途中,往往只能写控制台代码,而还能没接触到图形,也就基本碰不到游戏开发. 所以本教程希望可以给仍在学习C语言的新生们能提前感受到游 ...

  10. 少儿编程150讲轻松学Scratch(八)-如何设计经典游戏打砖块

    前言 打砖块游戏很多人都玩过,没玩过的孩子可以自己设计一个这样的游戏来动手尝试一下.打砖块游戏其实比较简单,用Scratch就能来实现,这也是少儿编程课程中的经典游戏案例之一.具体该如何使用Scrat ...

最新文章

  1. golang异步协程调度原理
  2. Epic苹果诉讼案,却把索尼微软Steam都拉下水,网友忙吃瓜
  3. Eclipse小技巧
  4. 『中级篇』Dockerfile详解(17)
  5. 解决: Unable to connect to zookeeper server within timeout: 5000
  6. php程序转net,asp,asp.net,php,jsp下的301转向代码,整站重定向
  7. 截取url的host_js如何准确获取当前页面url网址信息
  8. Faster R-CNN理论
  9. GridView和DataFormatString
  10. 暨南大学人文社科a类期刊_关于调整人文社科B类和C类期刊目录的通知
  11. Calibre电子书简繁转换
  12. 计算机中数据的表现形式
  13. leet 75. 颜色分类
  14. c语言合并jpg成pdf,JPG在线转换成PDF文件的简单方法
  15. 图像仿射变换及图像扭曲(Image Warping)
  16. 基于SONY ICX694的4通道成像组件设计与调试
  17. VSC# ArcGIS 二次开发--出图工具:添加图名、比例尺、指北针、图例,导出图片或文件、打印地图
  18. 【Puzzle】基于 Vue 和 Webpack4 的可插拔式微前端架构
  19. HTML5权威指南观后笔记
  20. 针对或者利用计算机网络实施,网络安全合规指引题库:针对或者利用计算机网络实施的犯罪,哪些公安机关不可以管辖?()...

热门文章

  1. win10小课堂:如何彻底关闭windows defender
  2. 微信小程序上拉触底事件
  3. 华为软件精英挑战赛参赛感悟
  4. 少年派的奇幻漂流-对于日货轮出事故主人公侥幸得生后发生的事情。
  5. 如何实现图片的上传-(上传到本地)
  6. 利用npm bin创建可执行命令实现项目代码规范自动化
  7. Windows Sever 2012 R2 组策略将everyone权限应用于匿名用户
  8. Web初学-2022.11.12-11.18
  9. ruby on rails 分页gem kaminari,指定页码跳转
  10. xp系统计算机蓝屏,xp系统电脑一直蓝屏重启循环的原因和解决方法