From 2d728e9121fb457d737fe0ac833d6620b317d5b8 Mon Sep 17 00:00:00 2001 From: Raimon Zamora Date: Thu, 23 Nov 2023 17:16:43 +0100 Subject: [PATCH] =?UTF-8?q?-=20Resoluci=C3=B3=20i=20tamany=20de=20camp=20i?= =?UTF-8?q?gual=20a=20la=20recreativa=20-=20Logo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 4 +- main.c | 161 +++++++++++++++++++++++++++++++++++-------------------- 2 files changed, 104 insertions(+), 61 deletions(-) diff --git a/Makefile b/Makefile index 75285ec..9b9e284 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ windows: - gcc main.c -lmingw32 -lSDL2main -lSDL2 -o jix.exe + gcc -g main.c -lmingw32 -lSDL2main -lSDL2 -o jix.exe linux: - gcc main.c -lSDL2 -o jix + gcc -g main.c -lSDL2 -o jix diff --git a/main.c b/main.c index dc05320..82b75ca 100644 --- a/main.c +++ b/main.c @@ -1,13 +1,20 @@ #include #include +#define SCREEN_WIDTH 240 +#define SCREEN_HEIGHT 256 +#define SCREEN_ZOOM 3 + +#define CAMP_WIDTH 225 +#define CAMP_HEIGHT 201 + #define AMUNT 0 #define DRETA 1 #define AVALL 2 #define ESQUERRA 3 -#define OFFSET_X 60 -#define OFFSET_Y 35 +#define OFFSET_X 8 +#define OFFSET_Y 39 #define MODE_NORMAL 0 #define MODE_CREANT 1 @@ -25,14 +32,14 @@ SDL_Renderer *ren; SDL_Texture *tex; SDL_Texture *gfx; -Uint8 pixels[200*200]; -int player_x = 100; -int player_y = 198; +Uint8 pixels[CAMP_WIDTH*CAMP_HEIGHT]; +int player_x = CAMP_WIDTH/2; +int player_y = CAMP_HEIGHT-1; int mode = MODE_NORMAL; int lento = 0; -int last_x = 100; -int last_y = 198; +int last_x = CAMP_WIDTH/2; +int last_y = CAMP_HEIGHT-1; void set_color(int color) { @@ -47,6 +54,33 @@ void set_color(int color) } } +void set_color_mod(int color) +{ + switch (color) { + case COLOR_BLACK: SDL_SetTextureColorMod(gfx, 0, 0, 0); break; + case COLOR_WHITE: SDL_SetTextureColorMod(gfx, 255, 255, 255); break; + case COLOR_GREY: SDL_SetTextureColorMod(gfx, 128, 128, 128); break; + case COLOR_RED: SDL_SetTextureColorMod(gfx, 217, 87, 99); break; + case COLOR_YELLOW: SDL_SetTextureColorMod(gfx, 251, 242, 54); break; + case COLOR_DARKRED: SDL_SetTextureColorMod(gfx, 172, 50, 50); break; + case COLOR_DARKTEAL: SDL_SetTextureColorMod(gfx, 48, 128, 130); break; + } +} + +void print(char *text, int x, int y, int color, int grid, int offset) +{ + const int len = strlen(text); + set_color_mod(color); + for (int i=0; i=0 && y>=0 && x<=198 && y<=198 && pixels[x+y*200]==0) + if (x>=0 && y>=0 && x=254) - if (pixels[x+y*200]==fill) { - pixels[x+y*200]=color; + for (int y=0;y=254) + if (pixels[x+y*CAMP_WIDTH]==fill) { + pixels[x+y*CAMP_WIDTH]=color; SDL_RenderDrawPoint(ren, x, y); } else { - pixels[x+y*200]=0; + pixels[x+y*CAMP_WIDTH]=0; } } int get_percent() { int claimed = 0; - for (int y=0;y<200;++y) - for (int x=0;x<200;++x) - if (pixels[x+y*200]!=0) claimed++; - return (claimed*100)/(200*200); + for (int y=0;ysector1) fill_sector(254); else fill_sector(255); } - printf("%i...\n", get_percent()); + char result[20]; + print(SDL_itoa(get_percent(), result, 10), 10, 10, COLOR_YELLOW, 8, 0); SDL_SetRenderTarget(ren, NULL); } @@ -147,43 +182,39 @@ void make_rapid() { SDL_SetRenderTarget(ren, tex); set_color(COLOR_DARKTEAL); - for (int y=0;y<200;++y) - for (int x=0;x<200;++x) - if (pixels[x+y*200]==COLOR_DARKRED && any_black(x,y)) + for (int y=0;y=speed) { - if (keys[SDL_SCANCODE_UP] && player_y>0 && ( ((mode==MODE_CREANT || keys[SDL_SCANCODE_SPACE])&&pixels[player_x+(player_y-2)*200]==0) || pixels[player_x+(player_y-2)*200]==1)) { + if (keys[SDL_SCANCODE_UP] && player_y>0 && ( ((mode==MODE_CREANT || keys[SDL_SCANCODE_SPACE])&&pixels[player_x+(player_y-2)*CAMP_WIDTH]==0) || pixels[player_x+(player_y-2)*CAMP_WIDTH]==1)) { if (mode==MODE_CREANT) put_pix(); - else if (pixels[player_x+(player_y-2)*200]==0) + else if (pixels[player_x+(player_y-2)*CAMP_WIDTH]==0) { lento=1; - mode = MODE_CREANT; player_y--; put_pix(); player_y--; + mode = MODE_CREANT; + } + player_y--; put_pix(); player_y--; - } else if (keys[SDL_SCANCODE_RIGHT] && player_x<198 && ( ((mode==MODE_CREANT || keys[SDL_SCANCODE_SPACE])&&pixels[player_x+2+player_y*200]==0) || pixels[player_x+2+player_y*200]==1)) { + } else if (keys[SDL_SCANCODE_RIGHT] && player_x0 && ( ((mode==MODE_CREANT || keys[SDL_SCANCODE_SPACE])&&pixels[player_x-2+player_y*200]==0) || pixels[player_x-2+player_y*200]==1)) { + } else if (keys[SDL_SCANCODE_LEFT] && player_x>0 && ( ((mode==MODE_CREANT || keys[SDL_SCANCODE_SPACE])&&pixels[player_x-2+player_y*CAMP_WIDTH]==0) || pixels[player_x-2+player_y*CAMP_WIDTH]==1)) { if (mode==MODE_CREANT) put_pix(); - else if (pixels[player_x-2+player_y*200]==0) + else if (pixels[player_x-2+player_y*CAMP_WIDTH]==0) { lento=1; - mode = MODE_CREANT; player_x--; put_pix(); player_x--; + mode = MODE_CREANT; + } + player_x--; put_pix(); player_x--; } @@ -248,7 +287,7 @@ int main(int argc, char *argv[]) make_rapid(); lento=0; } - if (pixels[player_x+player_y*200]==1) + if (pixels[player_x+player_y*CAMP_WIDTH]==1) { close_sector(); mode = MODE_NORMAL; @@ -259,7 +298,11 @@ int main(int argc, char *argv[]) } set_color(COLOR_BLACK); SDL_RenderClear(ren); - SDL_Rect rect = {OFFSET_X,OFFSET_Y,200,200}; + print("ABCDEFG", 16, 16, COLOR_WHITE, 8, -65); + print("HICJKLM", 16, 24, COLOR_WHITE, 8, -65); + print("NOOOOP", 24, 32, COLOR_WHITE, 8, -65); + + SDL_Rect rect = {OFFSET_X,OFFSET_Y,CAMP_WIDTH,CAMP_HEIGHT}; SDL_RenderCopy(ren, tex, NULL, &rect); draw_player(); SDL_RenderPresent(ren);