C++使用easyx實現(xiàn)打磚塊游戲
更新時間:2022年05月11日 12:20:23 作者:Object_in_java
這篇文章主要為大家詳細介紹了C++使用easyx實現(xiàn)打磚塊游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了C++使用easyx實現(xiàn)打磚塊游戲的具體代碼,供大家參考,具體內(nèi)容如下
代碼:
#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; ?? ?//根據(jù)鍵盤輸入判斷平臺的移動 ?? ?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; }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章: