Classic 15 puzzle
Diff: main.c
- Revision:
- 2:6d5ef2d31e52
- Parent:
- 0:b0c9d3b227f6
--- a/main.c Tue May 08 17:40:58 2018 +0000 +++ b/main.c Tue May 15 19:25:51 2018 +0000 @@ -1,5 +1,5 @@ -#include "Pokitto.h" // include Pokitto library +#include "Pokitto.h" #include <cstddef> #include "gfx.h" #include "math.h" @@ -8,7 +8,7 @@ #define GRID_ROWS 4 #define TILE_SIZE 40 #define SHUFFLE_MOVES 20 -#define MAX_LEVEL 6 +#define MAX_LEVEL 7 Pokitto::Core g; @@ -19,6 +19,8 @@ bool HighlightNumbers=false; uint16_t FrameCount=0; +char *AuthorActive; + uint16_t Score=0; typedef enum @@ -57,8 +59,9 @@ const char * Info = { - "Pok15 is the remake of the classic 15-puzzle. \r\n" - "Purpose of the game, is to slide all the tiles to put them in order.\r\n" + "Pok15 is the remake of the classic 15-puzzle.\r\n" + "Purpose of the game:slide all tiles in order.\r\n" + "Press B to highlight.\r\n" "\r\n" "Have fun." }; @@ -216,7 +219,6 @@ //During shuffle win is not valid if(ShuffleCount>0) return false; - bool sequenceOk=true; int8_t index=0; for (int8_t r=0; r<GRID_ROWS; r++) { @@ -287,38 +289,49 @@ } } - void DrawLevel(int level,bool drawBorder,bool drawNumbers,bool highlightNumbers,bool drawFull) { switch(level) { case 0: - DrawTiles(City_pal,City,drawBorder,drawNumbers,highlightNumbers,drawFull); + DrawTiles(jonne_pal,jonne,drawBorder,drawNumbers,highlightNumbers,drawFull); TextColor=7; + AuthorActive="Art by @jonne"; break; case 1: - DrawTiles(Forest_pal,Forest,drawBorder,drawNumbers,highlightNumbers,drawFull); + DrawTiles(Vampirics_pal,Vampirics,drawBorder,drawNumbers,highlightNumbers,drawFull); TextColor=7; + AuthorActive="by Vampirics"; break; case 2: - DrawTiles(StarWars_pal,StarWars,drawBorder,drawNumbers,highlightNumbers,drawFull); + DrawTiles(adekto_pal,adekto,drawBorder,drawNumbers,highlightNumbers,drawFull); TextColor=7; + AuthorActive="by @adekto"; break; case 3: - DrawTiles(Mage_pal,Mage,drawBorder,drawNumbers,highlightNumbers,drawFull); + DrawTiles(JAP_pal,JAP,drawBorder,drawNumbers,highlightNumbers,drawFull); TextColor=7; + AuthorActive="by JAP"; break; case 4: - DrawTiles(Gnome_pal,Gnome,drawBorder,drawNumbers,highlightNumbers,drawFull); + DrawTiles(lancelot_gao_pal,lancelot_gao,drawBorder,drawNumbers,highlightNumbers,drawFull); TextColor=7; + AuthorActive="by lancelot_gao"; break; case 5: - DrawTiles(Kid_pal,Kid,drawBorder,drawNumbers,highlightNumbers,drawFull); + DrawTiles(jonne2_pal,jonne2,drawBorder,drawNumbers,highlightNumbers,drawFull); TextColor=7; + AuthorActive="by @jonne"; break; case 6: - DrawTiles(Sword_pal,Sword,drawBorder,drawNumbers,highlightNumbers,drawFull); + DrawTiles(buch_pal,buch,drawBorder,drawNumbers,highlightNumbers,drawFull); TextColor=7; + AuthorActive="by Buch"; + break; + case 7: + DrawTiles(jonne3_pal,jonne3,drawBorder,drawNumbers,highlightNumbers,drawFull); + TextColor=7; + AuthorActive="by @jonne"; break; default: break; @@ -346,6 +359,7 @@ g.display.print(LevelActive+1); } + void PrintCenter(uint8_t x,uint8_t y,char text[],int lenght) { g.display.print(x-((lenght*g.display.fontWidth)/2), @@ -464,17 +478,32 @@ break; } } +} +uint16_t StringLenght(char *s) +{ + uint16_t l=0; + while(true) + { + if(s[l]==NULL) + return l; + l++; + } } void StateVictory() { g.display.clear(); DrawLevel(LevelActive,false,false,false,true); + + //Draw author g.display.color=random(15); - g.display.drawRect(10,1,g.display.width-20,g.display.height-2); + g.display.print((g.display.width - strlen(AuthorActive)*g.display.fontWidth)/2 ,0,AuthorActive); - if(A_B_Pressed() || FrameCount>40) + g.display.color=random(15); + g.display.drawRect(g.display.width/2-80,10,160,160); + + if(A_B_Pressed() || FrameCount>600) { Score+=(LevelActive+1)*1000/(PlayerMoves+1); ssm=SSM::Outro; @@ -540,7 +569,7 @@ g.display.color=random(0,15); g.display.print((g.display.width-(g.display.fontWidth*7))/2, (g.display.height-g.display.fontHeight)/2, - " YOU WIN!"); + "WELL DONE"); //g.display.color=random(0,15); g.display.setCursor((g.display.width-(g.display.fontWidth*8))/2, (g.display.height-g.display.fontHeight)/2+10);