From 1c4c1a11ae7f386bb46e40dc7fd3f95f8af2b727 Mon Sep 17 00:00:00 2001 From: mibi88 Date: Fri, 26 Aug 2022 18:06:27 +0200 Subject: [PATCH] =?UTF-8?q?20220826=20-=20La=20vitesse=20de=20destruction?= =?UTF-8?q?=20varie=20selon=20le=20type=20et=20l'outil,=20pioche=20ajout?= =?UTF-8?q?=C3=A9e=20(premier=20outil=20!).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- latest-build/Builder.g1a | Bin 43884 -> 48308 bytes src/gamesettings.h | 4 +- src/main.c | 121 +++++++++++++++++++++++++++++++++++---- src/msg_fr.h | 1 + src/objects.h | 24 +++++++- 5 files changed, 136 insertions(+), 14 deletions(-) diff --git a/latest-build/Builder.g1a b/latest-build/Builder.g1a index 2fa50512d3de760e6b919d006af2b5b3233197a0..7429fdba504c15e2d7b83350777fbad2a7d2943d 100644 GIT binary patch delta 14932 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 delta 10536 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 Te(DEhJn`F4M6l6<4bT4rb7U0b diff --git a/src/gamesettings.h b/src/gamesettings.h index a7c66fd..11ea014 100644 --- a/src/gamesettings.h +++ b/src/gamesettings.h @@ -1,8 +1,8 @@ # define GAMESNUM 5 // How many games you can save (and play). # define WORLDGEN_SOIL 8 // Blocks (y) of soil. -# define WORLD_WIDTH 64 // World width. +# define WORLD_WIDTH 256 // World width. # define WORLD_HEIGHT 64 // World height. # define INVENTORY_SIZE 5 // Size of the inventory. # define CRAFTSIZE 9 // How many different blocks you can use to craft something. -# define CRAFTINGS 2 // How many things you can craft. \ No newline at end of file +# define CRAFTINGS 3 // How many things you can craft. \ No newline at end of file diff --git a/src/main.c b/src/main.c index 660beef..21e60c6 100644 --- a/src/main.c +++ b/src/main.c @@ -10,6 +10,16 @@ # include "worldgen.h" # include "itoa.h" +# define ERROR(error, errorcode) dclear(C_WHITE); \ + dprint(1, 1, C_BLACK, "ERROR"); \ + dprint(1, 6, C_BLACK, "LINE : %d", __LINE__); \ + dprint(1, 12, C_BLACK, "FILE : %d", __FILE__); \ + dprint(1, 18, C_BLACK, "ERROR NUM : %d", errorcode); \ + dprint(1, 24, C_BLACK, "%c", error); \ + dupdate(); \ + getkey(); \ + return errorcode; + extern bopti_image_t title_img; extern bopti_image_t soil_tile; extern bopti_image_t grass_tile; @@ -26,6 +36,7 @@ extern bopti_image_t skin1_player_left2; extern bopti_image_t skin1_player_right1; extern bopti_image_t skin1_player_right2; extern bopti_image_t select_tool; +extern bopti_image_t pickaxe_tool; extern bopti_image_t invnormal; extern bopti_image_t invselected; extern bopti_image_t craftselection; @@ -45,6 +56,10 @@ char tmp_char[2]; Player player; Crafting crafting; +Tool hand; +Tool wood_pickaxe; +const int canbeplaced_lenght = 6; +const int canbeplaced[6] = {1, 2, 3, 4, 5, 6}; void drawoverlay() { /* @@ -83,7 +98,7 @@ void drawselectedgame(int selected) { void addtree(int pos, unsigned short int * terrain, int n){ int i; srand(clock()); - for(i=pos-rand()%11;i!=pos;i++){ + for(i=pos-rand()%6;i!=pos;i++){ terrain[i*WORLD_WIDTH+(n>>3)] = 5; } } @@ -206,6 +221,8 @@ void drawinventory(){ dimage(26+i*15+3, 52, &wood_tile); break; case 6: dimage(26+i*15+3, 52, &woodplanks_tile); break; + case 7: + dimage(26+i*15+3, 52, &pickaxe_tool); break; } } } @@ -227,6 +244,8 @@ void drawdetailinv(){ dimage(5, pos, &wood_tile); break; case 6: dimage(5, pos, &woodplanks_tile); break; + case 7: + dimage(5, pos, &pickaxe_tool); break; } itoa(player.inventorynum[i], tmp_char); dtext(20, pos, C_BLACK, tmp_char); @@ -257,6 +276,8 @@ void drawcrafting(){ dimage(36, 28, &wood_tile); break; case 6: dimage(36, 28, &woodplanks_tile); break; + case 7: + dimage(36, 28, &pickaxe_tool); break; } dtext(36, 38, C_BLACK, MULTIPLY); itoa(craftingnum[crafting.selected], tmp_char); @@ -277,6 +298,8 @@ void drawcrafting(){ dtext(58, pos, C_BLACK, WOOD_TILE); break; case 6: dtext(58, pos, C_BLACK, WOODPLANKS_TILE); break; + case 7: + dtext(58, pos, C_BLACK, WOODPICKAXE_TILE); break; } itoa(craftingsnum[i], tmp_char); dtext(46, pos, C_BLACK, tmp_char); @@ -286,13 +309,66 @@ void drawcrafting(){ } dfont(dfont_default()); } +bool is_in(int item, int* array, int len){ + for(int i=0;i!=len;i++){ + if(array[i] == item){ + return 1; + } + } + return 0; +} int main(void) { + // Tools // + // Hand + hand.easy_lenght = 1; + hand.middle_lenght = 1; + hand.hard_lenght = 1; + hand.very_hard_lenght = 1; + hand.breakable_middle = NULL; + hand.breakable_hard = NULL; + hand.breakable_very_hard = NULL; + hand.breakable_middle = malloc(sizeof(int)); + hand.breakable_hard = malloc(sizeof(int)); + hand.breakable_very_hard = malloc(sizeof(int)); + if(hand.breakable_middle == NULL || hand.breakable_hard == NULL || hand.breakable_very_hard == NULL){ + ERROR("Need more ram !", 2) + } + hand.breakable_middle[0] = 1; + hand.breakable_hard[0] = 6; + hand.breakable_very_hard[0] = 5; + hand.attack = 1; + // Wooden pickaxe + wood_pickaxe.easy_lenght = 1; + wood_pickaxe.middle_lenght = 1; + wood_pickaxe.hard_lenght = 2; + wood_pickaxe.very_hard_lenght = 3; + wood_pickaxe.breakable_middle = NULL; + wood_pickaxe.breakable_hard = NULL; + wood_pickaxe.breakable_very_hard = NULL; + wood_pickaxe.breakable_middle = malloc(sizeof(int)); + wood_pickaxe.breakable_hard = malloc(wood_pickaxe.hard_lenght*sizeof(int)); + wood_pickaxe.breakable_very_hard = malloc(wood_pickaxe.very_hard_lenght*sizeof(int)); + if(wood_pickaxe.breakable_middle == NULL || wood_pickaxe.breakable_hard == NULL || wood_pickaxe.breakable_very_hard == NULL){ + ERROR("Need more ram !", 3) + } + wood_pickaxe.breakable_middle[0] = 1; + wood_pickaxe.breakable_hard[0] = 6; + wood_pickaxe.breakable_hard[1] = 2; + wood_pickaxe.breakable_very_hard[0] = 5; + wood_pickaxe.breakable_very_hard[1] = 3; + wood_pickaxe.breakable_very_hard[2] = 4; + wood_pickaxe.attack = 2; + /////////// dclear(C_WHITE); dimage(16, TITLE_IMAGE_MARGIN, &title_img); dtext(1, TITLE_MARGIN, C_BLACK, TITLE_START); dupdate(); int key = 0, game = 0, selected = 0, i, n; - unsigned short terrain[WORLD_WIDTH*WORLD_HEIGHT]; + unsigned short int* terrain = NULL; + terrain = malloc(WORLD_WIDTH*WORLD_HEIGHT*sizeof(unsigned short int)); + if(terrain == NULL){ + ERROR("Need more ram !", 0) + } while(keydown(KEY_EXIT) == 0){ ////////// TITLE SCREEN ////////// if(game == 0){ @@ -331,12 +407,12 @@ int main(void) { terrain[i] = 0; } srand(clock()); - generateworld(terrain, WORLD_WIDTH, WORLD_HEIGHT, (int)((rand() % ((WORLD_HEIGHT - 40) - (WORLD_HEIGHT - 50) + 1)) + WORLD_HEIGHT - 50), WORLD_HEIGHT - 50, WORLD_HEIGHT - 40, 0, 1); + generateworld(terrain, WORLD_WIDTH, WORLD_HEIGHT, (int)((rand() % ((WORLD_HEIGHT - 50) - (WORLD_HEIGHT - 60) + 1)) + WORLD_HEIGHT - 60), WORLD_HEIGHT - 60, WORLD_HEIGHT - 50, 0, 1); srand(clock()); - generateworld(terrain, WORLD_WIDTH, WORLD_HEIGHT, (int)((rand() % ((WORLD_HEIGHT - 30) - (WORLD_HEIGHT - 40) + 1)) + WORLD_HEIGHT - 40), WORLD_HEIGHT - 40, WORLD_HEIGHT - 30, 3, 2); + generateworld(terrain, WORLD_WIDTH, WORLD_HEIGHT, (int)((rand() % ((WORLD_HEIGHT - 40) - (WORLD_HEIGHT - 50) + 1)) + WORLD_HEIGHT - 50), WORLD_HEIGHT - 50, WORLD_HEIGHT - 40, 3, 2); srand(clock()); - generateworld(terrain, WORLD_WIDTH, WORLD_HEIGHT, (int)((rand() % ((WORLD_HEIGHT - 20) - (WORLD_HEIGHT - 30) + 1)) + WORLD_HEIGHT - 30), WORLD_HEIGHT - 30, WORLD_HEIGHT - 20, 4, 2); - dtext(1, 1, C_BLACK, "Adding trees"); + generateworld(terrain, WORLD_WIDTH, WORLD_HEIGHT, (int)((rand() % ((WORLD_HEIGHT - 30) - (WORLD_HEIGHT - 40) + 1)) + WORLD_HEIGHT - 40), WORLD_HEIGHT - 40, WORLD_HEIGHT - 30, 4, 2); + // dtext(1, 1, C_BLACK, "Adding trees"); ///// Add trees ///// addtrees(terrain); ///////////////////// @@ -366,7 +442,15 @@ int main(void) { player.inventoryitems[i] = 0; player.inventorynum[i] = 0; } + player.tool = hand; }else if(game == 3){ + clock_t begin = clock(); + switch(player.inventoryitems[player.invselect]){ + case 7: + player.tool = wood_pickaxe; break; + default: + player.tool = hand; break; + }; player.select_tx = ((player.x+player.selx)>>3); player.select_ty = ((player.y+player.sely)>>3); clearevents(); @@ -445,14 +529,26 @@ int main(void) { } pos = ((player.y+player.sely)>>3)*WORLD_WIDTH+((player.x+player.selx)>>3); if(pos<=WORLD_WIDTH*WORLD_HEIGHT && pos>=0){ + player.is_breakable = 1; + if(is_in(terrain[pos], player.tool.breakable_easy, player.tool.easy_lenght)){ + player.destroytime = 4; + }else if(is_in(terrain[pos], player.tool.breakable_middle, player.tool.middle_lenght)){ + player.destroytime = 8; + }else if(is_in(terrain[pos], player.tool.breakable_hard, player.tool.hard_lenght)){ + player.destroytime = 16; + }else if(is_in(terrain[pos], player.tool.breakable_very_hard, player.tool.very_hard_lenght)){ + player.destroytime = 32; + }else{ + player.is_breakable = 0; + } clearevents(); - if (keydown(KEY_EXE) && terrain[pos] == 0 && player.inventorynum[player.invselect] != 0){ + if (keydown(KEY_EXE) && terrain[pos] == 0 && player.inventorynum[player.invselect] != 0 && is_in(terrain[pos], (int*)canbeplaced, canbeplaced_lenght)){ terrain[pos] = player.inventoryitems[player.invselect]; player.inventorynum[player.invselect]--; if(player.inventorynum[player.invselect] == 0) { player.inventoryitems[player.invselect] = 0; } - }else if (keydown(KEY_1) && terrain[pos] != 0 && player.overlaytimer == player.destroytime && player.overlayframe == 4 && (player.select_tx == player.old_select_tx && player.select_ty == player.old_select_ty)){ + }else if (keydown(KEY_1) && terrain[pos] != 0 && player.is_breakable && player.overlaytimer == player.destroytime && player.overlayframe == 4 && (player.select_tx == player.old_select_tx && player.select_ty == player.old_select_ty)){ for(i=0;i!=INVENTORY_SIZE;i++){ if((terrain[pos] == player.inventoryitems[i] && player.inventorynum[i] < 64 && terrain[pos] != 0) || (player.inventoryitems[i] == 0 && player.inventorynum[i] == 0 && terrain[pos] != 0)) { player.inventoryitems[i] = terrain[pos]; @@ -464,7 +560,7 @@ int main(void) { player.overlayframe = 0; player.overlaytimer = 0; player.wasdestroyingbefore = 0; - }else if (keydown(KEY_1) && terrain[pos] != 0 && (player.select_tx == player.old_select_tx && player.select_ty == player.old_select_ty)){ + }else if (keydown(KEY_1) && terrain[pos] != 0 && player.is_breakable && (player.select_tx == player.old_select_tx && player.select_ty == player.old_select_ty)){ if(player.overlaytimer == player.destroytime){ player.overlaytimer = 0; player.overlayframe++; @@ -508,7 +604,12 @@ int main(void) { player.old_select_tx = player.select_tx; player.old_select_ty = player.select_ty; dupdate(); - sleep_ms(20); + clock_t end = clock(); + double time_spent = (double)(end-begin)/CLOCKS_PER_SEC; + int ms = time_spent*1000; + if(ms < 20){ + sleep_ms(20-ms); + } }else if(game == 4){ dclear(C_WHITE); drawdetailinv(); diff --git a/src/msg_fr.h b/src/msg_fr.h index 3dd2618..fe98609 100644 --- a/src/msg_fr.h +++ b/src/msg_fr.h @@ -10,6 +10,7 @@ # define STEEL_TILE "M. aci." # define WOOD_TILE "Bois" # define WOODPLANKS_TILE "Planche" +# define WOODPICKAXE_TILE "B. pio." # define MULTIPLY "x" # define ITEM_BUILT "Item construit." # define ITEM_NOT_BUILT "Peut pas construire." diff --git a/src/objects.h b/src/objects.h index 6b52f95..25ca58e 100644 --- a/src/objects.h +++ b/src/objects.h @@ -1,3 +1,17 @@ + +typedef struct Tool Tool; +struct Tool{ + int* breakable_easy; + int easy_lenght; + int* breakable_middle; + int middle_lenght; + int* breakable_hard; + int hard_lenght; + int* breakable_very_hard; + int very_hard_lenght; + int attack; +}; + typedef struct Player Player; struct Player{ int x; @@ -22,6 +36,8 @@ struct Player{ int old_select_ty; int wasdestroyingbefore; int destroytime; + bool is_breakable; + Tool tool; }; typedef struct Crafting Crafting; @@ -33,17 +49,21 @@ struct Crafting{ }; const int craftingsitems[CRAFTINGS*CRAFTSIZE] = { 5, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0 }; const int craftingsnum[CRAFTINGS*CRAFTSIZE] = { 1, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0 + 4, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0, 0 }; const int craftingitem[CRAFTINGS] = { 6, - 5 + 5, + 7 }; const int craftingnum[CRAFTINGS] = { 4, + 1, 1 }; \ No newline at end of file