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
» Biomorphe de Pickover
par Jack Aujourd'hui à 7:17

» Planétarium virtuel.
par Jack Aujourd'hui à 6:50

» PanExpress : l'éditeur Panoramic avec création d'objet
par Minibug Aujourd'hui à 0:59

» Virus/Antivirus
par JL35 Hier à 21:11

» Calculatrice
par papydall Ven 21 Sep 2018 - 22:45

» Orbites de l’ensemble de Mandelbrot
par Minibug Ven 21 Sep 2018 - 21:32

» Demande pour Jack concernant PanExpress
par Minibug Ven 21 Sep 2018 - 11:04

» EPP_V01 éditeur pour Panoramic
par Minibug Mer 19 Sep 2018 - 21:03

» [RESOLU] Quelle ligne est sélectionnée dans SYNEDIT ?
par Jean Claude Mer 19 Sep 2018 - 21:02

» Petit coucou en passant !
par Minibug Dim 16 Sep 2018 - 15:03

» bug SEVERE fnc+sub : variables globales corrompus
par silverman Dim 16 Sep 2018 - 13:38

» Verrouiller un form en avant plan
par silverman Dim 16 Sep 2018 - 12:50

» Fin de l'aventure.
par Pedro Alvarez Sam 15 Sep 2018 - 18:16

» Demande d'explications Sur File_Write & File_writeln
par Jack Sam 15 Sep 2018 - 17:26

» MEMO avec des possibilités de commande
par Oscaribout Mer 12 Sep 2018 - 1:06

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Septembre 2018
LunMarMerJeuVenSamDim
     12
3456789
10111213141516
17181920212223
24252627282930
CalendrierCalendrier

Partagez | 
 

 Pacman en Panoramic

Aller en bas 
AuteurMessage
Jicehel

avatar

Nombre de messages : 5929
Age : 46
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 : 5929
Age : 46
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 : 5648
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 : 5929
Age : 46
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
» pas un panoramic mais utilitaires delphi.
» Programmes Panoramic en ligne de commande
» lol, panoramic dans google ;)
» Où télécharger panoramic IDE

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: