日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C++使用easyx實現打磚塊游戲_C 語言

作者:Object_in_java ? 更新時間: 2022-07-06 編程語言

本文實例為大家分享了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;
}

原文鏈接:https://blog.csdn.net/m0_45311187/article/details/120904817

欄目分類
最近更新