From 14b5d4c077fd52db1cbbc25268b5e0bbb18b17d0 Mon Sep 17 00:00:00 2001 From: Tituya Date: Thu, 16 Jul 2020 02:06:57 +0200 Subject: [PATCH] 2 nouveaux blocs --- AST3.g3a | Bin 58600 -> 59936 bytes AST3generator.py | 71 ++++++++++++++++++++------- assets-cg/img/blackout.png | Bin 0 -> 447 bytes assets-cg/img/end.png | Bin 265 -> 286 bytes editor/img/blackout.png | Bin 0 -> 429 bytes editor/img/change.png | Bin 0 -> 265 bytes editor/img/end.png | Bin 265 -> 287 bytes editor/setlevel.c | 40 ++++++++++++++++ include/drawlevel.h | 1 + include/setlevel.h | 1 + src/drawlevel.c | 16 +++++++ src/main.c | 55 +++++++++++++++++++++ src/setlevel.c | 95 +++++++++++++++---------------------- 13 files changed, 205 insertions(+), 74 deletions(-) create mode 100644 assets-cg/img/blackout.png create mode 100644 editor/img/blackout.png create mode 100644 editor/img/change.png create mode 100644 editor/setlevel.c diff --git a/AST3.g3a b/AST3.g3a index 90b82dc1a182ab5441e9c7ee946dc4486213664d..275199b22a82205ece2000515aeeee6551200ebc 100644 GIT binary patch delta 5843 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 bb2pbd&Kqt*nGVI|Ivh)TN0*4;f9n4QR07e@ delta 4812 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 XiI-;aLWQ6EDzctU-!4$#A5{MfF-VSF diff --git a/AST3generator.py b/AST3generator.py index fc3ceea..c093dc7 100644 --- a/AST3generator.py +++ b/AST3generator.py @@ -6,6 +6,7 @@ Pour le CPC#26 import pygame from pygame.locals import * +clock = pygame.time.Clock() def newgrille(): global grille grille=\ @@ -26,24 +27,42 @@ def newgrille(): newgrille() -""" -s="10001011111011111111111111000101dd10001111dddd11110000101dd100010000000000011111m1dd1aaa1000ccccddd110s00010013331000000000011dddd110010001000dd00000100000000010e01000dd00000011111100011111dddddddd1111k000000010000111001111111111111101000000000111111000010000100000000000000010K010000100011100000011110t0100001000111000ddd1111000101111101111111111111" -grille=[] -for j in range(14): - grille.append([]) - for i in range(25): - grille[-1].append(s[i+25*j])""" +def load(ids): + global grille + for lev,ide in niv.items(): + if lev==ids: + grille=[] + print(ide) + for j in range(14): + grille.append([]) + for i in range(25): + grille[-1].append(str(ide[i+25*j])) + place() + break -p = open("src/set.c","w+") +niv={} +niveau=1 +texte = open("src/setlevel.c", "r+") +for line in texte: + if "memcpy" in line: + niv[niveau]=line[14:-8] + niveau+=1 + if "del_level" in line: + break + +p = open("editor/setlevel.c","w+") p.write("#include \"setlevel.h\"\n#include \nvoid set_level(int id_level, char level[], int *startx, int *starty, char *gravity, char check_coin){\nswitch(id_level){") #Defini la suite des blocs pendant les changements (cliquer sur un 1 va donner un 2, cliquer sur un 11 un 0...) -suite=["0","1","d","s","e","k","3","K","a","c","m","t"] +suite=["0","1","d","s","e","k","3","K","a","c","m","t","l","b"] def place(): level = font.render(str(id_level),1,(0,0,0)) levelgr = font.render(str(gravityid),1,(0,0,0)) + for a in range(14): + for b in range(25): + pygame.draw.rect(fenetre,(255,255,255),((52*b, 52*a), (52, 52))) for a in range(14): for b in range(25): if grille[a][b]=="0": @@ -70,17 +89,23 @@ def place(): fenetre.blit(pygame.transform.scale(key2block,(52,52)),(52*b,52*a)) if grille[a][b]=="t": fenetre.blit(pygame.transform.scale(coin,(52,52)),(52*b,52*a)) + if grille[a][b]=="l": + fenetre.blit(pygame.transform.scale(change,(52,52)),(52*b,52*a)) + if grille[a][b]=="b": + fenetre.blit(pygame.transform.scale(blackout,(52,52)),(52*b,52*a)) fenetre.blit(level, (10, 10)) fenetre.blit(levelgr, (10, 60)) pygame.display.flip() pygame.init() +pygame.mixer.quit() pygame.display.set_caption('AST3 generator (Tituya)') fenetre = pygame.display.set_mode((25*52, 14*52)) font = pygame.font.SysFont('arial',25,True) id_level = 1 gravity = "" +identifiant = "" gravityid = 0 solid_0 = pygame.image.load("editor/img/solid_0.png").convert() @@ -94,23 +119,33 @@ key2 = pygame.image.load("editor/img/key2.png").convert_alpha() end = pygame.image.load("editor/img/end.png").convert_alpha() dead = pygame.image.load("editor/img/dead.png").convert() coin = pygame.image.load("editor/img/coin.png").convert_alpha() +change = pygame.image.load("editor/img/change.png").convert_alpha() +blackout = pygame.image.load("editor/img/blackout.png").convert_alpha() -for a in range(14): - for b in range(25): - pygame.draw.rect(fenetre,(255,255,255),((52*b, 52*a), (52, 52))) +for cle in niv: + if id_level==cle: + load(id_level) + break + else: + newgrille() place() securite=False while securite==False: - #boucle permettant l'affichage + clock.tick(60) for event in pygame.event.get(): if event.type==QUIT: securite=True elif event.type == pygame.KEYDOWN: if event.key == pygame.K_TAB: - p.write(f"case {id_level}:\nmemcpy(level,\""+str(grille).replace("]","").replace("(","").replace(")","").replace("'","").replace("[","").replace(" ","").replace(",","")+"\",350);\nbreak;\n") + identifiant+=f"case {id_level}:\nmemcpy(level,\""+str(grille).replace("]","").replace("(","").replace(")","").replace("'","").replace("[","").replace(" ","").replace(",","")+"\",350);\nbreak;\n" gravity+=f"case {id_level}:\n*default_gravity = {gravityid};\nbreak;\n" id_level+=1 - newgrille() + for cle in niv: + if id_level==cle: + load(id_level) + break + else: + newgrille() place() if event.key == pygame.K_LSHIFT: if gravityid: @@ -133,9 +168,11 @@ while securite==False: pygame.draw.rect(fenetre,(255,255,255),((52*x, 52*y), (52, 52))) place() if event.button == 2: - p.write("}if(check_coin) for (int i = 0; level[i]!='\\0' ; i++) if(level[i]=='t') level[i]='0';\nset_gravity(id_level, gravity);\nunsigned int x = 0;\ + p.write(identifiant+"}if(check_coin) for (int i = 0; level[i]!='\\0' ; i++) if(level[i]=='t') level[i]='0';\nset_gravity(id_level, gravity);\nunsigned int x = 0;\ \nunsigned int y = 0;\nunsigned int i = 0;\nwhile (i!=strlen(level)){\nswitch(level[i]){\ncase 's':\n*startx = x;\n*starty = y;\nbreak;}\nx+=16;\nif(x==16*25){x=0;\ny+=16;}i++;}}\n\ -void set_gravity(int id_level, char *default_gravity){\nswitch(id_level){\n"+gravity+"}}") +void set_gravity(int id_level, char *default_gravity){\nswitch(id_level){\n"+gravity+"}}\nvoid del_level(char level[])\n{memcpy(level,\"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",350);}") + securite=True + texte.close() if event.button == 3: x=int(event.pos[0]/52) y=int(event.pos[1]/52) diff --git a/assets-cg/img/blackout.png b/assets-cg/img/blackout.png new file mode 100644 index 0000000000000000000000000000000000000000..cf28013868eb06d208812a6cacb22788006e751a GIT binary patch literal 447 zcmV;w0YLtVP))?`~+fs+(hQryc&0c$*vo`-*1QX|P5g#V8 zNOSoK@f1g0cAHo0!vPWeR-~MmWvb5NQz|be6@~eO$1FXcB$9{_6wR8jD$uPs!$aw9M8&#K=O;4rB(hW%NKJEm$&VJTw<9NpPl);QCXk%tV!+)p=g-(`kgIa1$o({D zCHiCe*KPdOW-3R$#LT@A>vj0N!A_6NfSH9z%cPAlop*s`ny)zqx0zcH6+$8Ny>ZNzUX`~e)4Y>rvZ>ev7P002ovPDHLkV1jgS&!+$Y literal 0 HcmV?d00001 diff --git a/assets-cg/img/end.png b/assets-cg/img/end.png index a5c5221b079d15ca36457c75e4eb855608f70ace..5a5b1a9eef18eafa154c829a216d6f848822c531 100644 GIT binary patch delta 242 zcmVg+H0W1T>qGjm)Fa4g3`Umu91LcG4rW zku5eLnZ&}~5HFyd?d{#&y>s@xy9=F;HgDyY`fn{ZYGz|hD`(2L)|$qcHV6}3&!?#? zfYw^O(%ybG#e66mPVo+armiT93@t<@a6O+>?33;z0M6GtkZY-5aI|KJ4Z!7=0}zA> z+C0>Np?TvxM&En|SZh~hk$q64`v}+bRfsb5=cnj{CsVHBj`(J sp_xHhq@iT7M8k!e4UiD2$5wi=-iYjNx?++$g8%>k07*qoM6N<$g5g?n4gdfE delta 221 zcmV<303!dM0*L~UG=IQJL_t(Ijg3>m5yK!1lUacY@?pAOR-j#>N0;lT6J!SUQ6L6P zs6GM5mSr0QByk0jrcbuHdPx(a7XT4yY|7U`M5;qrsL{basYwvXYAfeXshg6N?^^^u zp63puj584M@w6Y0)|aGR1_1a-C7)G6Pe5{H$j;jVeA4}AdsZ4rnsQ1u)wB(aH9-uq4hkK2B1pmK^$|qK#0L-u zMTAf+si7reliZ~FxYvoPH!XE2E;w-5i~Zjl*5-dxmV19war24t%@rq#s+NY9zTEdW z1Geggyj!(v$D!avaGKu;vZ7-(Z}K3eJRs6C(ZNz#T|!=N%vUW-2&uejHW(jR8_9)sw&ow-1s0kRhKATCswYu0QWDAhi4o;Qv0_mK4$y^ XE;n{h1+yfn00000NkvXXu0mjf%-FrH literal 0 HcmV?d00001 diff --git a/editor/img/change.png b/editor/img/change.png new file mode 100644 index 0000000000000000000000000000000000000000..a5c5221b079d15ca36457c75e4eb855608f70ace GIT binary patch literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfKaSXBO z?F~LCcvyjFa%3atr^H=xVGCjxx=(+-TsVd8YoG#~&k8%ny9p~oFi6TJZQVpQ{Y6F_H)0LvnNe?AI)Mn?>XP%9%F$IAGgT&Uz@%p zmW|wGEZsUrxyAB?J z0~q5(3>R>ABQUv{)P)kjS5p0xrp?Ry|9pKd^x9uIz;Rj2|PcbNCNUK2Hm5yK!1lUacY@?pAOR-j#>N0;lT6J!SUQ6L6P zs6GM5mSr0QByk0jrcbuHdPx(a7XT4yY|7U`M5;qrsL{basYwvXYAfeXshg6N?^^^u zp63puj584M@w6Y0)|aGR1_1a-C7)G6Pe5{H$j;jVeA4}AdsZ4rnsQ1u)wB( +void set_level(int id_level, char level[], int *startx, int *starty, char *gravity, char check_coin){ +switch(id_level){case 1: +memcpy(level,"1111111111111111111111111100000000000100001dt10001100000000000100001td10001100000000000100001dt10001100000000000000001111000110000ddd00000000000000001100000000000000000000d001100000000000000000000d0011110000000000000000111111101000000000000000000100110000000000000000000000011000000000001110000000001100s0000l0000b0000l000e011111111111111111111111111",350); +break; +case 2: +memcpy(level,"111001111111100d0d0011111100000111ddd000d0d0000001100000000000000dtd00000e1111111ddd111111111111111100000000000000000l00d0000111111111dd111110100d000110001100000000010100d0001000011000000000d0d00d000000000l000000000d0d00d00001111dd111000000d0d00111111000011111ddd00d0d00111111000011111ddd00d0d001111110s0011111ddd00d0d0011111111001111111100d0d0011111",350); +break; +case 3: +memcpy(level,"11111111111001111111111111000111dddd000000000100013000111dddd00000000010003300000000dd11111000010e03100000000dd03a01000011111111110000dd03a01000000001100s1dd00ddt3a0100000000110001dd00dd1110100000000110001dd0Kdd00001ddd000ddd10001dd00dd00001111100ddd10001dd00dd00001000000ddd30001dd0000000010k000000330001dd0000000010000000031d00111111100111111111111",350); +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 = 0; +break; +}} +void del_level(char level[]) +{memcpy(level,"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",350);} \ No newline at end of file diff --git a/include/drawlevel.h b/include/drawlevel.h index 9554be8..e7683a6 100644 --- a/include/drawlevel.h +++ b/include/drawlevel.h @@ -1,3 +1,4 @@ void draw_level(char level[]); void draw_player(int x, int y); void draw_timer(unsigned int frame); +void draw_blackout(int x, int y); diff --git a/include/setlevel.h b/include/setlevel.h index 9c90fe2..2ac8cb2 100644 --- a/include/setlevel.h +++ b/include/setlevel.h @@ -1,2 +1,3 @@ void set_level(int id_level, char level[], int *startx, int *starty, char *gravity, char check_coin); void set_gravity(int id_level, char *default_gravity); +void del_level(char level[]); diff --git a/src/drawlevel.c b/src/drawlevel.c index e5254af..987ed74 100644 --- a/src/drawlevel.c +++ b/src/drawlevel.c @@ -3,6 +3,8 @@ #include #include "define.h" +#define VISIBLE_RECT 35 + extern bopti_image_t img_solid_0; //solid block extern bopti_image_t img_coin; //facultative coin extern bopti_image_t img_dead; //dead block @@ -10,6 +12,7 @@ extern bopti_image_t img_player; //player extern bopti_image_t img_end; //end of level extern bopti_image_t img_key1; //key 1 extern bopti_image_t img_keyblock; //block link to the key1 +extern bopti_image_t img_blackout; //key 1 void draw_player(int x, int y) { @@ -55,6 +58,9 @@ void draw_level(char level[]) case 'C': //chrono blocks dimage(x,y,&img_keyblock); break; + case 'b': //blackout blocks + dimage(x,y,&img_blackout); + break; } x+=16; if(x==16*25) @@ -66,6 +72,16 @@ void draw_level(char level[]) } } +void draw_blackout(int x, int y) +{ + x+=5; + y+=5; + drect(0, 0, 395, y-VISIBLE_RECT, C_BLACK); //top rect + drect(0, y-VISIBLE_RECT, x-VISIBLE_RECT, y+VISIBLE_RECT, C_BLACK); //left rect + drect(x+VISIBLE_RECT, y-VISIBLE_RECT, 395, y+VISIBLE_RECT, C_BLACK); //right rect + drect(0, y+VISIBLE_RECT, 395, 223, C_BLACK); //bottom rect +} + void draw_timer(unsigned int frame) { dprint_opt(0, 0, C_WHITE, C_BLACK, DTEXT_LEFT, DTEXT_TOP, "%u.%02u",(frame)/FPS, (frame)%FPS); diff --git a/src/main.c b/src/main.c index 08703c1..11f1f29 100644 --- a/src/main.c +++ b/src/main.c @@ -2,6 +2,7 @@ #include #include #include +#include #include "setlevel.h" #include "drawlevel.h" @@ -30,6 +31,7 @@ int main(void) char level[351]; char gravity = 0; //0 down 1 up char check = 0; + char blackout = 0; int id_level = 1; int start_x; int start_y; @@ -52,6 +54,7 @@ int main(void) frame++; framelevel++; draw_level(level); + if(blackout) draw_blackout(player_x, player_y); draw_player(player_x,player_y); draw_timer(frame); dprint(150,100,C_GREEN,"%d",player_x); @@ -127,6 +130,7 @@ int main(void) player_x = start_x; player_y = start_y; set_level(id_level, level, &start_x, &start_y, &gravity, check_coin); + blackout = 0; framelevel = 0; } if(collide_end(player_x, player_y, level, gravity)) @@ -136,6 +140,7 @@ int main(void) set_level(id_level, level, &start_x, &start_y, &gravity, check_coin); player_x = start_x; player_y = start_y; + blackout = 0; framelevel=0; } if(collide(player_x, player_y, level, gravity, 'k')) //Collide with key1 = disappearance of blocks @@ -167,6 +172,56 @@ int main(void) check_coin=1; coin++; } + if(collide(player_x, player_y, level, gravity, 'b')) //Collide with blackout block + { + for (int i = 0; level[i]!='\0' ; i++) + { + if(level[i]=='b') + { + level[i]='0'; + break; + } + } + blackout=1; + } + if(level[((player_x+6)/16)+((player_y+6)/16)*25] == 'l') //Collide with change block + { + int x = 0; + int y = 0; + char level2[351] = { 0 }; + int j = 0; + level[((player_x+6)/16)+((player_y+6)/16)*25] = 'P'; + for (int i = 349; i!=-1 ; i--) + { + level2[j]=level[i]; + j++; + } + del_level(level); + strncpy(level,level2,351); + del_level(level2); + int i = 0; + while (i!=350) + { + switch(level[i]) + { + case 'P': + player_x = x; + player_y = y; + level[i]='0'; + break; + } + x+=16; + if(x==16*25) + { + x=0; + y+=16; + } + i++; + } + if(!gravity) gravity=1; + else gravity=0; + } + if((framelevel/FPS)>13) for (int i = 0; level[i]!='\0' ; i++) if(level[i]=='c') level[i]='0'; //after 13 seconds blocks disappear if((framelevel/FPS)>10) for (int i = 0; level[i]!='\0' ; i++) if(level[i]=='m') level[i]='C'; //after 10 seconds blocks appear diff --git a/src/setlevel.c b/src/setlevel.c index 6f8c7b0..2432af2 100644 --- a/src/setlevel.c +++ b/src/setlevel.c @@ -1,59 +1,40 @@ #include "setlevel.h" #include - -void set_level(int id_level, char level[], int *startx, int *starty, char *gravity, char check_coin) -{ - switch(id_level) - { - case 1: - memcpy(level,"10001011111011111111111111000101dd10001111dddd11110000101dd100010000000000011111m1dd1aaa1000ccccddd110s00010013331000000000011dddd110010001000dd00000100000000010e01000dd00000011111100011111dddddddd1111k000000010000111001111111111111101000000000111111000010000100000000000000010K010000100011100000011110t0100001000111000ddd1111000101111101111111111111",350); - break; - case 2: - memcpy(level,"111001111111100d0d0011111100000111ddd000d0d0000001100000000000000dtd00000e1111111ddd111111111111111100000000000000000000d0000111111111dd111110100d000110001100000000010100d0001000011000000000d0d00d0000000000000000000d0d00d00001111dd111000000d0d00111111000011111ddd00d0d00111111000011111ddd00d0d001111110s0011111ddd00d0d0011111111001111111100d0d0011111",350); - break; - case 3: - memcpy(level,"11111111111001111111111111000111dddd000000000100013000111dddd00000000010003300000000dd11111000010e03100000000dd03a01000011111111110000dd03a01000000001100s1dd00ddt3a0100000000110001dd00dd1110100000000110001dd0Kdd00001ddd000ddd10001dd00dd00001111100ddd10001dd00dd00001000000ddd30001dd0000000010k000000330001dd0000000010000000031d00111111100111111111111",350); - 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 = 1; //0 down - 1 up - break; - case 2: - *default_gravity = 0; //0 down - 1 up - break; - case 3: - *default_gravity = 1; //0 down - 1 up - break; - } -} +void set_level(int id_level, char level[], int *startx, int *starty, char *gravity, char check_coin){ +switch(id_level){case 1: +memcpy(level,"1111111111111111111111111100000000000100001dt10001100000000000100001td10001100000000000100001dt10001100000000000000001111000110000ddd00000000000000001100000000000000000000d001100000000000000000000d0011110000000000000000111111101000000000000000000100110000000000000000000000011000000000001110000000001100s0000l0000b0000l000e011111111111111111111111111",350); +break; +case 2: +memcpy(level,"111001111111100d0d0011111100000111ddd000d0d0000001100000000000000dtd00000e1111111ddd111111111111111100000000000000000l00d0000111111111dd111110100d000110001100000000010100d0001000011000000000d0d00d000000000l000000000d0d00d00001111dd111000000d0d00111111000011111ddd00d0d00111111000011111ddd00d0d001111110s0011111ddd00d0d0011111111001111111100d0d0011111",350); +break; +case 3: +memcpy(level,"11111111111001111111111111000111dddd000000000100013000111dddd00000000010003300000000dd11111000010e03100000000dd03a01000011111111110000dd03a01000000001100s1dd00ddt3a0100000000110001dd00dd1110100000000110001dd0Kdd00001ddd000ddd10001dd00dd00001111100ddd10001dd00dd00001000000ddd30001dd0000000010k000000330001dd0000000010000000031d00111111100111111111111",350); +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 = 0; +break; +}} +void del_level(char level[]) +{memcpy(level,"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",350);}