From 7b2ed6f0436dd25259b103ebd6d348280d8448e0 Mon Sep 17 00:00:00 2001 From: veelarge1 Date: Wed, 5 Mar 2025 18:14:58 +0100 Subject: [PATCH] Create Game --- Game | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 Game diff --git a/Game b/Game new file mode 100644 index 0000000..9f2590f --- /dev/null +++ b/Game @@ -0,0 +1,89 @@ +#include +#include +#include + +// Define constants +const int SCREEN_WIDTH = 640; +const int SCREEN_HEIGHT = 480; + +// Define game classes +class Player { +public: + float x, y, z; + float angleX, angleY; +}; + +class Bullet { +public: + float x, y, z; + float velX, velY, velZ; +}; + +int main(int argc, char* argv[]) { + // Initialize SDL + SDL_Init(SDL_INIT_VIDEO); + SDL_Window* window = SDL_CreateWindow("3D Shooting Game", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN); + SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); + + // Create player and bullets + Player player; + Bullet bullets[100]; + int numBullets = 0; + + // Game loop + bool running = true; + while (running) { + // Handle events + SDL_Event event; + while (SDL_PollEvent(&event)) { + if (event.type == SDL_QUIT) { + running = false; + } + else if (event.type == SDL_MOUSEMOTION) { + player.angleX = event.motion.x; + player.angleY = event.motion.y; + } + else if (event.type == SDL_MOUSEBUTTONDOWN) { + // Shoot bullet + if (numBullets < 100) { + bullets[numBullets].x = player.x; + bullets[numBullets].y = player.y; + bullets[numBullets].z = player.z; + bullets[numBullets].velX = cos(player.angleX); + bullets[numBullets].velY = sin(player.angleY); + bullets[numBullets].velZ = 0; + numBullets++; + } + } + } + + // Update game state + for (int i = 0; i < numBullets; i++) { + bullets[i].x += bullets[i].velX; + bullets[i].y += bullets[i].velY; + bullets[i].z += bullets[i].velZ; + } + + // Render graphics + SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255); + SDL_RenderClear(renderer); + // Draw player and bullets + SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255); + SDL_RenderDrawPoint(renderer, player.x, player.y); + for (int i = 0; i < numBullets; i++) { + SDL_RenderDrawPoint(renderer, bullets[i].x, bullets[i].y); + } + SDL_RenderPresent(renderer); + + // Cap frame rate + SDL_Delay(1000 / 60); + } + + // Clean up + SDL_DestroyRenderer(renderer); + SDL_DestroyWindow(window); + SDL_Quit(); + + return 0; +} +```