Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Pacman en Panoramic Lun 26 Mar 2012 - 1:03 | |
| Suite du Vorace, le Pacman ... Début de l'éditeur de niveau (toujours la suite de ce qui était commencé dans le Vorace, mais bon, ce n'est plus l'évolution du Vorace qui est fini pour moi mais bien le début d'un Pac-man, cousin du vorace mais avec des règles légèrement différentes puisque le Pacman peut manger les fantômes s'il mange une Pacgomme ...) Autre différence liée, les fantômes partent d'une zone prédéfinie. Sinon dans ce jeu, il y aura des niveaux (d'où l'éditeur) Pour le moment la zone de départ des monstres est fixe Vous aurez besoin de l'image ci dessous: Voici le code de l'éditeur que je viens de continuer cette nuit: - Code:
-
LABEL Clic, Fin, Desgril, Desoc, Editeur2Clip, Clip2Editeur, Init_Niveau, Dessine LABEL Desactive_i, Active_i
DIM Objet%, i%, j% DIM Icone1%, P_Travail%, P_Icones%, Image%, Grille% DIM Prem_Ligne%, Nb_Lignes%, Nb_Colonnes% : Prem_Ligne%=7 : Nb_Lignes%=4 : Nb_Colonnes%=4 DIM Nb_C_niveau%,Nb_L_niveau%, PAS% : Nb_C_niveau% = 32 : Nb_L_niveau% = 20 : PAS%=20 DIM Niveau%, Niveaux%(Nb_L_niveau%,Nb_C_niveau%) : Niveau% = 1 : ' Init niveau par défaut = 1 DIM MaListe%, A_Niveau%, Selection%
COLOR 0,192,255,255: WIDTH 0,800: FONT_BOLD 0 Objet%=1 : Selection%=1 P_Travail% = Objet% : objet%=objet%+1 Picture P_Travail% : Hide P_Travail%: TOP P_Travail%, -2000: Height P_Travail%,(Prem_Ligne%+Nb_Lignes%-1)*Pas% Width P_Travail%,Nb_Colonnes%*PAS% : File_load P_Travail%,"spritesvoracenoir3.bmp" P_Icones% = objet%: PICTURE P_Icones%: : TOP P_Icones%, 20: LEFT P_Icones%,10 WIDTH P_Icones%, 4+(PAS%+4)*Nb_Colonnes%: HEIGHT P_Icones%, 4+(PAS%+4)*Nb_Lignes% : COLOR P_Icones%,152,225,225 2D_Target_is P_Icones% : objet%=objet%+1 Image%=objet% : objet%=objet%+1: Image Image% Icone1%=objet% : objet%=objet%+1 2D_Fill_color 0,0,0 FOR j%= (Prem_Ligne% - 1) TO (Prem_Ligne% + Nb_Lignes% - 2) FOR i% = 0 TO (Nb_Colonnes% - 1) Picture Objet% : LEFT Objet%,14+i%*(PAS%+4) : TOP Objet%, (j%-Prem_Ligne%+2)*(PAS%+4) : WIDTH Objet%, PAS% Height Objet%, PAS% : 2D_target_is objet% : On_click Objet%, Clic : 2D_Rectangle 0,0,PAS%,PAS% 2D_Target_Is P_Travail% : 2D_IMAGE_COPY Image%,i%*PAS%,j%*PAS%,(i%+1)*PAS%,(j%+1)*PAS% 2D_Target_Is Objet% : 2D_IMAGE_PASTE Image%,0, 0 : Objet%=Objet%+1 Next i% Next j%
PICTURE objet% :TOP objet%,140: LEFT objet%,0: WIDTH objet%,130: HEIGHT objet%,90 : COLOR objet%,152,225,225 2D_TARGET_IS objet% : objet%=objet%+1
ALPHA objet%: TOP objet%, 145: LEFT objet%, 2: WIDTH objet%, 124 : COLOR objet%,152,225,225 CAPTION objet%, "Import / Export:": objet%=objet%+1
BUTTON objet%: TOP objet%, 165: LEFT objet%, 2: WIDTH objet%, 124 CAPTION objet%, "CLIPBOARD>GRILLE": ON_CLICK objet%, Clip2Editeur: objet%=objet%+1
BUTTON objet%: TOP objet%, 195: LEFT objet%, 2: WIDTH objet%, 124 CAPTION objet%, "GRILLE>CLIPBOARD": ON_CLICK objet%, Editeur2Clip: objet%=objet%+1
ALPHA objet%: TOP objet%, 252: LEFT objet%, 10 : WIDTH objet%, 80: CAPTION objet%, "Niveau :": objet%=objet%+1 A_Niveau% = objet% : EDIT objet%: TOP objet%, 250: LEFT objet%, 82: WIDTH objet%, 30: objet%=objet%+1 Text A_Niveau%, STR$(Niveau%)
MaListe% = objet% : objet%=objet%+1
Grille% = Objet% : objet%=objet%+1 : Picture Grille% TOP Grille%,20: LEFT Grille%, 130: ON_CLICK Grille%, Desoc GOSUB Init_Niveau GOSUB Desgril FREE Objet% END
Desactive_i: if variable("temp1%")=1 then free temp1% if variable("temp2%")=1 then free temp2% if variable("temp3%")=1 then free temp3% DIM temp1%, temp2%, temp3% temp3%=Icone1%: temp3%=temp3%+1 FOR temp1%=1 TO Nb_L_niveau% FOR temp2%=1 TO Nb_C_niveau% OFF_Click temp3% NEXT temp2% NEXT temp1% FREE temp1%: FREE temp2%: FREE temp3% RETURN
Active_i: if variable("temp1%")=1 then free temp1% if variable("temp2%")=1 then free temp2% if variable("temp3%")=1 then free temp3% DIM temp1%, temp2%, temp3% temp3%=Icone1%: temp3%=temp3%+1 FOR temp1%=1 TO Nb_L_niveau% FOR temp2%=1 TO Nb_C_niveau% On_click temp3%, Clic NEXT temp2% NEXT temp1% FREE temp1%: FREE temp2%: FREE temp3% RETURN
Desgril: WIDTH Grille%, Nb_C_niveau% * pas% : HEIGHT Grille%, Nb_L_niveau% * pas% 2D_TARGET_IS Grille%: 2D_PEN_COLOR 128,128,128: 2D_RECTANGLE 0,0,WIDTH(Grille%),HEIGHT(Grille%) FOR j% = 0 TO HEIGHT(Grille%) STEP pas%: 2D_LINE 0,j%,WIDTH(Grille%),j% : NEXT j% FOR i% = 0 TO WIDTH(Grille%) STEP pas%: 2D_LINE i%,0,i%,HEIGHT(Grille%): NEXT i% 2D_PEN_COLOR 255,128,255: 2D_LINE 0,HEIGHT(Grille%)/2,WIDTH(Grille%),HEIGHT(Grille%)/2 2D_LINE WIDTH(Grille%)/2,0,WIDTH(Grille%)/2,HEIGHT(Grille%) GOSUB Dessine RETURN
Desoc: GOSUB Desactive_i: OFF_CLICK Grille% if variable("xcl%")=1 then free xcl% if variable("ycl%")=1 then free ycl% DIM xcl%, ycl% xcl% = INT(MOUSE_X_POSITION(Grille%)/pas%)+1: ycl% = INT(MOUSE_Y_POSITION(Grille%)/pas%)+1 Niveaux%(ycl%,xcl%)=Selection% GOSUB Desgril FREE xcl% : FREE ycl% GOSUB Active_i : ON_CLICK Grille%, Desoc RETURN
Init_niveau: for i%=1 to Nb_C_niveau% if i%=1 Niveaux%(1,i%) = 3 : Niveaux%(Nb_L_niveau%,i%) = 7 for j%= 2 to Nb_L_niveau% - 1 : Niveaux%(j%,i%) = 1 : next j% else if i%=Nb_C_niveau% Niveaux%(1,i%) = 4 : Niveaux%(Nb_L_niveau%,i%) = 8 for j%= 2 to Nb_L_niveau% - 1 : Niveaux%(j%,i%) = 1 : next j% else Niveaux%(1,i%) = 2 : Niveaux%(Nb_L_niveau%,i%) = 2 end_if end_if next i%
j% = int(Nb_L_niveau%/2)-1 : i%= int(Nb_C_niveau%/2) Niveaux%(j%,i%) = 13 : Niveaux%(j%,i%+1) = 13 : j%=j%+1 : i%=i%-2 Niveaux%(j%,i%) = 3 : Niveaux%(j%,i%+1) = 2 : Niveaux%(j%,i%+2) = 16 Niveaux%(j%,i%+3) = 16 : Niveaux%(j%,i%+4) = 2 : Niveaux%(j%,i%+5) = 4 : j%=j%+1 Niveaux%(j%,i%) = 1 : Niveaux%(j%,i%+1) = 13 : Niveaux%(j%,i%+2) = 13 Niveaux%(j%,i%+3) = 13 : Niveaux%(j%,i%+4) = 13 : Niveaux%(j%,i%+5) = 1 : j%=j%+1 Niveaux%(j%,i%) = 7 : Niveaux%(j%,i%+1) = 2 : Niveaux%(j%,i%+2) = 2 Niveaux%(j%,i%+3) = 2 : Niveaux%(j%,i%+4) = 2 : Niveaux%(j%,i%+5) = 8 : j%=j%+1
RETURN
Dessine: for j%=1 to Nb_L_niveau% for i%=1 to Nb_C_niveau% If Niveaux%(j%,i%) > 0 2D_Target_Is Icone1%+Niveaux%(j%,i%) : 2D_IMAGE_COPY Image%,0,0,pas%,pas% 2D_Target_Is Grille%: 2D_IMAGE_PASTE Image%, (i%-1)*pas%,(j%-1)*pas% End_if next i% next j% RETURN
Clic: OFF_CLICK Grille%: GOSUB Desactive_i if variable("Ligne%")=1 then free Ligne% if variable("Colonne%")=1 then free Colonne% DIM Ligne%, Colonne% 2D_Target_is P_Icones% i%=int((Selection%-1) / Nb_Colonnes%) : j%=mod(Selection%-1,Nb_Colonnes%) 2D_PEN_COLOR 255,255,255: 2D_RECTANGLE 2+j%*(pas%+4), 2+i%*(pas%+4),26+j%*(pas%+4), 26+i%*(pas%+4) wait 1 Selection% = Icone1% FOR ligne%= 1 TO Nb_Lignes% FOR Colonne% = 1 TO Nb_Colonnes% Selection% = Selection% + 1 if Selection% > Nb_Lignes%*Nb_Colonnes%+Icone1%+1 Then Selection%= Nb_Lignes%*Nb_Colonnes%+Icone1%+1 IF CLICKED(Selection%) = 1 Colonne% = Nb_Colonnes% : Ligne%= Nb_Lignes% END_IF Next Colonne% Next ligne% Selection% = Selection% - Icone1% i%=int((Selection%-1) / Nb_Colonnes%) : j%=mod(Selection%-1,Nb_Colonnes%) 2D_PEN_COLOR 255,0,0: 2D_RECTANGLE 2+j%*(pas%+4), 2+i%*(pas%+4),26+j%*(pas%+4), 26+i%*(pas%+4) Free Ligne%: Free Colonne% ON_CLICK Grille%, Desoc : GOSUB Active_i Return
Editeur2Clip: if variable("a$") = 1 then free a$ Dim a$ a$ = TEXT$(A_Niveau%) IF a$ = "" MESSAGE "Pas de niveau renseigné !": RETURN END_IF a$ = "L"+right$("00"+a$,2) a$ = "DATA "+CHR$(34)+a$+CHR$(34) a$=a$ + ","+CHR$(34)+STR$(Nb_C_niveau%)+"x"+STR$(Nb_L_niveau%)+CHR$(34)+CHR$(13)+CHR$(10) a$=a$ + "DATA " + CHR$(34) FOR j% = 1 TO Nb_L_niveau% FOR i% = 1 TO Nb_C_niveau% a$ = a$ + RIGHT$("00"+STR$(Niveaux%(j%,i%)),2) NEXT i% a$ = a$ + CHR$(34) + CHR$(13) + CHR$(10) + "DATA " + CHR$(34) NEXT j% a$ = LEFT$(a$, LEN(a$)-8) CLIPBOARD_STRING_COPY a$ FREE a$ RETURN
Clip2Editeur: if variable("a$") = 1 then free a$ Dim a$ DIM kic : ' kic: position de la virgule DIM dti$ : ' dti$: Ligne traitée a$ = CLIPBOARD_STRING_PASTE$ i% = 0 : j% = 0 WHILE i%=0 and j%=0 IF LEN(a$) < 20 then j% = 1 : ' Un niveau fait forcément plus de 20 caractères !! IF LEFT$(a$, 5) <> "DATA " a$=Right$(a$, len(a$)-1) : ' Bon, on peut supposer un problème d'espaces, essayons de voir... ELSE IF MID$(a$,7,1)="L" THEN i%=1 : ' A PRIORI, les données semblent correctes END_IF END_WHILE IF j%=1 THEN MESSAGE "Le presse-papier ne contient pas de DATAs corrects !": RETURN FILE_OPEN_WRITE 1, "C:\Temp\tmp": FILE_WRITELN 1, a$: FILE_CLOSE 1 DLIST MaListe%: FILE_LOAD MaListe%, "C:\Temp\tmp": FILE_DELETE "C:\Temp\tmp" dti$ = ITEM_READ$(MaListe%, 1): dti$ = MID$(dti$, 6, 100) : ' On traite jusqu'à 100 caractères après DATA !! kic = INSTR(dti$, ",") TEXT A_Niveau%, MID$(dti$, kic-3,2): dti$ = MID$(dti$,kic+2,100) dti$ = LEFT$(dti$, LEN(dti$)) kic = INSTR(dti$, "x") Nb_C_niveau%=VAL(LEFT$(dti$,kic-1)) : Nb_L_niveau%=VAL(MID$(dti$,kic+1,10))
FOR j% = 1 TO Nb_L_niveau% dti$ = ITEM_READ$(MaListe%, 1+j%): dti$ = MID$(dti$, 6, 100) : ' On traite jusqu'à 100 caractères après DATA !! FOR i% = 1 TO Nb_C_niveau% Niveaux%(j%,i%)=VAL(LEFT$(dti$,2)) dti$=mid$(dti$,3,100) NEXT i% NEXT j%
DELETE MaListe% FREE kic: FREE dti$ : FREE a$ gosub desgril RETURN
Fin: Terminate | |
|