C++使用easyx实现打砖块游戏

Dianthe ·
更新时间:2024-11-14
· 861 次阅读

本文实例为大家分享了C++使用easyx实现打砖块游戏的具体代码,供大家参考,具体内容如下

代码:

#include<graphics.h> #include<conio.h> #include<cstdio> #include<time.h> #include<cmath> #include<stdio.h> #include <string> #define HEIGHT 700 #define WIDTH 400 int ball_x, ball_y; int ball_vx, ball_vy; int radius; int left, right, top, bottom; int baffle_x, baffle_y; int baffle_size; int baffle_move; int brick_x, brick_y; int brick_r; int score; int sleep_time; bool isExit; bool isLose; void initBall() {     left = 0;     top = 0;     right = WIDTH;     bottom = HEIGHT;     ball_x = (right - left) / 2;     ball_y = (bottom - top) / 2;     ball_vx = 1;     ball_vy = 1;     radius = 15;     brick_x = 30;     brick_y = 30;     brick_r = 20;     score = 0;     sleep_time = 5;     baffle_move = 8;     isExit = false;     isLose = false; } void initBaffle() {     baffle_x = (right - left) / 2;     baffle_y = bottom - HEIGHT/8;     baffle_size = WIDTH/2; } void drawBall() {     setfillcolor(RGB(0,255, 0));     fillcircle(ball_x, ball_y, radius); } void drawBrick() {     if (isExit == true) {         setfillcolor(RGB(255, 255, 0));         fillcircle(brick_x, brick_y, brick_r);     }     if (isExit == false) {         isExit = 1;         brick_x = rand() % WIDTH;         brick_y = rand() % HEIGHT / 2;     }     printf("score :%d", score); } void drawBaffle() {     setfillcolor(RGB(255,0, 0));     line(baffle_x, baffle_y, baffle_x + baffle_size, baffle_y); } void updataWithInput() {     //交互     char input;     //根据键盘输入判断平台的移动     if (_kbhit()) {         input = _getch();         switch (input)         {         case 'a':             if (baffle_x > 0)                 baffle_x -= baffle_move;             break;         /*case 'w':             if (baffle_y > 0)                 baffle_y -= baffle_move;             break;         case 's':             if (baffle_y < bottom - 1)                 baffle_y += baffle_move;             break;*/         case 'd':             if (baffle_x < right - baffle_size)                 baffle_x += baffle_move;             break;         default:             break;         }     } } void updateBall() {     static int count = 0;     count++;     if (count == 5) {         count = 0;         ball_x += ball_vx;         ball_y += ball_vy;     }     if (ball_x <= left + radius || ball_x >= right - radius) {         ball_vx = -ball_vx;     }     if (ball_y <= top + radius) {         ball_vy = -ball_vy;     }     if (ball_y >= bottom - radius) {         isLose = true;     }     if (ball_y == baffle_y - radius && ball_x >= baffle_x && ball_x <= baffle_x + baffle_size) {         ball_vy = -ball_vy;     }     if (pow((ball_x - brick_x), 2) + pow((ball_y - brick_y), 2) <= pow((brick_r + radius), 2)) {         ball_vx = -ball_vx;         ball_vy = -ball_vy;         isExit = 0;         score++;     } } //void print_score() { //     //    char a[20] = "score"; //    int t = 1; //    int tmp = score; //    while (score > 0) { //        t*=10; //        tmp /= 10; //    } //    for (int i = 5; i < 15 && t!=0; i++, t /= 10) { //        a[i] = score%t; //        t %= 10; //    } //    sprintf_s(a, "%d",score); //    TCHAR s[] = _T("score:"); //     //    settextcolor(GREEN); //    const char* ca = a; //    outtextxy(WIDTH/2,HEIGHT/2,ca); //    outtextxy(WIDTH / 2, HEIGHT / 2,score); //} int main() {     initgraph(WIDTH, HEIGHT);     BeginBatchDraw();     initBall();     initBaffle();     while (1)     {         if (isLose == true) {             cleardevice();             TCHAR s[] = _T("LOSE");             outtextxy(WIDTH/2,HEIGHT/2, s);         }         FlushBatchDraw();         cleardevice();         drawBall();         drawBrick();         drawBaffle();         updataWithInput();         updateBall();         //print_score();         //Sleep(sleep_time);     }     EndBatchDraw();     closegraph();     return 0; }



c+ C++

需要 登录 后方可回复, 如果你还没有账号请 注册新账号