diff --git a/AST3.g3a b/AST3.g3a index 7e6bc0b..2270910 100644 Binary files a/AST3.g3a and b/AST3.g3a differ diff --git a/editor/AST3generator.py b/editor/AST3generator.py index 1c4001d..e46cefa 100644 --- a/editor/AST3generator.py +++ b/editor/AST3generator.py @@ -27,7 +27,7 @@ def newgrille(): ["1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1"] def load(ids): - global grille, gravityid + global grille, gravityid, app, disa try: lv = open(f"editor/levels/{ids}.lvl","r") ide = lv.readlines() @@ -35,6 +35,12 @@ def load(ids): if len(ide)==1: ide = str(ide[0][:-1]) else: + if ide[1]!="\n": + app = int(ide[1][:-1]) + disa = int(ide[2]) + else: + app = int(ide[2][:-1]) + disa = int(ide[3]) ide = str(ide[0][:-2]) grille=[] for j in range(14): @@ -50,8 +56,8 @@ def place(): level = font.render(str(id_level),1,(0,0,0)) if int(gravityid)==6: levelgr = font.render("↓",1,(120,0,0)) if int(gravityid)==7: levelgr = font.render("↑",1,(0,120,120)) - timeapp = font.render(str(app),1,(0,120,120)) - timedisa = font.render(str(disa),1,(0,120,120)) + timeapp = font.render("A="+str(app),1,(255,180,0)) + timedisa = font.render("D="+str(disa)+" LOCK : "+str(lock),1,(0,255,100)) for a in range(14): for b in range(25): pygame.draw.rect(fenetre,(255,255,255),((52*b, 52*a), (52, 52))) @@ -87,8 +93,8 @@ def place(): fenetre.blit(pygame.transform.scale(blackout,(52,52)),(52*b,52*a)) fenetre.blit(level, (10, 10)) fenetre.blit(levelgr, (10, 60)) - fenetre.blit(timeapp, (50, 10)) - fenetre.blit(timedisa, (100, 10)) + fenetre.blit(timeapp, (55, 10)) + fenetre.blit(timedisa, (140, 10)) pygame.display.flip() def write(): @@ -113,7 +119,7 @@ id_level = 1 gravityid = 6 disa = 10 app = 13 - +lock="" solid_0 = pygame.image.load("editor/img/solid_0.png").convert() player = pygame.image.load("editor/img/player.png").convert() @@ -165,6 +171,9 @@ while securite==False: disa-=1 write() place() + if carac == "a": + lock="" + place() if event.key == pygame.K_LSHIFT: if gravityid=="7": gravityid="6" @@ -176,29 +185,40 @@ while securite==False: if event.button == 1: x=int(event.pos[0]/52) y=int(event.pos[1]/52) - for i in range(len(suite)): - if grille[y][x] == suite[i]: - if i!=len(suite)-1: - grille[y][x]=suite[i+1] - break - else: - grille[y][x]=suite[0] - break + if lock!="": + grille[y][x]=lock + else: + for i in range(len(suite)): + if grille[y][x] == suite[i]: + if i!=len(suite)-1: + grille[y][x]=suite[i+1] + break + else: + grille[y][x]=suite[0] + break pygame.draw.rect(fenetre,(255,255,255),((52*x, 52*y), (52, 52))) place() if event.button == 2: - securite=True - if event.button == 3: x=int(event.pos[0]/52) y=int(event.pos[1]/52) for i in range(len(suite)): if grille[y][x] == suite[i]: - if i!=len(suite)+1: - grille[y][x]=suite[i-1] - break - else: - grille[y][x]=suite[len(suite)] - break + lock=suite[i] + place() + if event.button == 3: + x=int(event.pos[0]/52) + y=int(event.pos[1]/52) + if lock!="": + grille[y][x]="0" + else: + for i in range(len(suite)): + if grille[y][x] == suite[i]: + if i!=len(suite)+1: + grille[y][x]=suite[i-1] + break + else: + grille[y][x]=suite[len(suite)] + break pygame.draw.rect(fenetre,(255,255,255),((52*x, 52*y), (55, 55))) place() write() \ No newline at end of file diff --git a/editor/README.md b/editor/README.md new file mode 100644 index 0000000..10d7fe6 --- /dev/null +++ b/editor/README.md @@ -0,0 +1,33 @@ +# AST3_C + +## Éditeur : + +Pour ouvrir (python + pygame): +`$ ./editor.sh` + +## Commande : + +- Q niveau précédent (Numéro de salle affiché en haut à gauche) +- D niveau suivant +- Z augmenter temps avant apparition blocs + (temps affiché en haut à gauche) +- S baisser temps avant apparition blocs + +- R augmenter temps avant disparition blocs - (temps affiché en haut à gauche) +- F baisser temps avant disparition blocs - +- SHIFT changer le sens de la gravité par défaut (gravité affichée en haut à gauche) +- A supprime le bloc bloqué dans la main. + + +Click gauche : tourner parmis les blocs dans le sens horaire +Click droit : tourner parmis les blocs dans le sens anti-horaire + +Click molette centrale sur un bloc : bloquer ce bloc dans la main, permet de placer plusieurs fois le même bloc rapidement. (bloc bloqué affiché en haut) +Click gauche après molette : placer le bloc +Click droit après molette : supprimer le bloc + +## Sauvegarde : + +L'éditeur sauvegarde automatiquement les niveaux à chaques actions. + +`$ ./build.sh` pour construire l'application depuis ces niveaux. + +by Tituya diff --git a/editor/levels/1.lvl b/editor/levels/1.lvl index d06a89d..ce3bc8b 100644 --- a/editor/levels/1.lvl +++ b/editor/levels/1.lvl @@ -1 +1 @@ -10011111111dddd111111111100011110000000000000000000001111001111111dddd100001111111001dd000ddddd111111111111001dd0t0ddddddddd11000001001dd000ddddddddd11000001001aaaaaaaaaaaaaa110s00010010000000000000e1111100100100000000000aaa11111001001000000000ddddd1111100100100000000011111100010000010000000003000000001000001000K0000030k00010011111111111111111111116 \ No newline at end of file +10011111111dddd111111111100011110000000000000000000001111001111111dddd100001111111001dd000ddddd111111111111001dd0t0ddddddddd11000001001dd000ddddddddd11000001001aaaaaaaaaaaaaa110s00010010000000000000e1111100100100000000000aaa11111001001000000000ddddd1111100100100000000011111100010000010000000003000000001000001000K0000030k00010011111111111111111111116 diff --git a/editor/levels/2.lvl b/editor/levels/2.lvl index f922b59..38c3221 100644 --- a/editor/levels/2.lvl +++ b/editor/levels/2.lvl @@ -1 +1 @@ -111001111111100d0d0011111100000111ddd000d0d0000001100000000000000dtd00000e1111111ddd111111111111111100000000000000000l00d0000111111111dd111110100d000110001100000000010100d0001000011000000000d0d00d00000000l0000000000d0d00d00001111dd111000000d0d00111111000011111ddd00d0d00111111000011111ddd00d0d001111110s0011111ddd00d0d0011111111001111111100d0d00111116 \ No newline at end of file +111001111111100d0d0011111100000111ddd000d0d0000001100000000000000dtd00000e1111111ddd111111111111111100000000000000000l00d0000111111111dd111110100d000110001100000000010100d0001000011000000000d0d00d00000000l0000000000d0d00d00001111dd111000000d0d00111111000011111ddd00d0d00111111000011111ddd00d0d001111110s0011111ddd00d0d0011111111001111111100d0d00111116 diff --git a/editor/levels/3.lvl b/editor/levels/3.lvl index 1a01c05..e9fee69 100644 --- a/editor/levels/3.lvl +++ b/editor/levels/3.lvl @@ -1 +1 @@ -11001111111001111111111111000111dddd000000000100013000111dddd00000000010003300000000dd11111000010e03100000000dd03a01000011111111110000dd03a01000000001100s1dd00ddt3a0100000000110001dd00dd1110100000000110001dd0Kdd00001ddd000ddd10001dd00dd00001111100ddd10001dd00dd00001000000ddd30001dd0000000010k000000330001dd0000000010000000031d001111111001111111111117 \ No newline at end of file +11001111111001111111111111000111dddd000000000100013000111dddd00000000010003300000000dd11111000010e03100000000dd03a01000011111111110000dd03a01000000001100s1dd00ddt3a0100000000110001dd00dd1110100000000110001dd0Kdd00001ddd000ddd10001dd00dd00001111100ddd10001dd00dd00001000000ddd30001dd0000000010k000000330001dd0000000010000000031d001111111001111111111117 diff --git a/editor/levels/4.lvl b/editor/levels/4.lvl index 12f86cf..dee82d5 100644 --- a/editor/levels/4.lvl +++ b/editor/levels/4.lvl @@ -1,3 +1,4 @@ 1dddddd100111111111111111000000000011111000000000000000000l01100c00000000001aaaaaaa111100c00000000011dddddddddd1001aaaaaaaaa11cccccccccc1001ddddddddd1000000000001331000000aa000000000000s10e1k0000000001ccccccccc111111111113311100000000011001000000000110000000001100b0000000001100000000011t0b00000000011000K0000011111aaaaaaaaa1111111110011111ddddddddd16 + 12 -5 \ No newline at end of file +1 \ No newline at end of file diff --git a/editor/levels/5.lvl b/editor/levels/5.lvl new file mode 100644 index 0000000..7dc219c --- /dev/null +++ b/editor/levels/5.lvl @@ -0,0 +1,4 @@ +0000000000000000000000000000000000000000000000000000000000000000000000000000011dd111111111111111110000100000100000010000001000011cc001s0000d00000001000010000e111dd0100110dd100001001111000d0000000dd100001000001000111d000ddd1000010000000000000000ddd1000011111111111d111111111000000000000000000000000000000000000000000000000000000000000000000000000000006 + +12 +6 \ No newline at end of file diff --git a/editor/levels/6.lvl b/editor/levels/6.lvl new file mode 100644 index 0000000..a396c46 --- /dev/null +++ b/editor/levels/6.lvl @@ -0,0 +1,4 @@ +11111111111011111dddd1111100001dd0000dd100000000011s0001dd0d11dd10000000001111001dd0d1111100111100011dd001dt0d10000001dd100011dd001d11d10000001dd100011dd00dd11110011111dd100011dd00000000001dddddd100011dd1111dbd1111ddd111100011ddddddd0dd1d1ddd100000011ddddddd0000d1ddd1e0000011ddddddd1110d1ddd111cccc11dddddddddd0d1ddd111dddd111111111111011111111111116 + +12 +7 \ No newline at end of file diff --git a/editor/setlevel.c b/editor/setlevel.c deleted file mode 100644 index 8e44bda..0000000 --- a/editor/setlevel.c +++ /dev/null @@ -1,55 +0,0 @@ -#include "setlevel.h" -#include -void set_level(int id_level, char level[], int *startx, int *starty, char *gravity, char check_coin, int *appear, int *disappear){ -switch(id_level){case 1: -memcpy(level,"10011111111dddd111111111100011110000000000000000000001111001111111dddd100001111111001dd000ddddd111111111111001dd0t0ddddddddd11000001001dd000ddddddddd11000001001aaaaaaaaaaaaaa110s00010010000000000000e1111100100100000000000aaa11111001001000000000ddddd1111100100100000000011111100010000010000000003000000001000001000K0000030k0001001111111111111111111111",350); -break; -case 2: -memcpy(level,"111001111111100d0d0011111100000111ddd000d0d0000001100000000000000dtd00000e1111111ddd111111111111111100000000000000000l00d0000111111111dd111110100d000110001100000000010100d0001000011000000000d0d00d00000000l0000000000d0d00d00001111dd111000000d0d00111111000011111ddd00d0d00111111000011111ddd00d0d001111110s0011111ddd00d0d0011111111001111111100d0d0011111",350); -break; -case 3: -memcpy(level,"11001111111001111111111111000111dddd000000000100013000111dddd00000000010003300000000dd11111000010e03100000000dd03a01000011111111110000dd03a01000000001100s1dd00ddt3a0100000000110001dd00dd1110100000000110001dd0Kdd00001ddd000ddd10001dd00dd00001111100ddd10001dd00dd00001000000ddd30001dd0000000010k000000330001dd0000000010000000031d00111111100111111111111",350); -break; -case 4: -memcpy(level,"1dddddd100111111111111111000000000011111000000000000000000l01100c00000000001aaaaaaa111100c00000000011dddddddddd1001aaaaaaaaa11cccccccccc1001ddddddddd1000000000001331000000aa000000000000s10e1k0000000001ccccccccc111111111113311100000000011001000000000110000000001100b0000000001100000000011t0b00000000011000K0000011111aaaaaaaaa1111111110011111ddddddddd1",350); -*appear=13; -*disappear=10; -break; -case 5: -memcpy(level,"11111111111111111111111111000000000000000000000001100000000000000000000000110000000000000000000000011000000000000000000000001100000000000000000000000110000000000000000000000011000000000000000000000001100000000000000000000000110s00000000000000000000011111c0000000000000000000110010000000000000000000011001000000000000000000e011111111111111111111111111",350); -*appear=8; -*disappear=15; -break; -}if(check_coin) for (int i = 0; level[i]!='\0' ; i++) if(level[i]=='t') level[i]='0'; -set_gravity(id_level, gravity); -unsigned int x = 0; -unsigned int y = 0; -unsigned int i = 0; -while (i!=strlen(level)){ -switch(level[i]){ -case 's': -*startx = x; -*starty = y; -break;} -x+=16; -if(x==16*25){x=0; -y+=16;}i++;}} -void set_gravity(int id_level, char *default_gravity){ -switch(id_level){case 1: -*default_gravity = 0; -break; -case 2: -*default_gravity = 0; -break; -case 3: -*default_gravity = 1; -break; -case 4: -*default_gravity = 0; -break; -case 5: -*default_gravity = 0; -break; -}} -void del_level(char level[]) -{memcpy(level,"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",350);} \ No newline at end of file diff --git a/include/define.h b/include/define.h index af1280c..fb8b383 100644 --- a/include/define.h +++ b/include/define.h @@ -1,3 +1,3 @@ #define PLAYER_SPEED 2 #define PLAYER_HEIGHT 11 -#define FPS 80 +#define FPS 70 diff --git a/src/setlevel.c b/src/setlevel.c index 956402f..b6a2e2f 100644 --- a/src/setlevel.c +++ b/src/setlevel.c @@ -2,18 +2,28 @@ #include void set_level(int id_level, char level[], int *startx, int *starty, char *gravity, char check_coin, int *appear, int *disappear){ switch(id_level){case 1: -memcpy(level,"10011111111dddd111111111100011110000000000000000000001111001111111dddd100001111111001dd000ddddd111111111111001dd0t0ddddddddd11000001001dd000ddddddddd11000001001aaaaaaaaaaaaaa110s00010010000000000000e1111100100100000000000aaa11111001001000000000ddddd1111100100100000000011111100010000010000000003000000001000001000K0000030k0001001111111111111111111111",350); +memcpy(level,"10011111111dddd111111111100011110000000000000000000001111001111111dddd100001111111001dd000ddddd111111111111001dd0t0ddddddddd11000001001dd000ddddddddd11000001001aaaaaaaaaaaaaa110s00010010000000000000e1111100100100000000000aaa11111001001000000000ddddd1111100100100000000011111100010000010000000003000000001000001000K0000030k00010011111111111111111111116",350); break; case 2: -memcpy(level,"111001111111100d0d0011111100000111ddd000d0d0000001100000000000000dtd00000e1111111ddd111111111111111100000000000000000l00d0000111111111dd111110100d000110001100000000010100d0001000011000000000d0d00d00000000l0000000000d0d00d00001111dd111000000d0d00111111000011111ddd00d0d00111111000011111ddd00d0d001111110s0011111ddd00d0d0011111111001111111100d0d0011111",350); +memcpy(level,"111001111111100d0d0011111100000111ddd000d0d0000001100000000000000dtd00000e1111111ddd111111111111111100000000000000000l00d0000111111111dd111110100d000110001100000000010100d0001000011000000000d0d00d00000000l0000000000d0d00d00001111dd111000000d0d00111111000011111ddd00d0d00111111000011111ddd00d0d001111110s0011111ddd00d0d0011111111001111111100d0d00111116",350); break; case 3: -memcpy(level,"11001111111001111111111111000111dddd000000000100013000111dddd00000000010003300000000dd11111000010e03100000000dd03a01000011111111110000dd03a01000000001100s1dd00ddt3a0100000000110001dd00dd1110100000000110001dd0Kdd00001ddd000ddd10001dd00dd00001111100ddd10001dd00dd00001000000ddd30001dd0000000010k000000330001dd0000000010000000031d00111111100111111111111",350); +memcpy(level,"11001111111001111111111111000111dddd000000000100013000111dddd00000000010003300000000dd11111000010e03100000000dd03a01000011111111110000dd03a01000000001100s1dd00ddt3a0100000000110001dd00dd1110100000000110001dd0Kdd00001ddd000ddd10001dd00dd00001111100ddd10001dd00dd00001000000ddd30001dd0000000010k000000330001dd0000000010000000031d001111111001111111111117",350); break; case 4: memcpy(level,"1dddddd100111111111111111000000000011111000000000000000000l01100c00000000001aaaaaaa111100c00000000011dddddddddd1001aaaaaaaaa11cccccccccc1001ddddddddd1000000000001331000000aa000000000000s10e1k0000000001ccccccccc111111111113311100000000011001000000000110000000001100b0000000001100000000011t0b00000000011000K0000011111aaaaaaaaa1111111110011111ddddddddd1",350); *appear=12; -*disappear=5; +*disappear=1; +break; +case 5: +memcpy(level,"0000000000000000000000000000000000000000000000000000000000000000000000000000011dd111111111111111110000100000100000010000001000011cc001s0000d00000001000010000e111dd0100110dd100001001111000d0000000dd100001000001000111d000ddd1000010000000000000000ddd1000011111111111d11111111100000000000000000000000000000000000000000000000000000000000000000000000000000",350); +*appear=12; +*disappear=6; +break; +case 6: +memcpy(level,"11111111111011111dddd1111100001dd0000dd100000000011s0001dd0d11dd10000000001111001dd0d1111100111100011dd001dt0d10000001dd100011dd001d11d10000001dd100011dd00dd11110011111dd100011dd00000000001dddddd100011dd1111dbd1111ddd111100011ddddddd0dd1d1ddd100000011ddddddd0000d1ddd1e0000011ddddddd1110d1ddd111cccc11dddddddddd0d1ddd111dddd11111111111101111111111111",350); +*appear=12; +*disappear=7; break; }if(check_coin) for (int i = 0; level[i]!='\0' ; i++) if(level[i]=='t') level[i]='0'; set_gravity(id_level, gravity); @@ -42,6 +52,12 @@ break; case 4: *default_gravity = 0; break; +case 5: +*default_gravity = 0; +break; +case 6: +*default_gravity = 0; +break; }} void del_level(char level[]) {memcpy(level,"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",350);} \ No newline at end of file