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;
}

猜你喜欢

转载自blog.csdn.net/m0_45311187/article/details/120904817