FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Dessin 2D: largeur de trait
par papydall Hier à 23:31

» Projet de planétarium virtuel.
par Jean Claude Hier à 21:59

» PanExpress : l'éditeur Panoramic avec création d'objet
par Jean Claude Hier à 20:32

» Animation: Feux de signalisation
par Minibug Hier à 20:28

» Quantité de mémoire utilisée par un exe
par Jack Mar 19 Juin 2018 - 16:39

» Problème avec 'file_load'.
par Pedro Alvarez Lun 18 Juin 2018 - 8:12

» Version instantanée V 0.9.28i20 du 13/06/2018
par jjn4 Sam 16 Juin 2018 - 14:25

» string$(0,chr$(32)) sans erreur
par silverman Ven 15 Juin 2018 - 19:56

» Version instantanée V 0.9.28i19 du 13/06/2018
par Minibug Ven 15 Juin 2018 - 19:14

» Mes souhaits d'amélioration de Panoramic.
par Pedro Alvarez Jeu 14 Juin 2018 - 20:17

» [RÉSOLU] Message d'erreur impossible à indentifier
par Minibug Mer 13 Juin 2018 - 20:52

» Cadre pour image
par Jean Claude Mar 12 Juin 2018 - 16:31

» Créateur d'objets Panoramic
par Minibug Mar 12 Juin 2018 - 14:02

» Planétarium gratuit.
par Jean Claude Sam 9 Juin 2018 - 18:50

» Comment afficher une image sans fond.
par JL35 Sam 9 Juin 2018 - 14:16

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Juin 2018
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier

Partagez | 
 

 Pacman en Panoramic

Aller en bas 
AuteurMessage
Jicehel

avatar

Nombre de messages : 5923
Age : 45
Localisation : 77500
Date d'inscription : 18/04/2011

MessageSujet: 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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5923
Age : 45
Localisation : 77500
Date d'inscription : 18/04/2011

MessageSujet: Re: Pacman en Panoramic   Mar 27 Mar 2012 - 0:41

Connexion internet de nouveau pourrie chez moi, mais bon, j'ai corrigé quelques petits trucs dans mon programme d'édition de niveaux.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5487
Age : 64
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Pacman en Panoramic   Mar 27 Mar 2012 - 9:34

Salut Jicehel,

J'ai tester la mémorisation de la grille et çà marche.

Concernant la connexion internet, je constate comme toi qu'en ce moment c'est pas de la tarte.

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5923
Age : 45
Localisation : 77500
Date d'inscription : 18/04/2011

MessageSujet: Re: Pacman en Panoramic   Mar 27 Mar 2012 - 15:37

Merci Jean-Claude. L'éditeur me convient dans l'état, mais on pourra sans doute ajouter des options plus tard, mais pour le démarrage du Pac man, on pourra faire de jolis niveaux Smile

Je vais essayé de m'y mettre à partir de maintenant.

Pour que les niveaux soient plus beaux, je ferais sans doute des images de tiles jaunes, bleues, vert, ... ou un système pour lés générer dans toutes les couleurs au lieu d'utiliser une image de sorte d'avoir des niveaux moins monotones.

Sinon, les fantomes sortiront de leur "générateur" et pourront se faire manger si on a pris un Pacgomme.

La sortie par le haut (si pas de mur) fera réapparaitre en bas. La sortie en bas => apparait en haut, sortie à gauche => apparait à droite et réciproquement.

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Pacman en Panoramic   

Revenir en haut Aller en bas
 
Pacman en Panoramic
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» EDI réalisé entièrement en Panoramic
» EDI réalisé entièrement en Panoramic
» pas un panoramic mais utilitaires delphi.
» Programmes Panoramic en ligne de commande
» lol, panoramic dans google ;)

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Les jeux faits avec Panoramic-
Sauter vers: