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
» StratégoV8 et V9
par Minibug Aujourd'hui à 1:10

» Rotation d'une image d'un angle quelconque
par JL35 Hier à 23:02

» GRID_LOAD
par Jean Claude Hier à 21:04

» HVIEWER
par Yannick Hier à 20:31

» KGF_dll - nouvelles versions
par Klaus Mar 16 Jan 2018 - 21:28

» Déformation d'image en trapèze
par mindstorm Mar 16 Jan 2018 - 21:06

» Mah-Jong américain
par Jean Claude Lun 15 Jan 2018 - 19:37

» Problème avec Deepl
par Klaus Lun 15 Jan 2018 - 0:34

» Quelques nouvelles ...
par Jean Claude Ven 12 Jan 2018 - 22:40

» Renommer les instructions ITEM_... ?
par Jicehel Ven 12 Jan 2018 - 18:56

» Ludothèque Panoramic
par jjn4 Ven 12 Jan 2018 - 18:11

» sous-programmes et fonctions
par Jack Ven 12 Jan 2018 - 17:51

» Mah-Jong français
par Jean Claude Jeu 11 Jan 2018 - 22:15

» panoramic 0.9.28
par gigi75 Ven 5 Jan 2018 - 14:06

» Un jeu qui va vous énerver!
par Jean Claude Jeu 4 Jan 2018 - 22:05

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Janvier 2018
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
293031    
CalendrierCalendrier

Partagez | 
 

 Pacman en Panoramic

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Jicehel

avatar

Nombre de messages : 5876
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Pacman en Panoramic   Lun 26 Mar 2012 - 2: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 : 5876
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Pacman en Panoramic   Mar 27 Mar 2012 - 1: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 : 5130
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Pacman en Panoramic   Mar 27 Mar 2012 - 10: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 : 5876
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Pacman en Panoramic   Mar 27 Mar 2012 - 16: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
Voir le sujet précédent Voir le sujet suivant 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: