Generation

generate functionWed, 27 Nov 2024

Entre a modo video y dibuje una estrella que con la tecla espacio cambie de color

Aquí te muestro un ejemplo de cómo puedes crear una ventana con una estrella que cambia de color cada vez que se presiona la tecla espacio en C++ utilizando la biblioteca SDL (Simple DirectMedia Layer). Primero, debes instalar SDL en tu sistema. Puedes descargarla desde su sitio web oficial: <https://www.libsdl.org/download-2.0.php> Una vez instalada SDL, puedes crear un proyecto en tu IDE favorito (por ejemplo, Visual Studio o Code::Blocks) y agregar las siguientes dependencias: ```cpp #include <SDL2/SDL.h> #include <SDL2/SDL_image.h> #include <SDL2/SDL_ttf.h> ``` Luego, puedes crear un programa que dibuje una estrella y cambie de color cada vez que se presiona la tecla espacio: ```cpp #include <SDL2/SDL.h> #include <SDL2/SDL_image.h> #include <SDL2/SDL_ttf.h> // Constantes const int ANCHO = 800; const int ALTO = 600; const int COLOR_ANTIGUO[] = {255, 0, 0}; // Rojo const int COLOR_NUEVO[] = {0, 0, 255}; // Azul // Estructura para representar un punto struct Punto { int x, y; }; // Estructura para representar una estrella struct Estrella { Punto puntos[10]; }; // Función para dibujar una estrella void dibujarEstrella(SDL_Renderer* renderer, Estrella estrella, int color[]) { SDL_SetRenderDrawColor(renderer, color[0], color[1], color[2], 255); for (int i = 0; i < 10; i++) { SDL_RenderDrawPoint(renderer, estrella.puntos[i].x, estrella.puntos[i].y); } } int main(int argc, char* argv[]) { // Inicializar SDL if (SDL_Init(SDL_INIT_VIDEO) < 0) { SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Error al inicializar SDL: %s", SDL_GetError()); return 1; } // Crear ventana SDL_Window* ventana = SDL_CreateWindow("Estrella que cambia de color", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, ANCHO, ALTO, SDL_WINDOW_SHOWN); if (!ventana) { SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Error al crear ventana: %s", SDL_GetError()); SDL_Quit(); return 1; } // Crear renderizador SDL_Renderer* renderer = SDL_CreateRenderer(ventana, -1, SDL_RENDERER_ACCELERATED); if (!renderer) { SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Error al crear renderizador: %s", SDL_GetError()); SDL_DestroyWindow(ventana); SDL_Quit(); return 1; } // Definir estrella Estrella estrella; for (int i = 0; i < 10; i++) { estrella.puntos[i].x = ANCHO / 2 + 50 * sin(i * 3.14 / 5); estrella.puntos[i].y = ALTO / 2 + 50 * cos(i * 3.14 / 5); } // Bucle principal bool salir = false; int color[] = COLOR_ANTIGUO; SDL_Event evento; while (!salir) { while (SDL_PollEvent(&evento)) { if (evento.type == SDL_QUIT) { salir = true; } else if (evento.type == SDL_KEYDOWN && evento.key.keysym.sym == SDLK_SPACE) { // Cambiar de color int colorAnterior[] = color; color[0] = colorAnterior[1]; color[1] = colorAnterior[2]; color[2] = colorAnterior[0]; } } // Dibujar estrella SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255); SDL_RenderClear(renderer); dibujarEstrella(renderer, estrella, color); // Actualizar pantalla SDL_RenderPresent(renderer); // Limitar a 60 FPS SDL_Delay(1000 / 60); } // Liberar recursos SDL_DestroyRenderer(renderer); SDL_DestroyWindow(ventana); SDL_Quit(); return 0; } ``` Este código crea una ventana con una estrella que cambia de color cada vez que se presiona la tecla espacio. La estrella se dibuja en el centro de la ventana y se actualiza a 60 FPS. Recuerda que debes compilar y ejecutar este código en un entorno que tenga SDL instalado.

Want to kickstart your project?Use the new AI Studio to create your code