first commit
This commit is contained in:
commit
32eea495d8
28
Makefile
Normal file
28
Makefile
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
.PHONY: all clean run
|
||||||
|
VERSION = 0.0.1
|
||||||
|
|
||||||
|
LIBS = sdl2
|
||||||
|
CMACRO = -DVERSION=\"$(VERSION)\"
|
||||||
|
|
||||||
|
CC = gcc
|
||||||
|
CFLAGS = -g -Wall -Wextra -pedantic $(shell pkg-config $(LIBS) --cflags) $(CMACRO)
|
||||||
|
LDFLAGS = $(shell pkg-config $(LIBS) --libs) -lm
|
||||||
|
|
||||||
|
all: pong
|
||||||
|
|
||||||
|
pong: pong.o
|
||||||
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
||||||
|
|
||||||
|
%.o: %.c
|
||||||
|
$(CC) $(CFLAGS) -c -o $@ $<
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *.o
|
||||||
|
rm -f pong
|
||||||
|
|
||||||
|
bear: clean
|
||||||
|
bear -- make
|
||||||
|
|
||||||
|
run: pong
|
||||||
|
./$<
|
||||||
|
|
84
pong.c
Normal file
84
pong.c
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
#include <SDL2/SDL.h>
|
||||||
|
#include <SDL2/SDL_error.h>
|
||||||
|
#include <SDL2/SDL_events.h>
|
||||||
|
#include <SDL2/SDL_rect.h>
|
||||||
|
#include <SDL2/SDL_render.h>
|
||||||
|
#include <SDL2/SDL_video.h>
|
||||||
|
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#define WIDTH 1920
|
||||||
|
#define HEIGHT 1200
|
||||||
|
#define BALLSIZE 50
|
||||||
|
|
||||||
|
SDL_Window *win;
|
||||||
|
SDL_Renderer *ren;
|
||||||
|
|
||||||
|
struct {
|
||||||
|
int x, y;
|
||||||
|
float dx, dy;
|
||||||
|
} ballPos = {10, 10, 3, 2};
|
||||||
|
|
||||||
|
void* cpv(void * v, const char *msg){
|
||||||
|
if( v == 0 ){
|
||||||
|
fprintf(stderr, "%s -> %s\n",msg, SDL_GetError());
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
||||||
|
int civ(int v, const char *msg){
|
||||||
|
if( v != 0 ){
|
||||||
|
fprintf(stderr, "%s -> %s\n",msg, SDL_GetError());
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ballMove(){
|
||||||
|
if(ballPos.x <=0 || ballPos.x >= WIDTH - BALLSIZE){
|
||||||
|
ballPos.dx = ballPos.dx * -1;
|
||||||
|
ballPos.dy = (ballPos.dy / abs(ballPos.dy)) * ((rand() % 5) + 1);
|
||||||
|
}
|
||||||
|
if(ballPos.y <=0 || ballPos.y >= HEIGHT - BALLSIZE){
|
||||||
|
ballPos.dy = ballPos.dy * -1;
|
||||||
|
ballPos.dx = (ballPos.dx / abs(ballPos.dx)) * ((rand() % 5) + 1);
|
||||||
|
}
|
||||||
|
ballPos.x = ballPos.x + ballPos.dx;
|
||||||
|
ballPos.y = ballPos.y + ballPos.dy;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
civ(SDL_Init(SDL_INIT_VIDEO), "can't init SDL");
|
||||||
|
|
||||||
|
win = cpv(SDL_CreateWindow("pong", 0, 0, WIDTH, HEIGHT, SDL_WINDOW_SHOWN), "can't create window");
|
||||||
|
ren = cpv(SDL_CreateRenderer(win, -1, SDL_RENDERER_SOFTWARE), "can't create renderer");
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
SDL_RenderClear(ren);
|
||||||
|
|
||||||
|
SDL_bool should_close = SDL_FALSE;
|
||||||
|
SDL_Event e;
|
||||||
|
while(!should_close){
|
||||||
|
while(SDL_PollEvent(&e)){
|
||||||
|
if(e.type == SDL_QUIT){
|
||||||
|
should_close = SDL_TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* SDL_SetRenderDrawColor(ren, 0, 0, 0, 255); */
|
||||||
|
/* SDL_RenderClear(ren); */
|
||||||
|
|
||||||
|
ballMove();
|
||||||
|
|
||||||
|
SDL_SetRenderDrawColor(ren, (sin((double)i/20) + 1) * 128, (cos((double)i/10) + 1) * 128, (sin((double)i/50) + 1) * 128, 255);
|
||||||
|
SDL_Rect ball = {ballPos.x, ballPos.y, BALLSIZE, BALLSIZE};
|
||||||
|
SDL_RenderFillRect(ren, &ball);
|
||||||
|
|
||||||
|
|
||||||
|
SDL_RenderPresent(ren);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user