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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

贪吃蛇(c++版)

發布時間:2025/3/21 c/c++ 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 贪吃蛇(c++版) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這個小游戲是博主一年前寫的,大概是2020年1月份左右,現在發在csdn里面記錄一下生活,當時c++功底很low,雖然現在也很low,所以寫得很簡陋,還請各位大佬多多諒解小白

第一步:墻的cpp代碼

#include"wall.h"void Wall::initWall() {for (int i = 0; i < ROW; i++){for (int j = 0; j < COL; j++){if (i == 0 || j == 0 || i == ROW - 1 || j == COL - 1||((i == (ROW-1)/2)&&(j>=(COL - 1)/5 && j<= (COL - 1)/1.3))|| ((j == (COL - 1) / 2) && (i >= (ROW - 1) /5 && i <= (ROW - 1) / 1.3))|| ((i == (ROW - 1) /5) && (j >= (COL - 1) / 3 && j <= (COL - 1) /1.5)) || ((i == (ROW - 1) / 1.3) && (j >= (COL - 1) / 5 && j <= (COL - 1) / 1.3))){gameArray[i][j] = '*';}else {gameArray[i][j] = ' ';}}} }void Wall::drawwall() {for (int i = 0; i < ROW; i++) {for (int j = 0; j < COL; j++) {cout << gameArray[i][j]<<" ";}if (i == 5) {cout << "英文鍵盤下:d鍵,w鍵,s鍵開始!come on!";}if (i == 6) {cout << "a鍵向左";}if (i == 7) {cout << "d鍵向右";} if (i == 8) {cout << "w鍵向上";}if (i == 11) {cout << "制作人:尋夢 ";}if (i == 9) {cout << "s鍵向下";}cout << endl;}}void Wall::setwall(int x, int y,char c) {gameArray[x][y] = c; }char Wall::getwall(int x,int y) {return gameArray[x][y];}

第二步:墻的頭文件代碼

#pragma once #ifndef WALL #define WALL #include<iostream> using namespace std; class Wall { public:enum {ROW = 26,COL =26};void initWall();void drawwall();void setwall(int x, int y, char c);char getwall(int x, int y); private:char gameArray[ROW][COL];};#endif WALL

第三步:關于蛇的一系列cpp代碼

#include "snake.h" #include<windows.h>using namespace std;/*光標定位代碼1*/ void gotoxy(HANDLE hOut, int x, int y) {COORD c;c.X = x;c.Y = y;SetConsoleCursorPosition(hOut, c); } HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);Snake::Snake(Wall&tempwall,Food & tempfood):wall(tempwall),food(tempfood) {pHead = NULL;isrool = false; }void Snake::initSnake() {destroyPoint();addPoint(5, 3);addPoint(5, 4);addPoint(5,5); }void Snake::destroyPoint() {Point* pcur = pHead;while (pHead != NULL) {pcur = pHead->next;delete pHead;pHead = pcur;}}void Snake::addPoint(int x, int y) {Point* newpoint = new Point;newpoint->x = x;newpoint->y = y;newpoint->next = NULL;if (pHead != NULL) {wall.setwall(pHead->x, pHead->y, '=');gotoxy( hOut, pHead->y*2, pHead->x);cout << "=";}newpoint->next = pHead;pHead = newpoint;wall.setwall(pHead->x, pHead->y, '@');gotoxy(hOut, pHead->y * 2, pHead->x);cout << "@"; }void Snake::delpoint() {if (pHead == NULL || pHead->next == NULL){return;}Point* pcur = pHead->next;Point* pre = pHead;while (pcur->next != NULL) {pre = pre->next;pcur = pcur->next;}wall.setwall(pcur->x, pcur->y, ' ');gotoxy(hOut, pcur->y * 2, pcur->x);cout << " ";delete pcur;pcur = NULL;pre->next = NULL; }bool Snake::move(char keys) {int x = pHead->x;int y = pHead->y; switch (keys){case UP:x--;break;case DOWN:x++;break;case RIGHT:y++;break;case LEFT:y--;break;}Point* pcur = pHead->next;Point* pre = pHead;while (pcur->next != NULL) {pre = pre->next;pcur = pcur->next;}if (pcur->x == x && pcur->y == y) {isrool = true;}else {if (wall.getwall(x, y) == '*' || wall.getwall(x, y) == '='){addPoint(x, y);delpoint();system("cls");wall.drawwall();cout << "你的得分為:" << getscore() << "分" << endl;if (getscore() <= 300) {cout << "再接再厲哦!";}else if (500 > getscore() >300) {cout << "恭喜你呀,超過了百分之四十的人,繼續加油!";}else {cout << "你真優秀!"<<endl;}cout << "GAME OVER!!" << endl;return false;}}if (wall.getwall(x, y) == '#'){addPoint(x, y);food.setfood();}else {addPoint(x, y);delpoint();if (isrool == true){wall.setwall(x, y, '@');gotoxy(hOut, y * 2, x);cout << "@";}}return true;}int Snake::getSleeptime() {int sleeptime = 0;int size = countlist();if (size < 4) {sleeptime = 180;}else if (size >=4 && size <= 15) {sleeptime = 160;}else if (size > 15 && size <=20) {sleeptime = 155;}else if (size > 20 && size <=25) {sleeptime = 150;}else if (size >25 && size <= 40) {sleeptime = 145;}else if (size >40 && size <= 50) {sleeptime = 138;}else if(size > 50 && size <= 80) {sleeptime = 130;}else if (size >80 && size <= 90) {sleeptime = 125;}else if (size > 90 && size <=100) {sleeptime = 120;}else if (size > 100 && size <= 120) {sleeptime = 110;}else {sleeptime = 100;}return sleeptime; }int Snake::countlist() {int bodylong = 0;Point* curpoint = pHead;while (curpoint != NULL){bodylong++;curpoint = curpoint->next;}return bodylong; }int Snake::getscore() {int size = countlist();int score = (size-3) * 10;return score; }

第四步:蛇的頭文件代碼

#pragma once #include<iostream> #include"wall.h" #include"foods.h"using namespace std; class Snake { public:Snake(Wall&tempwall,Food& food);enum {UP='w',DOWN='s',LEFT='a',RIGHT='d',};struct Point{int x;int y;Point* next;};void initSnake();void destroyPoint();void addPoint(int x,int y);void delpoint();bool move(char keys);int getSleeptime();int countlist();int getscore();Point* pHead;Wall& wall;Food & food;bool isrool; };

第五步:食物的cpp代碼

#include"foods.h" #include<Windows.h> void gotoxy2(HANDLE hOut2, int x, int y) {COORD c;c.X = x;c.Y = y;SetConsoleCursorPosition(hOut2, c); } HANDLE hOut2 = GetStdHandle(STD_OUTPUT_HANDLE);Food::Food(Wall& tempWall):wall(tempWall) {}void Food::setfood() {while (true) {xfood = rand() % (Wall::ROW - 2) + 1;yfood = rand() % (Wall::COL - 2) + 1;if (wall.getwall(xfood, yfood) == ' '){wall.setwall(xfood, yfood, '#');gotoxy2( hOut2, yfood*2, xfood);cout << "#";break;}}}

第六步:食物的頭文件代碼

#pragma once #include"wall.h" #include<iostream> using namespace std;class Food { public:Food(Wall& tempWall);void setfood();int xfood;int yfood;Wall& wall;private:};

第七步:主函數代碼

#define CRT #include<iostream> using namespace std; #include"wall.h" #include"snake.h" #include"foods.h" #include<ctime> #include<conio.h> #include<Windows.h> void gotoxy1(HANDLE hOut1, int x, int y) {COORD c;c.X = x;c.Y = y;SetConsoleCursorPosition(hOut1, c); } HANDLE hOut1 = GetStdHandle(STD_OUTPUT_HANDLE);/*光標定位代碼2*/ /*void gotoxy(int x,int y){COORD c;c.X = x - 1;c.Y = y - 1;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);}*/int main() {l:char ctn = 'y';srand((unsigned int)time(NULL));bool isDead = false;char prekeys = NULL;Wall wall;wall.initWall();wall.drawwall();Food food(wall);food.setfood();Snake snake(wall, food);snake.initSnake();gotoxy1(hOut1, 0, Wall::ROW);cout << "你的得分為:" << snake.getscore() << "分" << endl;while (!isDead) {char keys = _getch();if (keys == snake.LEFT && prekeys == NULL){continue;}do{if (keys == snake.UP || keys == snake.DOWN || keys == snake.RIGHT || keys == snake.LEFT){if ((keys == snake.LEFT && prekeys == snake.RIGHT) || (keys == snake.RIGHT && prekeys == snake.LEFT)|| (keys == snake.DOWN && prekeys == snake.UP) || (keys == snake.UP && prekeys == snake.DOWN)){keys = prekeys;}else {prekeys = keys;}if (snake.move(keys) == true){//system("cls");//wall.drawwall();gotoxy1(hOut1, 0, Wall::ROW);cout << "你的得分為:" << snake.getscore() << "分"<<endl;if (snake.getscore() <=300) {cout << "再接再厲哦!" << endl;}else if (500 >= snake.getscore() > 300) {cout << "恭喜你呀,超過了百分之四十的人,繼續加油!" << endl;}else {cout << "你真是太優秀了!" << endl;}Sleep(snake.getSleeptime()); //毫秒}else {isDead = true;break;}}else {keys = prekeys;}} while (!_kbhit());//_kbhit當沒有鍵盤輸入時返回0;}system("pause");system("cls");goto l;system("pause");}

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的贪吃蛇(c++版)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产传媒中文字幕 | 亚洲www视频 | 国产人成免费视频 | 少妇脚交调教玩男人的视频 | 亚洲精品免费网站 | 日本中文字幕高清 | 手机在线精品视频 | 久草视频免费在线观看 | 久久精品视频在线观看 | 不卡中文字幕在线观看 | 91不卡视频 | 国产天堂资源 | 国产高清视频免费 | 欧美bdsm调教视频 | 欧美午夜精品久久久久久人妖 | 精品久久91 | 中文字幕永久 | 丁香激情小说 | 手机av片| 欧美xxxxx视频| 亚洲欧美91 | 99热麻豆 | 青青青视频免费观看 | 亚洲av无码一区二区三区网址 | 爱久久视频 | 天天干夜夜操视频 | 国产成人无码aa精品一区 | 国产高清视频免费在线观看 | 日本一区二区在线不卡 | 成熟的女同志hd | 精品国产乱码一区二区三区99 | 中国国产bdsm紧缚捆绑 | 激情欧美一区二区三区精品 | 成人免费国产 | 日本熟妇乱子伦xxxx | 国产伊人自拍 | 国产黄色免费网站 | 色秀视频网 | 黄色一级大片在线免费看产 | 国产人妻一区二区 | 男同志毛片特黄毛片 | www.污在线观看 | 国产av无码专区亚洲精品 | 美女日批网站 | 成人a站 | 欧美一区二区三区久久久 | 国产午夜一区二区三区 | 黄在线观看免费 | 国产91色在线 | 欧美人伦 | 国产a区 | 日本免费色视频 | 污污免费在线观看 | 欧美日韩在线视频一区 | xxx老太太 | 永久免费成人代码 | 波多野结衣一二三四区 | 三级精品在线观看 | 九一国产在线 | 亚洲香蕉在线观看 | 亚洲嫩草影院 | 亚洲熟女综合一区二区三区 | 天天操天天插 | 亚洲制服另类 | 色婷婷香蕉在线一区二区 | 亚洲成人精品在线观看 | 日韩欧美精品中文字幕 | 在线视频一区二区三区 | 日韩一区欧美 | 国产一区二区毛片 | 欧洲美女毛片 | 最新中文字幕av | 在线播放少妇奶水过盛 | 欧美日韩一卡二卡 | 日本特黄网站 | 秋霞成人午夜鲁丝一区二区三区 | 理论片亚洲 | 亚洲精品无码久久久 | 午夜男人天堂 | 国产在线喷水 | 久草免费在线视频观看 | 狂野欧美性猛交xxxxhd | 福利精品视频 | 小sao货cao死你 | 日韩视频一区二区三区 | 污片网站在线观看 | 国产av无码专区亚洲a∨毛片 | 欧美在线小视频 | 被黑人啪到哭的番号922在线 | 麻豆视频在线播放 | 久草精品在线观看 | 淫片一级国产 | 国产高清在线视频观看 | 日本精品视频 | 亚洲图片偷拍区 | 久久这里只有精品国产 | 欧美视频| 久久国语精品 | 日韩av女优在线观看 |