当前位置: 首页 > news >正文

VS2022 C++ EasyX EGE 吃豆人升级版

我是可爱的C++小盆友(不要脸了),嘻嘻,等了这么久,吃豆人终于升级啦!

更新日志:

1.修复奇奇怪怪的bug

2.把敌人AI增强了一(hen)(duo)

3.加入了奖励豆,吃完有特殊的东西

        1)万物复苏 玩家生命值+3

        2)极致严寒 敌人移动速度降低

        3)无限牢笼 送一个敌人到地图四个角落种一个

本小盆友很想破1000粉丝,求大家四连(点赞,关注,收藏,转发)

对了,提醒一句,如果要改我的代码,千万不要加using namespace std这一行,整个程序会炸,不信自己试,逝世了我可不负责昂

好啦,下面是大家最喜欢的代码环节!

#include<bits/stdc++.h>
#include<queue>
#include<conio.h>
#pragma comment(lib,"winmm.lib")
#define _CRT_SECURE_NO_WARNINGS
#define WIDTH				15*25
#define HEIGHT				22*25
#define GRID				25
#define ROW					20
#define COL					15
using std::cout;
using std::endl;
int b = 255;
int m = 0, n = 0;
int speed = 400;
int life = 5;
int score = 0;
bool willGo = true;
bool canGo = true;
bool isChange = true;
long long min = 99999999, timesa = 1, v[ROW][COL];
DWORD t1 = 0, t2 = 0;
DWORD t3 = 0, t4 = 0;
DWORD t5 = 0, t6 = 0;//奖励函数特用
IMAGE img[8];
IMAGE Enemy[4];
IMAGE bean, bean2;
COLORREF color = RGB(0, 0, 0);
enum DIR {NONE,UP,DOWN,LEFT,RIGHT,WAITING
};
enum TOOLS {WALL,PLAYER,SPACE,ENEMY,BEAN,ENEMYBEAN,ENEMYSBEAN,SBEAN
};
struct Point {int x, y;
};
struct Player {int x, y;bool flag;DIR dir;
}player;
struct ENEmy {int x, y;int flag;DIR dir;
}enemy[4];
int map[ROW][COL] = {WALL,WALL,WALL,WALL,WALL,WALL,WALL,BEAN,WALL,WALL,WALL,WALL,WALL,WALL,WALL,WALL,BEAN,BEAN,BEAN,BEAN,WALL,BEAN,BEAN,BEAN,WALL,BEAN,BEAN,BEAN,BEAN,WALL,WALL,BEAN,WALL,WALL,BEAN,WALL,BEAN,WALL,BEAN,WALL,BEAN,WALL,WALL,BEAN,WALL,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,WALL,WALL,BEAN,WALL,WALL,WALL,WALL,BEAN,WALL,WALL,WALL,WALL,BEAN,WALL,WALL,WALL,WALL,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,WALL,WALL,WALL,WALL,BEAN,WALL,WALL,BEAN,WALL,WALL,WALL,BEAN,WALL,WALL,BEAN,WALL,WALL,WALL,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,WALL,WALL,BEAN,WALL,WALL,BEAN,WALL,WALL,BEAN,WALL,WALL,BEAN,WALL,WALL,BEAN,WALL,WALL,BEAN,WALL,WALL,BEAN,WALL,BEAN,BEAN,BEAN,WALL,BEAN,WALL,WALL,BEAN,WALL,WALL,BEAN,WALL,WALL,BEAN,WALL,WALL,BEAN,WALL,WALL,BEAN,WALL,WALL,BEAN,WALL,WALL,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,WALL,WALL,WALL,BEAN,WALL,WALL,BEAN,WALL,BEAN,WALL,BEAN,WALL,WALL,BEAN,WALL,WALL,WALL,WALL,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,WALL,WALL,WALL,BEAN,BEAN,BEAN,BEAN,WALL,WALL,BEAN,WALL,WALL,BEAN,BEAN,BEAN,BEAN,WALL,WALL,WALL,BEAN,WALL,WALL,WALL,WALL,BEAN,WALL,WALL,WALL,WALL,BEAN,WALL,WALL,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,BEAN,WALL,BEAN,WALL,WALL,BEAN,WALL,BEAN,WALL,BEAN,WALL,BEAN,WALL,WALL,BEAN,WALL,WALL,BEAN,BEAN,BEAN,BEAN,WALL,BEAN,BEAN,BEAN,WALL,BEAN,BEAN,BEAN,BEAN,WALL,WALL,WALL,WALL,WALL,WALL,WALL,WALL,BEAN,WALL,WALL,WALL,WALL,WALL,WALL,WALL,
};
void drawText() {if (b <= 1) {isChange = false;}else if (b >= 255 - 8) {isChange = true;}char ch[1000];int spaceH;settextcolor(RGB(60, 10, b));settextstyle(25, 0, "华文行楷");sprintf_s(ch, "生命: %d          得分: %d", life, score);spaceH = (getwidth() - textwidth(ch)) / 2;outtextxy(spaceH, 20 * 25, ch);sprintf_s(ch, "x:%d   y:%d", player.x, player.y);spaceH = (getwidth() - textwidth(ch)) / 2;outtextxy(spaceH, 21 * 25, ch);if (isChange) {b -= 7;}else {b += 7;}
}
void initMap() {loadimage(&Enemy[0], "01.png", GRID, GRID);loadimage(&Enemy[1], "02.png", GRID, GRID);loadimage(&Enemy[2], "03.png", GRID, GRID);loadimage(&Enemy[3], "04.png", GRID, GRID);loadimage(&img[0], "UP_CLOSE.jpg", 24, 24);loadimage(&img[1], "UP_OPEN.jpg", 24, 24);loadimage(&img[2], "DOWN_CLOSE.jpg", 24, 24);loadimage(&img[3], "DOWN_OPEN.jpg", 24, 24);loadimage(&img[4], "LEFT_CLOSE.jpg", 24, 24);loadimage(&img[5], "LEFT_OPEN.jpg", 24, 24);loadimage(&img[6], "RIGHT_CLOSE.jpg", 24, 24);loadimage(&img[7], "RIGHT_OPEN.jpg", 24, 24);loadimage(&bean, "bean.png", 15, 15);loadimage(&bean2, "sbean.png", 15, 15);map[m][n] = PLAYER;player.flag = true;player.x = m;player.y = n;srand((unsigned int)time(NULL));for (int i = 0; i < 4; i++) {int a = rand() % (ROW - 2) + 1;int b = rand() % (COL - 2) + 1;while (map[a][b] == WALL || map[a][b] == PLAYER) {a = rand() % (ROW - 2) + 1;b = rand() % (COL - 2) + 1;}enemy[i].x = a;enemy[i].y = b;map[a][b] = ENEMYSBEAN;}
}
void drawMap() {setbkmode(TRANSPARENT);setbkcolor(RGB(83, 55, 213));cleardevice();for (int i = 0; i < ROW; i++) {for (int j = 0; j < COL; j++) {switch (map[i][j]) {case SPACE:color = RGB(81, 55, 213);setlinecolor(color);setfillcolor(color);fillrectangle(j * GRID, i * GRID, j * GRID + GRID, i * GRID + GRID);break;case WALL:color = RGB(150, 0, 255);setlinecolor(color);setfillcolor(color);setlinecolor(WHITE);setlinestyle(PS_SOLID, 1);fillroundrect(j * GRID, i * GRID, j * GRID + GRID, i * GRID + GRID, 6, 6);break;case PLAYER:switch (player.flag) {case true:switch (player.dir) {case UP:putimage(j * GRID, i * GRID, &img[1]);break;case DOWN:putimage(j * GRID, i * GRID, &img[3]);break;case LEFT:putimage(j * GRID, i * GRID, &img[5]);break;case RIGHT:putimage(j * GRID, i * GRID, &img[7]);break;}break;case false:switch (player.dir) {case UP:putimage(j * GRID, i * GRID, &img[0]);break;case DOWN:putimage(j * GRID, i * GRID, &img[2]);break;case LEFT:putimage(j * GRID, i * GRID, &img[4]);break;case RIGHT:putimage(j * GRID, i * GRID, &img[6]);break;}break;}break;case ENEMY:for (int k = 0; k < 4; k++) {if (enemy[k].x == i && enemy[k].y == j) {putimage(j * GRID, i * GRID, &Enemy[k]);}}break;case BEAN:putimage(j * GRID + 5, i * GRID + 5, &bean);break;case SBEAN:putimage(j * GRID + 5, i * GRID + 5, &bean2);break;case ENEMYSBEAN:for (int k = 0; k < 4; k++) {if (enemy[k].x == i && enemy[k].y == j) {putimage(j * GRID, i * GRID, &Enemy[k]);}}break;case ENEMYBEAN:for (int k = 0; k < 4; k++) {if (enemy[k].x == i && enemy[k].y == j) {putimage(j * GRID, i * GRID, &Enemy[k]);}}break;}}}for (int i = 0; i < ROW; i++) {for (int j = 0; j < COL; j++) {switch (map[i][j]) {case WALL:color = RGB(150, 0, 255);setlinecolor(color);setfillcolor(color);setlinecolor(WHITE);setlinestyle(PS_SOLID, 1);fillroundrect(j * GRID, i * GRID, j * GRID + GRID, i * GRID + GRID, 6, 6);break;}}}drawText();
}
void drawText2(char ch[100]) {mciSendString("pause 1.mp3", 0, 0, 0);//setbkcolor(BLACK);//cleardevice();//setfillcolor(BLACK);//fillrectangle(0, 0, WIDTH, HEIGHT);settextcolor(RED);settextstyle(45, 0, "华文行楷");int spaceH = (getwidth() - textwidth(ch)) / 2;int spaceV = (getheight() - textheight(ch)) / 2;outtextxy(spaceH, spaceV, ch);FlushBatchDraw();Sleep(1250);drawMap();mciSendString("play 1.mp3 repeat", 0, 0, 0);
}
void movePlayer() {int sp;char c;char ch1[22] = "万   物   复   苏";char ch2[22] = "极   致   严   寒";char ch3[22] = "无   限   牢   笼";Player next = player;switch (player.dir) {case UP:next.x--;break;case DOWN:next.x++;break;case LEFT:next.y--;break;case RIGHT:next.y++;break;}if (player.x == 16 && player.y == 0 && canGo) {map[player.x][player.y] = SPACE;player.x = 16;player.y = COL - 1;player.dir = LEFT;map[player.x][player.y] = PLAYER;player.flag = !player.flag;canGo = false;}else if (player.x == 16 && player.y == COL - 1 && canGo) {map[player.x][player.y] = SPACE;player.x = 16;player.y = 0;player.dir = RIGHT;map[player.x][player.y] = PLAYER;player.flag = !player.flag;canGo = false;}if (player.x == 3 && player.y == 0 && canGo) {map[player.x][player.y] = SPACE;player.x = 3;player.y = COL - 1;player.dir = LEFT;map[player.x][player.y] = PLAYER;player.flag = !player.flag;canGo = false;}else if (player.x == 3 && player.y == COL - 1 && canGo) {map[player.x][player.y] = SPACE;player.x = 3;player.y = 0;player.dir = RIGHT;map[player.x][player.y] = PLAYER;player.flag = !player.flag;canGo = false;}if (player.x == 0 && player.y == 7 && canGo) {map[player.x][player.y] = SPACE;player.x = ROW - 1;player.y = 7;player.dir = UP;map[player.x][player.y] = PLAYER;player.flag = !player.flag;canGo = false;}else if (player.x == ROW - 1 && player.y == 7 && canGo) {map[player.x][player.y] = SPACE;player.x = 0;player.y = 7;player.dir = DOWN;map[player.x][player.y] = PLAYER;player.flag = !player.flag;canGo = false;}/*Player next2 = player;switch (map[next2.x][next2.y]) {case WALL:break;case SPACE:map[player.x][player.y] = SPACE;player = next2;map[player.x][player.y] = PLAYER;player.flag = !player.flag;canGo = true;break;case ENEMY:case ENEMYBEAN:case ENEMYSBEAN:for (int i = 0; i < 4; i++) {if (next2.x == enemy[i].x && next2.y == enemy[i].y) {life--;if (life == 0) {mciSendString("close 1.mp3", 0, 0, 0);c = getchar();exit(0);}else {map[player.x][player.y] = SPACE;player.x = m;player.y = n;break;}}}break;case BEAN:score++;map[player.x][player.y] = SPACE;player = next2;map[player.x][player.y] = PLAYER;player.flag = !player.flag;canGo = true;break;case SBEAN:score += 10;map[player.x][player.y] = SPACE;player = next2;map[player.x][player.y] = PLAYER;player.flag = !player.flag;canGo = true;srand((unsigned int)time(NULL));sp = rand() % 3 + 1;switch (sp) {case 1:break;case 2:break;case 3:break;}break;}*/switch (map[next.x][next.y]) {case WALL:break;case SPACE:map[player.x][player.y] = SPACE;player = next;map[player.x][player.y] = PLAYER;player.flag = !player.flag;canGo = true;break;case ENEMY:case ENEMYBEAN:case ENEMYSBEAN:for (int i = 0; i < 4; i++) {if (next.x == enemy[i].x && next.y == enemy[i].y) {life--;if (life == 0) {mciSendString("close 1.mp3", 0, 0, 0);c = getchar();exit(0);}else {map[player.x][player.y] = SPACE;player.x = m;player.y = n;break;}}}break;case BEAN:score++;map[player.x][player.y] = SPACE;player = next;map[player.x][player.y] = PLAYER;player.flag = !player.flag;canGo = true;break;case SBEAN:score += 10;map[player.x][player.y] = SPACE;player = next;map[player.x][player.y] = PLAYER;player.flag = !player.flag;canGo = true;srand((unsigned int)time(NULL));sp = rand() % 4 + 1;if (sp == 1) {drawText2(ch1);life += 3;}else if (sp == 2) {drawText2(ch2);speed += 200;}else {drawText2(ch3);for (int i = 0; i < 4; i++) {if (enemy[i].x != 0 && enemy[i].y != 0 && map[0][0] != ENEMY) {map[enemy[i].x][enemy[i].y] = SBEAN;enemy[i].x = 0;enemy[i].y = 0;map[enemy[i].x][enemy[i].y] = ENEMY;break;}else if (enemy[i].x != 0 && enemy[i].y != 0 && map[0][COL - 1] != ENEMY) {map[enemy[i].x][enemy[i].y] = SBEAN;enemy[i].x = 0;enemy[i].y = COL - 1;map[enemy[i].x][enemy[i].y] = ENEMY;break;}else if (enemy[i].x != 0 && enemy[i].y != 0 && map[ROW - 1][0] != ENEMY) {map[enemy[i].x][enemy[i].y] = SBEAN;enemy[i].x = ROW - 1;enemy[i].y = 0;map[enemy[i].x][enemy[i].y] = ENEMY;break;}else if (enemy[i].x != 0 && enemy[i].y != 0 && map[ROW - 1][COL - 1] != ENEMY) {map[enemy[i].x][enemy[i].y] = SBEAN;enemy[i].x = ROW - 1;enemy[i].y = COL - 1;map[enemy[i].x][enemy[i].y] = ENEMY;break;}}}break;}
}
void keyDown() {if (_kbhit()) {canGo = true;switch (_getch()) {case 72:player.dir = UP;break;case 80:player.dir = DOWN;break;case 75:player.dir = LEFT;break;case 77:player.dir = RIGHT;break;}}
}
void moveEnemy() {char c;for (int i = 0; i < 4; i++) {ENEmy next = enemy[i];switch (enemy[i].dir) {case UP:next.x--;break;case DOWN:next.x++;break;case LEFT:next.y--;break;case RIGHT:next.y++;break;}if (enemy[i].x == 16 && enemy[i].y == 0 && canGo) {map[enemy[i].x][enemy[i].y] = SPACE;enemy[i].x = 16;enemy[i].y = COL - 1;enemy[i].dir = LEFT;map[enemy[i].x][enemy[i].y] = ENEMY;canGo = false;}else if (enemy[i].x == 16 && enemy[i].y == COL - 1 && canGo) {map[enemy[i].x][enemy[i].y] = SPACE;enemy[i].x = 16;enemy[i].y = 0;enemy[i].dir = RIGHT;map[enemy[i].x][enemy[i].y] = ENEMY;canGo = false;}if (enemy[i].x == 3 && enemy[i].y == 0 && canGo) {map[enemy[i].x][enemy[i].y] = SPACE;enemy[i].x = 3;enemy[i].y = COL - 1;enemy[i].dir = LEFT;map[enemy[i].x][enemy[i].y] = ENEMY;canGo = false;}else if (enemy[i].x == 3 && enemy[i].y == COL - 1 && canGo) {map[enemy[i].x][enemy[i].y] = SPACE;enemy[i].x = 3;enemy[i].y = 0;enemy[i].dir = RIGHT;map[enemy[i].x][enemy[i].y] = ENEMY;canGo = false;}if (enemy[i].x == 0 && enemy[i].y == 7 && canGo) {map[enemy[i].x][enemy[i].y] = SPACE;enemy[i].x = ROW - 1;enemy[i].y = 7;enemy[i].dir = UP;map[enemy[i].x][enemy[i].y] = ENEMY;canGo = false;}else if (enemy[i].x == ROW - 1 && enemy[i].y == 7 && canGo) {map[enemy[i].x][enemy[i].y] = SPACE;enemy[i].x = 0;enemy[i].y = 7;enemy[i].dir = DOWN;map[enemy[i].x][enemy[i].y] = ENEMY;canGo = false;}/*ENEmy next2 = enemy[i];switch (map[next2.x][next2.y]) {case WALL:break;case SPACE:if (map[enemy[i].x][enemy[i].y] == ENEMYBEAN) {map[enemy[i].x][enemy[i].y] = BEAN;}else if (map[enemy[i].x][enemy[i].y] == ENEMYSBEAN) {map[enemy[i].x][enemy[i].y] = SBEAN;}else {map[enemy[i].x][enemy[i].y] = SPACE;}enemy[i] = next2;map[enemy[i].x][enemy[i].y] = ENEMY;break;case ENEMY:case ENEMYBEAN:case ENEMYSBEAN:break;case PLAYER:for (int i = 0; i < 4; i++) {if (next2.x == enemy[i].x && next2.y == enemy[i].y) {for (int i = 0; i < ROW; i++) {for (int j = 0; j < COL; j++) {printf("%d ", map[i][j]);}printf("\n");}printf("\n");life--;if (life == 0) {mciSendString("close 1.mp3", 0, 0, 0);c = getchar();exit(0);}else {map[player.x][player.y] = SPACE;player.x = m;player.y = n;break;}}}break;case BEAN:if (map[enemy[i].x][enemy[i].y] == ENEMY) {map[enemy[i].x][enemy[i].y] = SPACE;}else if (map[enemy[i].x][enemy[i].y] == ENEMYBEAN) {map[enemy[i].x][enemy[i].y] = BEAN;}else if (map[enemy[i].x][enemy[i].y] == ENEMYSBEAN) {map[enemy[i].x][enemy[i].y] = SBEAN;}enemy[i] = next2;map[enemy[i].x][enemy[i].y] = ENEMYBEAN;break;case SBEAN:if (map[enemy[i].x][enemy[i].y] == ENEMY) {map[enemy[i].x][enemy[i].y] = SPACE;}else if (map[enemy[i].x][enemy[i].y] == ENEMYBEAN) {map[enemy[i].x][enemy[i].y] = BEAN;}else if (map[enemy[i].x][enemy[i].y] == ENEMYSBEAN) {map[enemy[i].x][enemy[i].y] = SBEAN;}enemy[i] = next2;map[enemy[i].x][enemy[i].y] = ENEMYSBEAN;break;}*/switch (map[next.x][next.y]) {case WALL:break;case SPACE:if (map[enemy[i].x][enemy[i].y] == ENEMYBEAN) {map[enemy[i].x][enemy[i].y] = BEAN;}else if (map[enemy[i].x][enemy[i].y] == ENEMYSBEAN) {map[enemy[i].x][enemy[i].y] = SBEAN;}else {map[enemy[i].x][enemy[i].y] = SPACE;}enemy[i] = next;map[enemy[i].x][enemy[i].y] = ENEMY;break;case ENEMY:case ENEMYBEAN:case ENEMYSBEAN:break;case PLAYER:for (int i = 0; i < 4; i++) {if (next.x == player.x && next.y == player.y) {life--;if (life == 0) {mciSendString("close 1.mp3", 0, 0, 0);c = getchar();exit(0);}else {map[player.x][player.y] = SPACE;player.x = m;player.y = n;break;}}}break;case BEAN:if (map[enemy[i].x][enemy[i].y] == ENEMY) {map[enemy[i].x][enemy[i].y] = SPACE;}else if (map[enemy[i].x][enemy[i].y] == ENEMYBEAN) {map[enemy[i].x][enemy[i].y] = BEAN;}else if (map[enemy[i].x][enemy[i].y] == ENEMYSBEAN) {map[enemy[i].x][enemy[i].y] = SBEAN;}enemy[i] = next;map[enemy[i].x][enemy[i].y] = ENEMYBEAN;break;case SBEAN:if (map[enemy[i].x][enemy[i].y] == ENEMY) {map[enemy[i].x][enemy[i].y] = SPACE;}else if (map[enemy[i].x][enemy[i].y] == ENEMYBEAN) {map[enemy[i].x][enemy[i].y] = BEAN;}else if (map[enemy[i].x][enemy[i].y] == ENEMYSBEAN) {map[enemy[i].x][enemy[i].y] = SBEAN;}enemy[i] = next;map[enemy[i].x][enemy[i].y] = ENEMYSBEAN;break;}}
}
DIR EnemyBFS(int xx,int xy) {int dx[4], dy[4];int rnd[4];DIR vis[ROW][COL] = { NONE };int oridx[4] = { 0,0,-1,1 };int oridy[4] = { 1,-1,0,0 };DIR oridir[4] = { RIGHT,LEFT,UP,DOWN };DIR dr[4];Point v[ROW][COL];rnd[0] = rand() % 4;for (int i = 1; i < 4; i++) {bool x = 1;while (x) {rnd[i] = rand() % 4, x = 0;for (int j = 0; j < i; j++) if (rnd[i] == rnd[j]) x = 1;}}for (int i = 0; i < 4; i++) dx[i] = oridx[rnd[i]], dy[i] = oridy[rnd[i]], dr[i] = oridir[rnd[i]];std::queue<Point> q;q.push({ xx,xy });for (int i = 0; i < ROW; i++)for (int j = 0; j < COL; j++)if (map[i][j] != WALL) vis[i][j] = WAITING;else vis[i][j] = NONE;vis[xx][xy] = NONE;v[xx][xy] = { xx,xy };while (!q.empty()) {int _x_ = q.front().x, _y_ = q.front().y; q.pop();if (_x_ == player.x && _y_ == player.y) {Point t = { player.x,player.y }, lst = t;while (v[t.x][t.y].x!=t.x||v[t.x][t.y].y!=t.y) {lst = t;t = v[t.x][t.y];}int gox = lst.x, goy = lst.y;for (int i = 0; i < 4; i++) {if (xx + oridx[i] == gox && xy + oridy[i] == goy) return oridir[i];}return NONE;}for (int i = 0; i < 4; i++) {int nx = _x_ + dx[i], ny = _y_ + dy[i];if (vis[nx][ny] == WAITING) {vis[nx][ny] = dr[i];v[nx][ny] = { _x_,_y_ };q.push({ nx,ny });}}}return NONE;
}
void enemyControl() {srand((unsigned int)time(NULL));while (1) {for (int i = 0; i < 4; i++) {/*int r = player.x;int c = player.y;int r2 = enemy[i].x;int c2 = enemy[i].y;int m = rand() % 2 + 1;switch (m) {case 1:if (r < r2 && map[r2 - 1][c2] != WALL) {enemy[i].dir = UP;}else if (r > r2 && map[r2 + 1][c2] != WALL) {enemy[i].dir = DOWN;}else if (c < c2 && map[r2][c2 - 1] != WALL) {enemy[i].dir = LEFT;}else if (c > c2 && map[r2][c2 + 1] != WALL) {enemy[i].dir = RIGHT;}else {int n = rand() % 4 + 1;switch (n) {case 1:enemy[i].dir = UP;break;case 2:enemy[i].dir = DOWN;break;case 3:enemy[i].dir = LEFT;break;case 4:enemy[i].dir = RIGHT;}}break;case 2:if (r < r2 && map[r2 - 1][c2] != WALL) {enemy[i].dir = UP;}else if (r > r2 && map[r2 + 1][c2] != WALL) {enemy[i].dir = DOWN;}else if (c < c2 && map[r2][c2 - 1] != WALL) {enemy[i].dir = LEFT;}else if (c > c2 && map[r2][c2 + 1] != WALL) {enemy[i].dir = RIGHT;}else {int n = rand() % 4 + 1;switch (n) {case 1:enemy[i].dir = UP;break;case 2:enemy[i].dir = DOWN;break;case 3:enemy[i].dir = LEFT;break;case 4:enemy[i].dir = RIGHT;}}break;}*/enemy[i].dir = EnemyBFS(enemy[i].x, enemy[i].y);Sleep(300);}}
}
bool isWin() {for (int i = 0; i < ROW; i++) {for (int j = 0; j < COL; j++) {if (map[i][j] == BEAN  || map[i][j] == SBEAN) return false;}}
}
int main() {initgraph(WIDTH, HEIGHT);CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)enemyControl, NULL, NULL, NULL);mciSendString("open 1.mp3", 0, 0, 0);mciSendString("play 1.mp3 repeat", 0, 0, 0);int s = 0;srand((unsigned int)time(NULL));do {m = rand() % ROW;n = rand() % COL;} while (map[m][n] == WALL || map[m][n] == ENEMY);BeginBatchDraw();initMap();while (life) {drawMap();do {m = rand() % ROW;n = rand() % COL;} while (map[m][n] == WALL);if (t1 - t2 >= 150) {movePlayer();t2 = t1;}if (t3 - t4 >= speed) {moveEnemy();t4 = t3;}if (t5 - t6 >= 10000 && willGo == false) {willGo = true;t6 = t5;}t1 = GetTickCount64();t3 = GetTickCount64();t5 = GetTickCount64();keyDown();//enemyControl();if (isWin()) {s++;if (s == 3) {mciSendString("close 1.mp3", 0, 0, 0);mciSendString("open 2.mp3", 0, 0, 0);mciSendString("play 2.mp3", 0, 0, 0);break;}}FlushBatchDraw();}EndBatchDraw();closegraph();return 0;
}

嘿嘿,竟然真的有人看完了整篇博客?欸嘿,那肯定要送一点福利呀,简单给个预告,下一篇很可能是关于flappy bird的游戏的,大家敬请期待

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 白骑士的Matlab教学进阶篇 2.5 Simulink
  • C语言 ——— 在杨氏矩阵中查找具体的某个数
  • IT管理:我与IT的故事1--努力是成功的序曲
  • Redis缓存配置
  • 大数据治理平台建设与应用解决方案(41页PPT)
  • JAVA解压文件到目标目录
  • Nginx系列-负载均衡
  • 思科静态路由配置1
  • 实训日记day27
  • 热搜|“月薪4300一个月的存钱计划”,普通人如何实现财富自由?
  • C:每日一题:单身狗
  • 汇昌联信做拼多多店铺如何运营?
  • 微信小程序 for,if语法 事件对象,事件传参
  • 岗位信息采集全攻略:两种方法快速获取招聘信息
  • Mariadb数据库本机无密码登录的问题解决
  • Android 架构优化~MVP 架构改造
  • angular学习第一篇-----环境搭建
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • IndexedDB
  • Java|序列化异常StreamCorruptedException的解决方法
  • js中的正则表达式入门
  • Laravel核心解读--Facades
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • v-if和v-for连用出现的问题
  • Vue 2.3、2.4 知识点小结
  • Vue官网教程学习过程中值得记录的一些事情
  • Vue全家桶实现一个Web App
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 前端学习笔记之观察者模式
  • 前嗅ForeSpider中数据浏览界面介绍
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 推荐一个React的管理后台框架
  • 微服务核心架构梳理
  • 微信小程序实战练习(仿五洲到家微信版)
  • 译自由幺半群
  • 如何正确理解,内页权重高于首页?
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • # 职场生活之道:善于团结
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • ###C语言程序设计-----C语言学习(6)#
  • $.each()与$(selector).each()
  • (21)起落架/可伸缩相机支架
  • (3)STL算法之搜索
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (二十三)Flask之高频面试点
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • (每日一问)基础知识:堆与栈的区别
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)jQuery 基础
  • (转)Scala的“=”符号简介