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

VisualStudio2022 C++ EasyX EGE FlappyBird小游戏

欸嘿,我从不托更哈,今天如约带来flappy fird的代码,图形版的哈,很好玩,比其他的黑窗窗好玩多了,前提是你要能找到素材图片【手动滑稽】

求点赞、关注、收藏、转发

还说啥,直接上代码

#include<time.h>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<iostream>
#include<graphics.h>
#include<mmsystem.h>
#pragma comment(lib,"winmm.lib")
//#define _CRT_SECURE_NO_WANINGS
#define WIDTH					288
#define HEIGHT					603
using namespace std;
IMAGE background;
IMAGE background2;
IMAGE bigBird[3][2];
IMAGE down[2];
IMAGE up[2];
IMAGE banner[2], start[2];
IMAGE gameover;
IMAGE SGB[2];
IMAGE pause[2][2];
HWND hwnd;
int timeSleep = 90;
bool day = false;
bool wings = true;
bool GameOver = false;
bool g1 = true, g2 = true, g3 = true;
int xy = 0, score = 0;
struct bird {int x, y;int speed;int pos;
} flayBird = { 124,304,50,1 };
struct pillar {int x, y;int height;
} arrayPillar[3];
DWORD WINAPI playMusic(LPVOID lpvoid) {mciSendString("open 2.mp3", 0, 0, 0);mciSendString("play 2.mp3 wait", 0, 0, 0);mciSendString("close 2.mp3", 0, 0, 0);return 0;
}
void initPillar(pillar arrayPillar[], int i) {arrayPillar[i].height = rand() % 100 + 160;arrayPillar[i].x = 288;arrayPillar[i].y = 0;
}
void drawPillar(pillar curPillar) {putimage(curPillar.x, 0, 52, curPillar.height, &down[0], 0, 320 - curPillar.height, SRCAND);putimage(curPillar.x, 0, 52, curPillar.height, &down[1], 0, 320 - curPillar.height, SRCPAINT);putimage(curPillar.x, 512 - 320 + curPillar.height, 52, 320 - curPillar.height, &up[0], 0, 0, SRCAND);putimage(curPillar.x, 512 - 320 + curPillar.height, 52, 320 - curPillar.height, &up[1], 0, 0, SRCPAINT);
}
bool ButtonHit() {MOUSEMSG msg;PeekMouseMsg(&msg);if (msg.x >= 253 && msg.x <= 288 && msg.y >= 0 && msg.y <= 35) {loadimage(&SGB[1], "关闭2.png", 35, 35);if (msg.mkLButton) {exit(0);return true;}}else {loadimage(&SGB[1], "关闭.png", 35, 35);}putimage(253, 0, &SGB[0], SRCAND);putimage(253, 0, &SGB[1], SRCPAINT);return false;
}
void Start() {putimage(55, 85, &banner[0], SRCAND);putimage(55, 85, &banner[1], SRCPAINT);putimage(86, 250, &start[0], SRCAND);putimage(86, 250, &start[1], SRCPAINT);MOUSEMSG msg;BeginBatchDraw();while (1) {PeekMouseMsg(&msg);if (msg.mkLButton && msg.x >= 86 && msg.x <= 86 + 116 && msg.y >= 250 && msg.y <= 320) {break;}FlushBatchDraw();}EndBatchDraw();
}
void loadResource() {loadimage(&background, "background.png");loadimage(&background2, "background2.png");loadimage(&down[0], "downy.png");loadimage(&down[1], "down.png");loadimage(&up[0], "upy.png");loadimage(&up[1], "up.png");loadimage(&bigBird[0][1], "bird1.png", 48, 48);loadimage(&bigBird[0][0], "bird1y.png", 48, 48);loadimage(&bigBird[1][1], "bird2.png", 48, 48);loadimage(&bigBird[1][0], "bird2y.png", 48, 48);loadimage(&bigBird[2][1], "bird3.png", 48, 48);loadimage(&bigBird[2][0], "bird3y.png", 48, 48);loadimage(&banner[0], "bannery.png");loadimage(&banner[1], "banner.png");loadimage(&start[0], "starty.png");loadimage(&start[1], "start.png");loadimage(&gameover, "GameOver.jpeg");loadimage(&SGB[0], "关闭掩码图.png", 35, 35);loadimage(&SGB[1], "关闭.png", 35, 35);loadimage(&pause[0][0], "暂停1y.png", 35, 35);loadimage(&pause[0][1], "暂停1.png", 35, 35);loadimage(&pause[1][0], "暂停2y.png", 35, 35);loadimage(&pause[1][1], "暂停2.png", 35, 35);
}
void drawBird() {switch (flayBird.pos) {case 1:putimage(flayBird.x, flayBird.y, &bigBird[0][0], SRCAND);putimage(flayBird.x, flayBird.y, &bigBird[0][1], SRCPAINT);break;case 2:putimage(flayBird.x, flayBird.y, &bigBird[1][0], SRCAND);putimage(flayBird.x, flayBird.y, &bigBird[1][1], SRCPAINT);break;case 3:putimage(flayBird.x, flayBird.y, &bigBird[2][0], SRCAND);putimage(flayBird.x, flayBird.y, &bigBird[2][1], SRCPAINT);break;}
}
void keyDown() {if (_kbhit()) {switch (_getch()) {default:break;}CreateThread(NULL, NULL, playMusic, NULL, NULL, NULL);flayBird.y -= flayBird.speed;}
}
void hit() {if (flayBird.y + 48 >= 512 || flayBird.y <= 0) {GameOver = true;}for (int i = 0; i < 3; i++) {if (flayBird.x + 48 >= arrayPillar[i].x && flayBird.x + 48 <= arrayPillar[i].x + 52 || flayBird.x >= arrayPillar[i].x && flayBird.x <= arrayPillar[i].x + 52) {if (flayBird.y + 48 <= arrayPillar[i].height || flayBird.y <= arrayPillar[i].height) {GameOver = true;}else if (flayBird.y >= 512 - 320 + arrayPillar[i].height || flayBird.y + 48 >= 512 - 320 + arrayPillar[i].height) {GameOver = true;}}}
}
void End() {hwnd = initgraph(300, 300);HWND hd = GetDesktopWindow();RECT rect;GetClientRect(hd, &rect);int width = (rect.right - rect.left);int height = (rect.bottom - rect.top);std::cout << "client width:" << width << std::endl;std::cout << "client height:" << height << std::endl;LONG style = GetWindowLong(hwnd, GWL_STYLE);style &= ~(WS_BORDER | WS_CAPTION | WS_THICKFRAME);SetWindowLong(hwnd, GWL_STYLE, style);SetWindowPos(hwnd, NULL, (width - 300) / 2, (height - 300) / 2, 300, 300, NULL);putimage(0, 0, &gameover);EndBatchDraw();
}
int main() {hwnd = initgraph(WIDTH, HEIGHT);HWND hd = GetDesktopWindow();RECT rect;GetClientRect(hd, &rect);int w = (rect.right - rect.left);int h = (rect.bottom - rect.top);LONG style = GetWindowLong(hwnd, GWL_STYLE);style &= ~(WS_BORDER | WS_CAPTION | WS_THICKFRAME);SetWindowLong(hwnd, GWL_STYLE, style);SetWindowPos(hwnd, NULL, (w - WIDTH) / 2, (h - HEIGHT) / 2, WIDTH, HEIGHT, NULL);mciSendString("open 1.mp3 alias 1", 0, 0, 0);mciSendString("play 1 repeat", 0, 0, 0);DWORD t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0;srand(time(NULL));loadResource();for (int i = 0; i < 3; i++) {initPillar(arrayPillar, i);arrayPillar[i].x = 288 + i * 150;}putimage(0, 0, &background, SRCPAINT);putimage(0, 512, &background2, SRCPAINT);Start();cleardevice();settextcolor(RED);settextstyle(30, 0, "华文琥珀");setbkmode(TRANSPARENT);char ch[100];BeginBatchDraw();while (GameOver == false) {cleardevice();putimage(0, 0, &background, SRCPAINT);putimage(xy, 512, &background2, SRCPAINT);keyDown();drawBird();hit();for (int i = 0; i < 3; i++) {drawPillar(arrayPillar[i]);}if (t1 - t2 >= 100) {flayBird.y += 6;t2 = t1;}if (t3 - t4 >= timeSleep) {for (int i = 0; i < 3; i++) {arrayPillar[i].x -= 5;if (arrayPillar[i].x < (-52 - 150)) {initPillar(arrayPillar, i);switch (i) {case 0:g1 = true;break;case 1:g2 = true;break;case 2:g3 = true;break;}}if (arrayPillar[i].x < flayBird.x) {switch (i) {case 0:if (g1 == true) {g1 = false;score++;}break;case 1:if (g2 == true) {g2 = false;score++;}break;case 2:if (g3 == true) {g3 = false;score++;}break;}}}t4 = t3;}if (t5 - t6 >= timeSleep / 4) {xy--;t6 = t5;}if (t7 - t8 >= 60000) {switch (day) {case false:loadimage(&background, "background.png");day = true;break;case true:loadimage(&background, "background0.png");day = false;break;}t8 = t7;}if (t9 - t10 >= 10000) {if (timeSleep - 2 >= 0) {timeSleep -= 2;}t10 = t9;}t1 = GetTickCount();t3 = GetTickCount();t5 = GetTickCount();t7 = GetTickCount();t9 = GetTickCount();if (wings) flayBird.pos++;else flayBird.pos--;switch (flayBird.pos) {case 0:flayBird.pos = 2;wings = true;break;case 4:flayBird.pos = 2;wings = false;break;}if (xy < -23) xy = -1;if (score == 999) GameOver = true;sprintf(ch, "%d", score);int spaceH = (getwidth() - textwidth(ch)) / 2;outtextxy(spaceH, 0, ch);ButtonHit();FlushBatchDraw();}putimage(0, 0, &background, SRCPAINT);putimage(xy, 512, &background2, SRCPAINT);Sleep(1000);EndBatchDraw();End();MessageBox(hwnd, "         GameOver", "温馨提示", MB_OK);return 0;
}


http://www.mrgr.cn/news/2321.html

相关文章:

  • day01- Web开发介绍-HTML-CS
  • DVWA-CSRF-High
  • 数学基础 -- 函数的平均值定理与定积分的中值定理
  • java15-网络编程
  • Qt程序比较字符串Qstring是否相等
  • D 10.4.2 基于Unigui的Email定时发送 (Windows、Linux)
  • centos安装docker
  • 8月16日笔记
  • 机器学习在智能复合材料中的应用与实践
  • 【K8S系列】Kubernetes基础介绍
  • 运行微信小程序报错:Bad attr data-event-opts with message
  • 【Python机器学习】利用PCA来简化数据——示例:利用PCA对半导体制造数据降维
  • ChatGPT 如何实现自然语言搜索企业数据?
  • React+Vis.js(05):vis.js的节点的点击事件
  • linux | ubuntu虚拟机创建硬盘、磁盘分区、分区挂载、自动挂载、磁盘清理
  • ModuleNotFoundError: No module named ‘sentence_transformers.model_card‘
  • Spring AOP应用指南:概念、通知与表达式分析
  • AI作画提示词(Prompts)工程:指南与实践技巧
  • 巴西服务器租用市场:中国企业出海布局的新热点
  • 2024新型数字政府综合解决方案(五)