C++使用easyx實(shí)現(xiàn)打磚塊游戲
本文實(shí)例為大家分享了C++使用easyx實(shí)現(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ù)鍵盤輸入判斷平臺(tái)的移動(dòng)
?? ?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;
}以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++實(shí)現(xiàn)路口交通燈模擬系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)路口交通燈模擬系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
char str[] 與 char *str的區(qū)別詳細(xì)解析
以下是對(duì)char str[]與char *str的區(qū)別進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下2013-09-09
C++ OpenCV實(shí)現(xiàn)灰度圖蒙版GrayMask的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用C++和OpenCV實(shí)現(xiàn)灰度圖蒙版GrayMask,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定參考價(jià)值,需要的可以參考一下2022-05-05
C/C++?Qt?運(yùn)用JSON解析庫(kù)的實(shí)例代碼
這篇文章主要介紹了C/C++?Qt?運(yùn)用JSON解析庫(kù)的相關(guān)知識(shí),通過代碼依次解析這個(gè)json文件中的每一個(gè)參數(shù),代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01
C語(yǔ)言使用setjmp和longjmp實(shí)現(xiàn)一個(gè)簡(jiǎn)單的協(xié)程
這篇文章主要為大家介紹了C語(yǔ)言使用setjmp和longjmp實(shí)現(xiàn)一個(gè)簡(jiǎn)單的協(xié)程過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
C++實(shí)現(xiàn)LeetCode(41.首個(gè)缺失的正數(shù))
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(41.首個(gè)缺失的正數(shù)),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07

