#include "pong.h" void leaderboard_record() { } void marathon_main() { // Init Music Mix_Music *Background = Mix_LoadMUS("resources/marathon.wav"); Mix_PlayMusic(Background, -1); Mix_VolumeMusic(GlobalSettings.MusicVolume); // Init balls lmao struct Balls Ball; Ball.X = 1280/2.0f; Ball.Y = 720/2.0f; Ball.Direction = LEFT; Ball.Speed = 3.0f; Ball.Angle = 0.0f; // Init Player struct Players Player; Player.Y = 0; Player.Direction = 0; Player.Score = 0; // Init sprites Texture2D PaddleSprite = LoadTexture("resources/paddle.png"); Texture2D BallSprite = LoadTexture("resources/ball.png"); char PlayerScore[50]; // Used later to display score on screen. // Set Collision Boxes Player.HitBox = (Rectangle){80, Player.Y, 5, PaddleSprite.height}; Ball.HitBox = (Rectangle){Ball.X, Ball.Y, BallSprite.width, BallSprite.height}; // Init Camera Camera2D MainCamera; MainCamera.target = (Vector2){0, 0}; MainCamera.offset = (Vector2){0, 0}; MainCamera.rotation = 0; bool MarathonGoing = true; while(MarathonGoing == true && GameGoing == true) { if (WindowShouldClose()) { //Quit Game if the window is closed. GameGoing = false; } snprintf(PlayerScore, 50, "Player: %d", Player.Score); MainCamera.zoom = GetScreenHeight()/720.0f; MainCamera.offset = (Vector2){GetScreenWidth()/2.0f, GetScreenHeight()/2.0f}; MainCamera.target = (Vector2){1280/2.0f, 720/2.0f}; //Controls if(IsKeyDown(KEY_UP)) { Player.Y -= 10; } else if (IsKeyDown(KEY_DOWN)) { Player.Y += 10; } else if(IsKeyPressed(KEY_ESCAPE)) { EnableCursor(); } else if(IsMouseButtonPressed(MOUSE_BUTTON_LEFT) || IsCursorHidden() == true) { Player.Y = GetMouseY()-PaddleSprite.height/2.0f; DisableCursor(); } // Leave game if(IsKeyPressed(KEY_Q)) { MarathonGoing = false; } if(GetMouseY() < 0) { SetMousePosition(0, 0); } else if(GetMouseY() > 720) { SetMousePosition(0, 720); } //Check if players are off-screen if (Player.Y < 0) { Player.Y = 0; } else if (Player.Y > 480) { Player.Y = 480; } // Collision ball(&Player.HitBox, NULL, &Ball, &Player.Score, NULL); //Updates hitbox with player's position. Player.HitBox.y = Player.Y; BeginDrawing(); ClearBackground(BLACK); BeginMode2D(MainCamera); DrawRectangle(0, 0, 1280, 720, (Color){20, 20, 20, 255}); DrawTexture(PaddleSprite, 0, Player.Y, WHITE); DrawTexture(BallSprite, Ball.X, Ball.Y, WHITE); DrawText(PlayerScore, 0, 0, 32, BLUE); EndMode2D(); EndDrawing(); } Mix_HaltMusic(); Mix_FreeMusic(Background); EnableCursor(); return; }