From 9f7b1c5bb30b566a6015f7a9e27ccc7274868db6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=A6=E5=AE=87?= Date: Sat, 17 Oct 2020 14:08:15 +0800 Subject: [PATCH] Draw random points --- L02NoSignal/CMakeLists.txt | 20 ++++++++++++ L02NoSignal/main.c | 67 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 L02NoSignal/CMakeLists.txt create mode 100644 L02NoSignal/main.c diff --git a/L02NoSignal/CMakeLists.txt b/L02NoSignal/CMakeLists.txt new file mode 100644 index 0000000..6867d91 --- /dev/null +++ b/L02NoSignal/CMakeLists.txt @@ -0,0 +1,20 @@ +cmake_minimum_required(VERSION 3.17) +project(L02NoSignal C) + +set(CMAKE_C_STANDARD 11) + +add_compile_definitions(THREAD_SAFE) + +include_directories( + /usr/local/include/SDL2 +) + +link_directories( + /usr/local/lib +) + +link_libraries( + SDL2 +) + +add_executable(L02NoSignal main.c) \ No newline at end of file diff --git a/L02NoSignal/main.c b/L02NoSignal/main.c new file mode 100644 index 0000000..b97271c --- /dev/null +++ b/L02NoSignal/main.c @@ -0,0 +1,67 @@ +#include + +#define WIDTH 550 +#define HEIGHT 400 + +void drawBackground(SDL_Renderer *renderer) { + SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255); + SDL_Rect rect = {0, 0, WIDTH, HEIGHT}; + SDL_RenderFillRect(renderer, &rect); +} + +void drawScreen(struct SDL_Renderer *renderer) { + for (int x = 0; x < WIDTH; ++x) { + for (int y = 0; y < HEIGHT; ++y) { + SDL_SetRenderDrawColor(renderer, rand() % 255, rand() % 255, rand() % 255, 255); + SDL_RenderDrawPoint(renderer, x, y); + } + } +} + +void draw(SDL_Renderer *renderer) { + drawBackground(renderer); + drawScreen(renderer); +} + +int main() { + SDL_Window *win; + SDL_Renderer *renderer; + if (SDL_Init(SDL_INIT_VIDEO)) { + SDL_Log("Unable to init SLD: %s", SDL_GetError()); + return 1; + } + win = SDL_CreateWindow( + "Hello World", + SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, + WIDTH, HEIGHT, + SDL_WINDOW_OPENGL + ); + if (win == NULL) { + SDL_Log("Unable to create window: %s", SDL_GetError()); + return 1; + } + + renderer = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED); + if (renderer == NULL) { + SDL_Log("Can not create renderer: %s", SDL_GetError()); + return 1; + } + + while (1) { + SDL_RenderClear(renderer); + draw(renderer); + SDL_RenderPresent(renderer); + + SDL_Event event; + if (SDL_PollEvent(&event)) { + if (event.type == SDL_QUIT) { + break; + } + } + } + + SDL_DestroyRenderer(renderer); + SDL_DestroyWindow(win); + SDL_Quit(); + return 0; +}