Advertisement
Guest User

Snake Game

a guest
Oct 19th, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.84 KB | None | 0 0
  1. #include "SDL2/SDL.h"
  2. #include <stdio.h>
  3. #include <ctime>
  4. #include <cstdlib>
  5.  
  6. #define width 640
  7. #define height 480
  8.  
  9. void clear(SDL_Renderer * renderer) {
  10.     SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
  11.     SDL_RenderClear(renderer);
  12.     SDL_RenderPresent(renderer);
  13. }
  14.  
  15. void draw(SDL_Renderer * renderer, SDL_Rect * rect) {
  16.     SDL_SetRenderDrawColor(renderer, 255, 178, 102, 255);
  17.     SDL_RenderFillRect(renderer, rect);
  18.     SDL_RenderPresent(renderer);
  19. }
  20.  
  21. void draw1(SDL_Renderer * renderer, SDL_Rect * rect) {
  22.     SDL_SetRenderDrawColor(renderer, 255, 0, 127, 255);
  23.     SDL_RenderFillRect(renderer, rect);
  24.     SDL_RenderPresent(renderer);
  25. }
  26.  
  27. int main(int argc, char* argv[]) {
  28.  
  29.     SDL_Window *window;
  30.     SDL_Renderer *renderer;
  31.     SDL_Renderer *renderer1;
  32.     SDL_Surface* ScreenSurface = NULL;
  33.  
  34.     SDL_Init(SDL_INIT_VIDEO);
  35.  
  36.     window = SDL_CreateWindow("Snake Game",SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,width,height,SDL_WINDOW_OPENGL);
  37.  
  38.     if (window == NULL) {
  39.         printf("Could not create window: Error: %s\n", SDL_GetError());
  40.         return 1;
  41.     }
  42.    
  43.     renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
  44.  
  45.     if (renderer == NULL) {
  46.         printf("Could not create window: Error: %s\n", SDL_GetError());
  47.         return 1;
  48.     }
  49.  
  50.     SDL_Rect rectangle = {
  51.        rectangle.x = 10,
  52.        rectangle.y = 10,
  53.        rectangle.w = 20,
  54.        rectangle.h = 20
  55.     };
  56.  
  57.     SDL_Rect food = {
  58.        food.x = 10,
  59.        food.y = 200,
  60.        food.w = 20,
  61.        food.h = 20
  62.     };
  63.   //  outPut = rand()%((width - 10) + 1) + 10;
  64.     //outPut = rand()%((height - 10) + 1) + 10;  
  65.     clear(renderer);
  66.  
  67.     bool eaten = 0;
  68.     int score = 0;
  69.     int quit = 0;
  70.  
  71.     while (quit == 0){
  72.         if(rectangle.x <= food.x+20 & rectangle.x >= food.x-20  && rectangle.y <= food.y+20 & rectangle.y >= food.y-20 ){
  73.             score++;
  74.             food.x = rand()%((width - 20) + 1) + 10;
  75.             food.y = rand()%((height - 20) + 1) + 10;
  76.             clear(renderer);
  77.             draw1(renderer, &food);
  78.         }
  79.         else{
  80.             clear(renderer);
  81.             draw1(renderer, &food);
  82.         }
  83.         SDL_Event event;
  84.         while (SDL_PollEvent(&event)) {
  85.             if(rectangle.x == width-20){
  86.                 quit = 1;
  87.                 puts("GAME OVER!");
  88.                 break;
  89.             }
  90.             if(rectangle.y == height-20){
  91.                 quit = 1;
  92.                 puts("GAME OVER!");
  93.                 break;
  94.             }
  95.             if(rectangle.x == 0){
  96.                 quit = 1;
  97.                 puts("GAME OVER!");
  98.                 break;
  99.             }
  100.             if(rectangle.y == 0){
  101.                 quit = 1;
  102.                 puts("GAME OVER!");
  103.                 break;
  104.             }
  105.  
  106.             if (event.type == SDL_KEYDOWN) {
  107.                 if(event.key.keysym.scancode == SDL_SCANCODE_LEFT){
  108.                     rectangle.x -= 10;
  109.                     break;
  110.                 }
  111.                 else if(event.key.keysym.scancode == SDL_SCANCODE_RIGHT){
  112.                     rectangle.x += 10;
  113.                     break;
  114.                 }
  115.                 else if(event.key.keysym.scancode == SDL_SCANCODE_UP){
  116.                     rectangle.y -= 10;
  117.                     break;
  118.                 }
  119.                 else if(event.key.keysym.scancode == SDL_SCANCODE_DOWN){
  120.                     rectangle.y += 10;
  121.                     break;
  122.                 }
  123.             }
  124.             else if (event.type == SDL_QUIT) {
  125.                 quit = 1;
  126.                 puts("GAME OVER!");
  127.                 break;
  128.             }
  129.         }
  130.         printf("rectangle : %d %d\n",rectangle.x,rectangle.y);
  131.         printf("food: %d %d\n",food.x,food.y);
  132.         //drawing each rectangle
  133.  
  134.         clear(renderer);
  135.         draw(renderer, &rectangle);
  136.     }
  137.  
  138.     SDL_DestroyRenderer(renderer);
  139.     SDL_DestroyWindow(window);
  140.     SDL_Quit();
  141.     printf("Score: %d\n", score);
  142.     return 0;
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement