chess_board_sim/main.cpp

133 lines
3.9 KiB
C++
Raw Normal View History

#define SDL_MAIN_HANDLED
2019-11-04 20:03:58 -05:00
#include <stdio.h>
#include <stdlib.h>
2020-02-27 18:36:55 -05:00
#include <iostream>
2019-11-04 20:03:58 -05:00
#include <string.h>
#include <stdint.h>
#include <SDL.h>
#include <SDL_video.h>
#include <time.h>
2020-02-27 18:36:55 -05:00
#include "chess_board.h"
2019-11-04 20:03:58 -05:00
2020-02-27 18:36:55 -05:00
clock_t start_time, end_time;
2019-11-04 20:03:58 -05:00
int main( int argc, const char* argv[] )
{
SDL_Renderer *renderer = NULL;
SDL_Texture *texture = NULL;
SDL_Surface *bitmapSurface = NULL;
SDL_Window *win;
2019-11-04 20:03:58 -05:00
SDL_Surface *image;
SDL_Rect srcR, destR;
2019-11-04 20:03:58 -05:00
Uint32 rmask, gmask, bmask, amask;
const char name[] = "Game";
2019-11-04 20:03:58 -05:00
if (SDL_Init(SDL_INIT_EVERYTHING) != 0)
{
SDL_Log("Unable to initialize SDL: %s", SDL_GetError());
return 1;
}
win = SDL_CreateWindow(name, 0, 0, 800, 800, SDL_WINDOW_RESIZABLE);
if (win == NULL)
{
2019-11-04 20:03:58 -05:00
// In the case that the window could not be made...
printf("Could not create window: %s\n", SDL_GetError());
return 1;
}
renderer = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED);
SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
SDL_Rect rectangle;
2019-11-04 20:03:58 -05:00
rectangle.x = 0;
rectangle.y = 0;
rectangle.w = 50;
rectangle.h = 50;
SDL_RenderFillRect(renderer, &rectangle);
texture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, 800, 800);
srcR.h = 800;
srcR.w = 800;
destR.h = 800;
destR.w = 800;
2020-02-27 18:36:55 -05:00
chess_board_init(renderer, 800, 800);
srcR.x = 0;
srcR.y = 0;
destR.x = 0;
destR.y = 0;
2019-11-04 20:03:58 -05:00
bool run = true;
while (run)
{
2019-11-04 20:03:58 -05:00
clock_t start_t, end_t;
SDL_Event event;
bool redraw = false;
while (SDL_PollEvent(&event))
{
2019-11-04 20:03:58 -05:00
/* handle your event here */
if (event.type == SDL_MOUSEBUTTONDOWN)
2019-11-04 20:03:58 -05:00
{
if (event.button.button == SDL_BUTTON_MIDDLE) // scroll up
2019-11-04 20:03:58 -05:00
{
run = false;
}
else if (event.button.button == SDL_BUTTON_LEFT) // scroll up
2019-11-04 20:03:58 -05:00
{
2020-02-27 18:36:55 -05:00
redraw = click(renderer, event.button.x, event.button.y);
}
else
{
/* Do nothing. */
}
2020-02-27 18:36:55 -05:00
}
2019-11-04 20:03:58 -05:00
else if (event.type == SDL_QUIT)
{
run = false;
}
else if (event.type == SDL_WINDOWEVENT)
{
switch (event.window.event)
{
case SDL_WINDOWEVENT_ENTER:
case SDL_WINDOWEVENT_SHOWN:
case SDL_WINDOWEVENT_MOVED:
case SDL_WINDOWEVENT_EXPOSED:
case SDL_WINDOWEVENT_RESTORED:
redraw = true;
break;
case SDL_WINDOWEVENT_RESIZED:
case SDL_WINDOWEVENT_SIZE_CHANGED:
case SDL_WINDOWEVENT_MAXIMIZED:
redraw = true;
SDL_GetWindowSize(win, &destR.w, &destR.h);
2020-02-27 18:36:55 -05:00
chess_board_init(renderer, destR.w, destR.h);
break;
}
}
else
{
/* Do nothing. */
}
}
if (redraw)
{
2020-02-27 18:36:55 -05:00
start_time = clock();
draw_board(renderer);
end_time = clock();
SDL_RenderPresent(renderer);
2020-02-27 18:36:55 -05:00
clock_t t = end_time - start_time;
SDL_Log("No. of clicks %ld clicks (%f seconds).\n",
t, ((float)t) / CLOCKS_PER_SEC);
2019-11-04 20:03:58 -05:00
}
/* do some other stuff here -- draw your app, etc. */
}
SDL_FreeSurface(image);
SDL_DestroyTexture(texture);
SDL_DestroyRenderer(renderer);
2019-11-04 20:03:58 -05:00
SDL_DestroyWindow(win);
return 0;
}
//g++ main.cpp -o blah `sdl2-config --cflags --libs`
/*
g++ main.cpp -IC:\Users\Daniel\Documents\Projects\i686-w64-mingw32\include\SDL2 -LC:\Users\Daniel\Documents\Projects\i686-w64-mingw32\lib -w -Wl,-subsystem,windows -lmingw32 -lSDL2main -lSDL2 -o SDLMain
*/