This commit is contained in:
RafayAhmad7548 2024-06-16 18:53:25 +05:00
parent 37776af5db
commit ab03d5f10c
4045 changed files with 286212 additions and 3 deletions

View file

@ -0,0 +1,100 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, colors[GRAY])){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr) delete balls[i];
delete[] balls;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) delete bricks[i][j];
if(food[i][j] != nullptr) delete food[i][j];
}
delete[] bricks[i];
delete[] food[i];
}
delete[] bricks;
delete[] food;
}

View file

@ -0,0 +1,103 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle*& GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr) delete balls[i];
delete[] balls;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) delete bricks[i][j];
if(food[i][j] != nullptr) delete food[i][j];
}
delete[] bricks[i];
delete[] food[i];
}
delete[] bricks;
delete[] food;
}

View file

@ -0,0 +1,99 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, colors[GRAY])){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr) delete balls[i];
delete[] balls;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) delete bricks[i][j];
if(food[i][j] != nullptr) delete food[i][j];
}
delete[] bricks[i];
delete[] food[i];
}
delete[] bricks;
delete[] food;
}

View file

@ -0,0 +1,136 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
if(paddle2 != nullptr) paddle2->draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBalls(int& lives, std::string& gameState){
bool ballsLeft = false;
for(int i=0;i<3;i++){
if(balls[i] != nullptr) ballsLeft = true;
}
if(!ballsLeft){
lives--;
balls[0] = new Ball(-10, 50, 10, colors[RED]);
}
if(lives <= 0) gameState = "gameover";
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
int& GameLevel::getLives(){
return lives;
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr){
delete balls[i];
balls[i] = nullptr;
}
delete[] balls;
balls = nullptr;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
if(food[i][j] != nullptr){
delete food[i][j];
food[i][j] = nullptr;
}
}
delete[] bricks[i];
bricks[i] = nullptr;
delete[] food[i];
food[i] = nullptr;
}
delete[] bricks;
bricks = nullptr;
delete[] food;
food = nullptr;
if(paddle2 != nullptr){
delete paddle2;
paddle2 = nullptr;
}
}

View file

@ -0,0 +1,136 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
if(paddle2 != nullptr) paddle2->draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBalls(int& lives, int& gameState){
bool ballsLeft = false;
for(int i=0;i<3;i++){
if(balls[i] != nullptr) ballsLeft = true;
}
if(!ballsLeft){
lives--;
balls[0] = new Ball(-10, 50, 10, colors[RED]);
}
// if(lives <= 0) gameState = "gameover";
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
int& GameLevel::getLives(){
return lives;
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr){
delete balls[i];
balls[i] = nullptr;
}
delete[] balls;
balls = nullptr;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
if(food[i][j] != nullptr){
delete food[i][j];
food[i][j] = nullptr;
}
}
delete[] bricks[i];
bricks[i] = nullptr;
delete[] food[i];
food[i] = nullptr;
}
delete[] bricks;
bricks = nullptr;
delete[] food;
food = nullptr;
if(paddle2 != nullptr){
delete paddle2;
paddle2 = nullptr;
}
}

View file

@ -0,0 +1,105 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
if(paddle2 != nullptr) paddle2->draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr) delete balls[i];
delete[] balls;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) delete bricks[i][j];
if(food[i][j] != nullptr) delete food[i][j];
}
delete[] bricks[i];
delete[] food[i];
}
delete[] bricks;
delete[] food;
if(paddle2 != nullptr) delete paddle2;
}

View file

@ -0,0 +1,96 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, colors[GRAY])){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
paddle.draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
cout<<"Nice\n";
}
}
}
}
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr) delete balls[i];
delete[] balls;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) delete bricks[i][j];
if(food[i][j] != nullptr) delete food[i][j];
}
delete[] bricks[i];
delete[] food[i];
}
delete[] bricks;
delete[] food;
}

View file

@ -0,0 +1,96 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, colors[GRAY])){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
paddle.draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int i=0;i<3;i++) if(balls[i] != nullptr) broken = bricks[i][j]->checkCollision(*balls[i]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
cout<<"Nice\n";
}
}
}
}
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr) delete balls[i];
delete[] balls;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) delete bricks[i][j];
if(food[i][j] != nullptr) delete food[i][j];
}
delete[] bricks[i];
delete[] food[i];
}
delete[] bricks;
delete[] food;
}

View file

@ -0,0 +1,96 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, colors[GRAY])){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
paddle.draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int i=0;i<3;i++) if(balls[i] != nullptr) broken = bricks[i][j]->checkCollision(*balls[i]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
cout<<"Nice\n";
}
}
}
}
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr) delete balls[i];
delete[] balls;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) delete bricks[i][j];
if(food[i][j] != nullptr) delete food[i][j];
}
delete[] bricks[i];
delete[] food[i];
}
delete[] bricks;
delete[] food;
}

View file

@ -0,0 +1,135 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
if(paddle2 != nullptr) paddle2->draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBalls(int& lives){
bool ballsLeft = false;
for(int i=0;i<3;i++){
if(balls[i] != nullptr) ballsLeft = true;
}
if(!ballsLeft){
lives--;
balls[0] = new Ball(-10, 50, 10, colors[RED]);
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
int& GameLevel::getLives(){
return lives;
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr){
delete balls[i];
balls[i] = nullptr;
}
delete[] balls;
balls = nullptr;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
if(food[i][j] != nullptr){
delete food[i][j];
food[i][j] = nullptr;
}
}
delete[] bricks[i];
bricks[i] = nullptr;
delete[] food[i];
food[i] = nullptr;
}
delete[] bricks;
bricks = nullptr;
delete[] food;
food = nullptr;
if(paddle2 != nullptr){
delete paddle2;
paddle2 = nullptr;
}
}

View file

@ -0,0 +1,130 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
if(paddle2 != nullptr) paddle2->draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBalls(){
for(int i=0;i<3;i++){
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
int& GameLevel::getLives(){
return lives;
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr){
delete balls[i];
balls[i] = nullptr;
}
delete[] balls;
balls = nullptr;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
if(food[i][j] != nullptr){
delete food[i][j];
food[i][j] = nullptr;
}
}
delete[] bricks[i];
bricks[i] = nullptr;
delete[] food[i];
food[i] = nullptr;
}
delete[] bricks;
bricks = nullptr;
delete[] food;
food = nullptr;
if(paddle2 != nullptr){
delete paddle2;
paddle2 = nullptr;
}
}

View file

@ -0,0 +1,108 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
if(paddle2 != nullptr) paddle2->draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++)
if(balls[i] != nullptr){
delete balls[i];
}
delete[] balls;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) delete bricks[i][j];
if(food[i][j] != nullptr) delete food[i][j];
}
delete[] bricks[i];
delete[] food[i];
}
delete[] bricks;
delete[] food;
if(paddle2 != nullptr) delete paddle2;
}

View file

@ -0,0 +1,136 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
if(paddle2 != nullptr) paddle2->draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBalls(int& lives){
bool ballsLeft = false;
for(int i=0;i<3;i++){
if(balls[i] != nullptr) ballsLeft = true;
}
if(!ballsLeft){
lives--;
balls[0] = new Ball(-10, 50, 10, colors[RED]);
}
// if(lives <= 0) gameState = "gameover";
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
int& GameLevel::getLives(){
return lives;
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr){
delete balls[i];
balls[i] = nullptr;
}
delete[] balls;
balls = nullptr;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
if(food[i][j] != nullptr){
delete food[i][j];
food[i][j] = nullptr;
}
}
delete[] bricks[i];
bricks[i] = nullptr;
delete[] food[i];
food[i] = nullptr;
}
delete[] bricks;
bricks = nullptr;
delete[] food;
food = nullptr;
if(paddle2 != nullptr){
delete paddle2;
paddle2 = nullptr;
}
}

View file

@ -0,0 +1,95 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, colors[GRAY])){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
paddle.draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr) delete balls[i];
delete[] balls;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) delete bricks[i][j];
if(food[i][j] != nullptr) delete food[i][j];
}
delete[] bricks[i];
delete[] food[i];
}
delete[] bricks;
delete[] food;
}

View file

@ -0,0 +1,103 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr) delete balls[i];
delete[] balls;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) delete bricks[i][j];
if(food[i][j] != nullptr) delete food[i][j];
}
delete[] bricks[i];
delete[] food[i];
}
delete[] bricks;
delete[] food;
}

View file

@ -0,0 +1,147 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
if(paddle2 != nullptr) paddle2->draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBalls(int& lives){
bool ballsLeft = false;
for(int i=0;i<3;i++){
if(balls[i] != nullptr) ballsLeft = true;
}
if(!ballsLeft){
lives--;
balls[0] = new Ball(-10, 50, 10, colors[RED]);
}
if(lives <= 0) exit(0);
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
void GameLevel::checkLevelEnd(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
}
}
}
}
int& GameLevel::getLives(){
return lives;
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr){
delete balls[i];
balls[i] = nullptr;
}
delete[] balls;
balls = nullptr;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
if(food[i][j] != nullptr){
delete food[i][j];
food[i][j] = nullptr;
}
}
delete[] bricks[i];
bricks[i] = nullptr;
delete[] food[i];
food[i] = nullptr;
}
delete[] bricks;
bricks = nullptr;
delete[] food;
food = nullptr;
if(paddle2 != nullptr){
delete paddle2;
paddle2 = nullptr;
}
}

View file

@ -0,0 +1,103 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle& GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr) delete balls[i];
delete[] balls;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) delete bricks[i][j];
if(food[i][j] != nullptr) delete food[i][j];
}
delete[] bricks[i];
delete[] food[i];
}
delete[] bricks;
delete[] food;
}

View file

@ -0,0 +1,124 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
if(paddle2 != nullptr) paddle2->draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
int& GameLevel::getLives(){
return lives;
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr){
delete balls[i];
balls[i] = nullptr;
}
delete[] balls;
balls = nullptr;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
if(food[i][j] != nullptr){
delete food[i][j];
food[i][j] = nullptr;
}
}
delete[] bricks[i];
bricks[i] = nullptr;
delete[] food[i];
food[i] = nullptr;
}
delete[] bricks;
bricks = nullptr;
delete[] food;
food = nullptr;
if(paddle2 != nullptr){
delete paddle2;
paddle2 = nullptr;
}
}

View file

@ -0,0 +1,138 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
if(paddle2 != nullptr) paddle2->draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBalls(int& lives, std::string& gameState){
bool ballsLeft = false;
for(int i=0;i<3;i++){
if(balls[i] != nullptr) ballsLeft = true;
}
if(!ballsLeft){
lives--;
balls[0] = new Ball(-10, 50, 10, colors[RED]);
}
if(lives <= 0){
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
int& GameLevel::getLives(){
return lives;
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr){
delete balls[i];
balls[i] = nullptr;
}
delete[] balls;
balls = nullptr;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
if(food[i][j] != nullptr){
delete food[i][j];
food[i][j] = nullptr;
}
}
delete[] bricks[i];
bricks[i] = nullptr;
delete[] food[i];
food[i] = nullptr;
}
delete[] bricks;
bricks = nullptr;
delete[] food;
food = nullptr;
if(paddle2 != nullptr){
delete paddle2;
paddle2 = nullptr;
}
}

View file

@ -0,0 +1,96 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, colors[GRAY])){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
paddle.draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken[3] = {false};
for(int i=0;i<3;i++) if(balls[i] != nullptr) broken = bricks[i][j]->checkCollision(*balls[i]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
cout<<"Nice\n";
}
}
}
}
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr) delete balls[i];
delete[] balls;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) delete bricks[i][j];
if(food[i][j] != nullptr) delete food[i][j];
}
delete[] bricks[i];
delete[] food[i];
}
delete[] bricks;
delete[] food;
}

View file

@ -0,0 +1,97 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, colors[GRAY])){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
paddle.draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr) delete balls[i];
delete[] balls;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) delete bricks[i][j];
if(food[i][j] != nullptr) delete food[i][j];
}
delete[] bricks[i];
delete[] food[i];
}
delete[] bricks;
delete[] food;
}

View file

@ -0,0 +1,136 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
if(paddle2 != nullptr) paddle2->draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBalls(int& lives){
bool ballsLeft = false;
for(int i=0;i<3;i++){
if(balls[i] != nullptr) ballsLeft = true;
}
if(!ballsLeft){
lives--;
balls[0] = new Ball(-10, 50, 10, colors[RED]);
}
if(lives <= 0) exit(0);
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
int& GameLevel::getLives(){
return lives;
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr){
delete balls[i];
balls[i] = nullptr;
}
delete[] balls;
balls = nullptr;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
if(food[i][j] != nullptr){
delete food[i][j];
food[i][j] = nullptr;
}
}
delete[] bricks[i];
bricks[i] = nullptr;
delete[] food[i];
food[i] = nullptr;
}
delete[] bricks;
bricks = nullptr;
delete[] food;
food = nullptr;
if(paddle2 != nullptr){
delete paddle2;
paddle2 = nullptr;
}
}

View file

@ -0,0 +1,103 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr) delete balls[i];
delete[] balls;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) delete bricks[i][j];
if(food[i][j] != nullptr) delete food[i][j];
}
delete[] bricks[i];
delete[] food[i];
}
delete[] bricks;
delete[] food;
}

View file

@ -0,0 +1,136 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
if(paddle2 != nullptr) paddle2->draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBalls(int& lives, std::string& gameState){
bool ballsLeft = false;
for(int i=0;i<3;i++){
if(balls[i] != nullptr) ballsLeft = true;
}
if(!ballsLeft){
lives--;
balls[0] = new Ball(-10, 50, 10, colors[RED]);
}
if(lives <= 0) gameState = "gameover";
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
int& GameLevel::getLives(){
return lives;
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr){
delete balls[i];
balls[i] = nullptr;
}
delete[] balls;
balls = nullptr;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
if(food[i][j] != nullptr){
delete food[i][j];
food[i][j] = nullptr;
}
}
delete[] bricks[i];
bricks[i] = nullptr;
delete[] food[i];
food[i] = nullptr;
}
delete[] bricks;
bricks = nullptr;
delete[] food;
food = nullptr;
if(paddle2 != nullptr){
delete paddle2;
paddle2 = nullptr;
}
}

View file

@ -0,0 +1,122 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
if(paddle2 != nullptr) paddle2->draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr){
delete balls[i];
balls[i] = nullptr;
}
delete[] balls;
balls = nullptr;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
if(food[i][j] != nullptr){
delete food[i][j];
food[i][j] = nullptr;
}
}
delete[] bricks[i];
bricks[i] = nullptr;
delete[] food[i];
food[i] = nullptr;
}
delete[] bricks;
bricks = nullptr;
delete[] food;
food = nullptr;
if(paddle2 != nullptr){
delete paddle2;
paddle2 = nullptr;
}
}

View file

@ -0,0 +1,135 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
if(paddle2 != nullptr) paddle2->draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBalls(int& lives){
bool ballsLeft = false;
for(int i=0;i<3;i++){
if(balls[i] != nullptr) ballsLeft = true;
}
if(!ballsLeft){
lives--;
balls[0] = new Ball();
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
int& GameLevel::getLives(){
return lives;
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr){
delete balls[i];
balls[i] = nullptr;
}
delete[] balls;
balls = nullptr;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
if(food[i][j] != nullptr){
delete food[i][j];
food[i][j] = nullptr;
}
}
delete[] bricks[i];
bricks[i] = nullptr;
delete[] food[i];
food[i] = nullptr;
}
delete[] bricks;
bricks = nullptr;
delete[] food;
food = nullptr;
if(paddle2 != nullptr){
delete paddle2;
paddle2 = nullptr;
}
}

View file

@ -0,0 +1,99 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, colors[GRAY])){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(60, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(60, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr) delete balls[i];
delete[] balls;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) delete bricks[i][j];
if(food[i][j] != nullptr) delete food[i][j];
}
delete[] bricks[i];
delete[] food[i];
}
delete[] bricks;
delete[] food;
}

View file

@ -0,0 +1,109 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
if(paddle2 != nullptr) paddle2->draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr){
delete balls[i];
balls[i] = nullptr;
}
delete[] balls;
balls = nullptr;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) delete bricks[i][j];
if(food[i][j] != nullptr) delete food[i][j];
}
delete[] bricks[i];
delete[] food[i];
}
delete[] bricks;
delete[] food;
if(paddle2 != nullptr) delete paddle2;
}

View file

@ -0,0 +1,112 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
if(paddle2 != nullptr) paddle2->draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr){
delete balls[i];
balls[i] = nullptr;
}
delete[] balls;
balls = nullptr;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
if(food[i][j] != nullptr) delete food[i][j];
}
delete[] bricks[i];
delete[] food[i];
}
delete[] bricks;
delete[] food;
if(paddle2 != nullptr) delete paddle2;
}

View file

@ -0,0 +1,115 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
if(paddle2 != nullptr) paddle2->draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr){
delete balls[i];
balls[i] = nullptr;
}
delete[] balls;
balls = nullptr;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
if(food[i][j] != nullptr){
delete food[i][j];
food[i][j] = nullptr;
}
}
delete[] bricks[i];
delete[] food[i];
}
delete[] bricks;
delete[] food;
if(paddle2 != nullptr) delete paddle2;
}

View file

@ -0,0 +1,148 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
if(paddle2 != nullptr) paddle2->draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBalls(int& lives){
bool ballsLeft = false;
for(int i=0;i<3;i++){
if(balls[i] != nullptr) ballsLeft = true;
}
if(!ballsLeft){
lives--;
balls[0] = new Ball(-10, 50, 10, colors[RED]);
}
if(lives <= 0) exit(0);
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
bool GameLevel::checkLevelEnd(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
return false;
}
}
}
return true;
}
int& GameLevel::getLives(){
return lives;
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr){
delete balls[i];
balls[i] = nullptr;
}
delete[] balls;
balls = nullptr;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
if(food[i][j] != nullptr){
delete food[i][j];
food[i][j] = nullptr;
}
}
delete[] bricks[i];
bricks[i] = nullptr;
delete[] food[i];
food[i] = nullptr;
}
delete[] bricks;
bricks = nullptr;
delete[] food;
food = nullptr;
if(paddle2 != nullptr){
delete paddle2;
paddle2 = nullptr;
}
}

View file

@ -0,0 +1 @@
{"version":1,"resource":"file:///home/rafayahmad/Stuff/OOP/Project/GameLevel.cpp","entries":[{"id":"nop8.cpp","timestamp":1715078946301},{"id":"BFrg.cpp","timestamp":1715079745247},{"id":"T4fm.cpp","timestamp":1715079870934},{"id":"9pQn.cpp","timestamp":1715079893776},{"id":"7AKD.cpp","timestamp":1715079908069},{"id":"IkFP.cpp","timestamp":1715080296440},{"id":"U6ua.cpp","timestamp":1715141929137},{"id":"wGto.cpp","timestamp":1715141979696},{"id":"vba8.cpp","timestamp":1715141995823},{"id":"bk0E.cpp","timestamp":1715142023546},{"id":"2iVV.cpp","timestamp":1715144403760},{"id":"12IX.cpp","timestamp":1715144934355},{"id":"hAvY.cpp","timestamp":1715160439770},{"id":"kSWI.cpp","timestamp":1715160735097},{"id":"PkYy.cpp","timestamp":1715160745588},{"id":"1WEj.cpp","timestamp":1715160832000},{"id":"zH6Z.cpp","timestamp":1715160922585},{"id":"KjCi.cpp","timestamp":1715160936238},{"id":"qpDg.cpp","timestamp":1715160957745},{"id":"VODp.cpp","timestamp":1715161351155},{"id":"gi4S.cpp","timestamp":1715161402472},{"id":"42cI.cpp","timestamp":1715161540926},{"id":"EirW.cpp","timestamp":1715174787013},{"id":"cTcj.cpp","timestamp":1715174805137},{"id":"edm8.cpp","timestamp":1715174827298},{"id":"edmd.cpp","timestamp":1715174841871},{"id":"kBW0.cpp","timestamp":1715174857995},{"id":"YxJx.cpp","timestamp":1715174877931},{"id":"R07i.cpp","timestamp":1715179868998},{"id":"gHZR.cpp","timestamp":1715180649987},{"id":"wfLq.cpp","timestamp":1715180683383},{"id":"ustw.cpp","timestamp":1715180709653},{"id":"DyXV.cpp","timestamp":1715180733296},{"id":"zYki.cpp","timestamp":1715180785756},{"id":"s4td.cpp","timestamp":1715180851255},{"id":"uXRe.cpp","timestamp":1715180870944},{"id":"bWO2.cpp","timestamp":1715180890094},{"id":"DeNW.cpp","timestamp":1715180956765},{"id":"yFkl.cpp","timestamp":1715182441664},{"id":"S5D0.cpp","timestamp":1715182459901},{"id":"XBJ1.cpp","timestamp":1715182571822},{"id":"3bsX.cpp","timestamp":1715185126033},{"id":"nTG4.cpp","timestamp":1715185191073},{"id":"fqCN.cpp","timestamp":1715185250946},{"id":"3SxJ.cpp","timestamp":1715185365569},{"id":"Ibp8.cpp","timestamp":1715185954878},{"id":"UIso.cpp","timestamp":1715186100070},{"id":"oGSq.cpp","timestamp":1715186167707},{"id":"MUQ3.cpp","timestamp":1715186200653},{"id":"ehjs.cpp","timestamp":1715186220307}]}

View file

@ -0,0 +1,136 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
if(paddle2 != nullptr) paddle2->draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBalls(int& lives, int& gameState){
bool ballsLeft = false;
for(int i=0;i<3;i++){
if(balls[i] != nullptr) ballsLeft = true;
}
if(!ballsLeft){
lives--;
balls[0] = new Ball(-10, 50, 10, colors[RED]);
}
// if(lives <= 0) gameState = "gameover";
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
int& GameLevel::getLives(){
return lives;
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr){
delete balls[i];
balls[i] = nullptr;
}
delete[] balls;
balls = nullptr;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
if(food[i][j] != nullptr){
delete food[i][j];
food[i][j] = nullptr;
}
}
delete[] bricks[i];
bricks[i] = nullptr;
delete[] food[i];
food[i] = nullptr;
}
delete[] bricks;
bricks = nullptr;
delete[] food;
food = nullptr;
if(paddle2 != nullptr){
delete paddle2;
paddle2 = nullptr;
}
}

View file

@ -0,0 +1,128 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
if(paddle2 != nullptr) paddle2->draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBalls(){
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
int& GameLevel::getLives(){
return lives;
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr){
delete balls[i];
balls[i] = nullptr;
}
delete[] balls;
balls = nullptr;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
if(food[i][j] != nullptr){
delete food[i][j];
food[i][j] = nullptr;
}
}
delete[] bricks[i];
bricks[i] = nullptr;
delete[] food[i];
food[i] = nullptr;
}
delete[] bricks;
bricks = nullptr;
delete[] food;
food = nullptr;
if(paddle2 != nullptr){
delete paddle2;
paddle2 = nullptr;
}
}

View file

@ -0,0 +1,104 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr) delete balls[i];
delete[] balls;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) delete bricks[i][j];
if(food[i][j] != nullptr) delete food[i][j];
}
delete[] bricks[i];
delete[] food[i];
}
delete[] bricks;
delete[] food;
if(paddle2 != nullptr) delete paddle2;
}

View file

@ -0,0 +1,100 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr) delete balls[i];
delete[] balls;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) delete bricks[i][j];
if(food[i][j] != nullptr) delete food[i][j];
}
delete[] bricks[i];
delete[] food[i];
}
delete[] bricks;
delete[] food;
}

View file

@ -0,0 +1,117 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
if(paddle2 != nullptr) paddle2->draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr){
delete balls[i];
balls[i] = nullptr;
}
delete[] balls;
balls = nullptr;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
if(food[i][j] != nullptr){
delete food[i][j];
food[i][j] = nullptr;
}
}
delete[] bricks[i];
bricks[i] = nullptr;
delete[] food[i];
food[i] = nullptr;
}
delete[] bricks;
delete[] food;
if(paddle2 != nullptr) delete paddle2;
}

View file

@ -0,0 +1,103 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle& GameLevel::getPaddle2(){
return paddle;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr) delete balls[i];
delete[] balls;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) delete bricks[i][j];
if(food[i][j] != nullptr) delete food[i][j];
}
delete[] bricks[i];
delete[] food[i];
}
delete[] bricks;
delete[] food;
}

View file

@ -0,0 +1,136 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
if(paddle2 != nullptr) paddle2->draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBalls(int& lives, std::string& gameState){
bool ballsLeft = false;
for(int i=0;i<3;i++){
if(balls[i] != nullptr) ballsLeft = true;
}
if(!ballsLeft){
lives--;
balls[0] = new Ball(-10, 50, 10, colors[RED]);
}
if(lives <= 0) gameState = "gameover";
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
int& GameLevel::getLives(){
return lives;
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr){
delete balls[i];
balls[i] = nullptr;
}
delete[] balls;
balls = nullptr;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
if(food[i][j] != nullptr){
delete food[i][j];
food[i][j] = nullptr;
}
}
delete[] bricks[i];
bricks[i] = nullptr;
delete[] food[i];
food[i] = nullptr;
}
delete[] bricks;
bricks = nullptr;
delete[] food;
food = nullptr;
if(paddle2 != nullptr){
delete paddle2;
paddle2 = nullptr;
}
}

View file

@ -0,0 +1,96 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, colors[GRAY])){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
paddle.draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken;
for(int i=0;i<3;i++) if(balls[i] != nullptr) broken = bricks[i][j]->checkCollision(*balls[i]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
cout<<"Nice\n";
}
}
}
}
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr) delete balls[i];
delete[] balls;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) delete bricks[i][j];
if(food[i][j] != nullptr) delete food[i][j];
}
delete[] bricks[i];
delete[] food[i];
}
delete[] bricks;
delete[] food;
}

View file

@ -0,0 +1,141 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
if(paddle2 != nullptr) paddle2->draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBalls(int& lives){
bool ballsLeft = false;
for(int i=0;i<3;i++){
if(balls[i] != nullptr) ballsLeft = true;
}
if(!ballsLeft){
lives--;
balls[0] = new Ball(-10, 50, 10, colors[RED]);
}
if(lives <= 0) exit(0);
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
void GameLevel::checkLevelEnd(){
}
int& GameLevel::getLives(){
return lives;
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr){
delete balls[i];
balls[i] = nullptr;
}
delete[] balls;
balls = nullptr;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
if(food[i][j] != nullptr){
delete food[i][j];
food[i][j] = nullptr;
}
}
delete[] bricks[i];
bricks[i] = nullptr;
delete[] food[i];
food[i] = nullptr;
}
delete[] bricks;
bricks = nullptr;
delete[] food;
food = nullptr;
if(paddle2 != nullptr){
delete paddle2;
paddle2 = nullptr;
}
}

View file

@ -0,0 +1,103 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr) delete balls[i];
delete[] balls;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) delete bricks[i][j];
if(food[i][j] != nullptr) delete food[i][j];
}
delete[] bricks[i];
delete[] food[i];
}
delete[] bricks;
delete[] food;
}

View file

@ -0,0 +1,131 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
if(paddle2 != nullptr) paddle2->draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBalls(int& lives){
bool ballsLeft = false;
for(int i=0;i<3;i++){
if(balls[i] != nullptr) ballsLeft = true;
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
int& GameLevel::getLives(){
return lives;
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr){
delete balls[i];
balls[i] = nullptr;
}
delete[] balls;
balls = nullptr;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
if(food[i][j] != nullptr){
delete food[i][j];
food[i][j] = nullptr;
}
}
delete[] bricks[i];
bricks[i] = nullptr;
delete[] food[i];
food[i] = nullptr;
}
delete[] bricks;
bricks = nullptr;
delete[] food;
food = nullptr;
if(paddle2 != nullptr){
delete paddle2;
paddle2 = nullptr;
}
}

View file

@ -0,0 +1,134 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
if(paddle2 != nullptr) paddle2->draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBalls(int& lives){
bool ballsLeft = false;
for(int i=0;i<3;i++){
if(balls[i] != nullptr) ballsLeft = true;
}
if(!ballsLeft){
lives--;
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
int& GameLevel::getLives(){
return lives;
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr){
delete balls[i];
balls[i] = nullptr;
}
delete[] balls;
balls = nullptr;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
if(food[i][j] != nullptr){
delete food[i][j];
food[i][j] = nullptr;
}
}
delete[] bricks[i];
bricks[i] = nullptr;
delete[] food[i];
food[i] = nullptr;
}
delete[] bricks;
bricks = nullptr;
delete[] food;
food = nullptr;
if(paddle2 != nullptr){
delete paddle2;
paddle2 = nullptr;
}
}

View file

@ -0,0 +1,131 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
if(paddle2 != nullptr) paddle2->draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBalls(){
for(int i=0;i<3;i++){
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
int& GameLevel::getLives(){
return lives;
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr){
delete balls[i];
balls[i] = nullptr;
}
delete[] balls;
balls = nullptr;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
if(food[i][j] != nullptr){
delete food[i][j];
food[i][j] = nullptr;
}
}
delete[] bricks[i];
bricks[i] = nullptr;
delete[] food[i];
food[i] = nullptr;
}
delete[] bricks;
bricks = nullptr;
delete[] food;
food = nullptr;
if(paddle2 != nullptr){
delete paddle2;
paddle2 = nullptr;
}
}

View file

@ -0,0 +1,99 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, colors[GRAY])){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(60, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(60, 850, to_string(lives), colors[BLACK]);
paddle.draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr) delete balls[i];
delete[] balls;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) delete bricks[i][j];
if(food[i][j] != nullptr) delete food[i][j];
}
delete[] bricks[i];
delete[] food[i];
}
delete[] bricks;
delete[] food;
}

View file

@ -0,0 +1,99 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, colors[GRAY])){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(60, 850, to_string(score), colors[BLACK]);
DrawString(60, 850, to_string(lives), colors[BLACK]);
paddle.draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr) delete balls[i];
delete[] balls;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) delete bricks[i][j];
if(food[i][j] != nullptr) delete food[i][j];
}
delete[] bricks[i];
delete[] food[i];
}
delete[] bricks;
delete[] food;
}

View file

@ -0,0 +1,130 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
if(paddle2 != nullptr) paddle2->draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBalls(){
for(int i=0;i<3;i++){
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
int& GameLevel::getLives(){
return lives;
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr){
delete balls[i];
balls[i] = nullptr;
}
delete[] balls;
balls = nullptr;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
if(food[i][j] != nullptr){
delete food[i][j];
food[i][j] = nullptr;
}
}
delete[] bricks[i];
bricks[i] = nullptr;
delete[] food[i];
food[i] = nullptr;
}
delete[] bricks;
bricks = nullptr;
delete[] food;
food = nullptr;
if(paddle2 != nullptr){
delete paddle2;
paddle2 = nullptr;
}
}

View file

@ -0,0 +1,138 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
if(paddle2 != nullptr) paddle2->draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBalls(int& lives){
bool ballsLeft = false;
for(int i=0;i<3;i++){
if(balls[i] != nullptr) ballsLeft = true;
}
if(!ballsLeft){
lives--;
balls[0] = new Ball(-10, 50, 10, colors[RED]);
}
if(lives <= 0){
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
int& GameLevel::getLives(){
return lives;
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr){
delete balls[i];
balls[i] = nullptr;
}
delete[] balls;
balls = nullptr;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
if(food[i][j] != nullptr){
delete food[i][j];
food[i][j] = nullptr;
}
}
delete[] bricks[i];
bricks[i] = nullptr;
delete[] food[i];
food[i] = nullptr;
}
delete[] bricks;
bricks = nullptr;
delete[] food;
food = nullptr;
if(paddle2 != nullptr){
delete paddle2;
paddle2 = nullptr;
}
}

View file

@ -0,0 +1,103 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr) delete balls[i];
delete[] balls;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) delete bricks[i][j];
if(food[i][j] != nullptr) delete food[i][j];
}
delete[] bricks[i];
delete[] food[i];
}
delete[] bricks;
delete[] food;
}

View file

@ -0,0 +1,130 @@
#include "GameLevel.h"
#include "util.h"
#include "GreenFood.cpp"
#include "PinkFood.cpp"
#include "BlueFood.cpp"
#include "RedFood.cpp"
#include "YellowFood.cpp"
GameLevel::GameLevel() : score(0), lives(2), paddle(Paddle(125, 10, 10, colors[GRAY])), paddle2(nullptr){
bricks = new Brick**[25];
food = new Food**[25];
balls = new Ball*[3];
balls[0] = new Ball(-10, 50, 10, colors[RED]);
for(int i=1;i<3;i++) balls[i] = nullptr;
for(int i=0;i<25;i++){
bricks[i] = new Brick*[15];
food[i] = new Food*[15];
for(int j=0;j<15;j++){
bricks[i][j] = nullptr;
food[i][j] = nullptr;
}
}
}
void GameLevel::draw(){
DrawRectangle(0, 840, 1050, 30, colors[GRAY]);
DrawString(10, 850, "Rafay Ahmad 23i-2526", colors[BLACK]);
DrawString(300, 850, "Score: " + to_string(score), colors[BLACK]);
DrawString(600, 850, "Lives: " + to_string(lives), colors[BLACK]);
paddle.draw();
if(paddle2 != nullptr) paddle2->draw();
for(int i=0;i<3;i++) if(balls[i] != nullptr) balls[i]->draw();
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr) bricks[i][j]->draw(i, j);
if(food[i][j] != nullptr) food[i][j]->draw();
}
}
}
void GameLevel::checkBalls(int& lives){
for(int i=0;i<3;i++){
}
}
void GameLevel::checkBrickCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
bool broken = false;
for(int k=0;k<3;k++) if(balls[k] != nullptr) broken = bricks[i][j]->checkCollision(*balls[k]);
food[i][j] = bricks[i][j]->getFood();
if(broken){
delete bricks[i][j];
bricks[i][j] = nullptr;
score++;
}
}
}
}
}
void GameLevel::moveFood(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr) food[i][j]->fall();
}
}
}
void GameLevel::checkFoodCollision(){
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(food[i][j] != nullptr){
if(food[i][j]->getX() > paddle.getX() && food[i][j]->getX() < paddle.getX()+paddle.getWidth() && food[i][j]->getY() < paddle.getY()+paddle.getHeight() && food[i][j]->getY() > 0){
food[i][j]->activatePowerup(paddle, balls);
}
}
}
}
}
int& GameLevel::getLives(){
return lives;
}
Ball**& GameLevel::getBalls(){
return balls;
}
Paddle& GameLevel::getPaddle(){
return paddle;
}
Paddle* GameLevel::getPaddle2(){
return nullptr;
}
GameLevel::~GameLevel(){
for(int i=0;i<3;i++) if(balls[i] != nullptr){
delete balls[i];
balls[i] = nullptr;
}
delete[] balls;
balls = nullptr;
for(int i=0;i<25;i++){
for(int j=0;j<15;j++){
if(bricks[i][j] != nullptr){
delete bricks[i][j];
bricks[i][j] = nullptr;
}
if(food[i][j] != nullptr){
delete food[i][j];
food[i][j] = nullptr;
}
}
delete[] bricks[i];
bricks[i] = nullptr;
delete[] food[i];
food[i] = nullptr;
}
delete[] bricks;
bricks = nullptr;
delete[] food;
food = nullptr;
if(paddle2 != nullptr){
delete paddle2;
paddle2 = nullptr;
}
}