日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++ 控制台游戏打砖块

發布時間:2023/12/20 c/c++ 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++ 控制台游戏打砖块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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++ 控制台游戏打砖块的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。