FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» item_index(résolu)
Puzzle Emptypar jjn4 Hier à 19:38

» Gestion d'un système client-serveur.
Puzzle Emptypar Klaus Lun 13 Mai 2024 - 17:01

» Bataille terrestre
Puzzle Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
Puzzle Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Puzzle Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
Puzzle Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Puzzle Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Puzzle Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Puzzle Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Puzzle Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Puzzle Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Puzzle Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
Puzzle Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Puzzle Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
Puzzle Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment : -29%
PC portable – MEDION 15,6″ FHD Intel i7 ...
Voir le deal
499.99 €

 

 Puzzle

Aller en bas 
3 participants
AuteurMessage
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Puzzle Empty
MessageSujet: Puzzle   Puzzle EmptyVen 4 Nov 2011 - 17:05

Un petit jeu sans prétention: une image découpée en morceaux qu'il faut reconstituer (tiens donc, comme tous les puzzles Very Happy )
Le programme part d'une image jpg ou bmp (ou autre...) de proportion 4:3 qui sera redimensionnée provisoirement. Si elle n'est pas dans cette proportion (4:3, format en général des apn) elle se retrouvera déformée...
C'est une application des fonctions 2D_IMAGE_COPY et 2D_IMAGE_PASTE.
Voir l'Aide pour l'utilisation.
Code:

' Puzzle.bas
DIM nc, nr, c, r, lc, hr, w0, h0, wp, hp, f$, ft$, fm$, iv$, i, j, at, tp, a$
DIM x, y, xp(20,20), yp(20,20), oc2(20,20), oc3(20,20), cr$, nf$, orig, xpo, ypo
DIM ro(3), co(3)
LABEL Quit, Chimg, Vimg, Generat, rbk, clic2, clic3, Aide

iv$ = "C:\Progra~2\Irfanv~1\i_view32.exe ": ' ****** A VOIR *********
ft$ = "C:\Temp\Puzzle.jpg"
fm$ = "C:\Temp\infoimg.tmp"

w0 = 680: h0 = SCREEN_Y-40
hp = INT((h0-140)/2)
wp = INT(4*hp/3)
w0 = wp+30

WIDTH 0, w0: HEIGHT 0, h0: COLOR 0, 0,255,255: CAPTION 0, " - PUZZLE -"
PICTURE 1: TOP 1, -2000: WIDTH 1, wp: HEIGHT 1, hp
PICTURE 2: TOP 2, 20: LEFT 2, 10: WIDTH 2, wp: HEIGHT 2, hp
ON_CLICK 2, clic2
PICTURE 3: TOP 3, hp+50: LEFT 3, 10: WIDTH 3, wp: HEIGHT 3, hp
ON_CLICK 3, clic3
IMAGE 4
IMAGE 5

tp = 2*hp+60
BUTTON 10: TOP 10, tp: LEFT 10, 10: WIDTH 10, 70: CAPTION 10, "Image"
ON_CLICK 10, Chimg
BUTTON 11: TOP 11, tp: LEFT 11, 85: WIDTH 11, 40: CAPTION 11, "Voir"
ON_CLICK 11, Vimg
ALPHA 12: TOP 12, tp+2: LEFT 12, 130: CAPTION 12, "Colonnes:"
SPIN 13: TOP 13, tp: LEFT 13, 195: WIDTH 13, 40
ALPHA 14: TOP 14, tp+2: LEFT 14, 240: CAPTION 14, "Rangées:"
SPIN 15: TOP 15, tp: LEFT 15, 305: WIDTH 15, 40
MIN 13, 2: MAX 13, 20: POSITION 13, 4: MIN 15, 2: MAX 15, 20: POSITION 15, 3
BUTTON 16: TOP 16, tp: LEFT 16, 355: WIDTH 16, 40: CAPTION 16, "Go !"
ON_CLICK 16, Generat
BUTTON 17: TOP 17, tp: LEFT 17, 400: WIDTH 17, 60: CAPTION 17, "Aide": ON_CLICK 17, Aide
BUTTON 18: TOP 18, tp: LEFT 18, wp-65: WIDTH 18, 70: CAPTION 18, "Quitter": ON_CLICK 18, Quit

PRINT_TARGET_IS 0: FONT_SIZE 0, 10: FONT_BOLD 0
PRINT_LOCATE 240,2: PRINT "Clic une case source:"
PRINT_LOCATE 240,hp+28: PRINT "Clic une case arrivée:"

FORM 50: TOP 50, hp+50: LEFT 50, wp+20: WIDTH 50, wp+20: HEIGHT 50, hp+50: HIDE 50
PICTURE 51: PARENT 51, 50: WIDTH 51, wp: HEIGHT 51, hp

OPEN_DIALOG 30
END
' ============================== SOUS-PROGRAMMES ==============================
Quit:
IF FILE_EXISTS(ft$) = 1 THEN FILE_DELETE ft$
IF FILE_EXISTS(fm$) = 1 THEN FILE_DELETE fm$
TERMINATE

Chimg:
f$ = FILE_NAME$(30)
IF LEN(f$) < 3 THEN RETURN
nf$ = f$
EXECUTE_WAIT iv$ + f$ + " /info=" + fm$
FILE_OPEN_READ 1, fm$
WHILE FILE_EOF(1) = 0
    FILE_READLN 1, a$
    IF LEFT$(a$, 16) = "Image dimensions"
        a$ = MID$(a$, 20, 50): i = INSTR(a$, " ")
        c = VAL(LEFT$(a$, i-1)): a$ = MID$(a$, i+3, 50)
        i = INSTR(a$, " "): r = VAL(LEFT$(a$, i-1))
        IF c <> wp OR r <> hp
            EXECUTE_WAIT iv$+f$+" /resize=("+STR$(wp)+","+STR$(hp)+") /convert="+ft$
            f$ = ft$
        END_IF
        EXIT_WHILE
    END_IF
END_WHILE
FILE_CLOSE 1: FILE_DELETE fm$
GOSUB Generat
RETURN

Vimg:
IF LEN(f$) < 3 THEN RETURN
SHOW 50: FILE_LOAD 51, f$
CAPTION 50, nf$
RETURN

Generat:
IF LEN(f$) < 3 THEN RETURN
FILE_LOAD 1, f$
nc = POSITION(13): nr = POSITION(15)
lc = INT(wp/nc): hr = INT(hp/nr)
FOR r = 0 TO nr-1
    FOR c = 0 TO nc-1
        xp(r,c) = lc*c: yp(r,c) = hr*r
        2D_TARGET_IS 2: 2D_PEN_COLOR 255,255,0
        2D_RECTANGLE xp(r,c),yp(r,c),xp(r,c)+lc, yp(r,c)+hr
        2D_TARGET_IS 3: 2D_PEN_COLOR 255,255,0
        2D_RECTANGLE xp(r,c),yp(r,c),xp(r,c)+lc, yp(r,c)+hr
        oc2(r,c) = 0
    NEXT c
NEXT r
2D_TARGET_IS 1
FOR r = 0 TO nr-1
    FOR c = 0 TO nc-1
        2D_TARGET_IS 1: 2D_IMAGE_COPY 4, xp(r,c), yp(r,c), xp(r,c)+lc-1, yp(r,c)+hr-1
rbk:
        j = INT(RND(nr)): i = INT(RND(nc))
        IF oc2(j,i) = 1 THEN GOTO rbk
        oc2(j,i) = 1: oc3(j,i) = 0
        2D_TARGET_IS 2: 2D_IMAGE_PASTE 4, xp(j,i), yp(j,i)
    NEXT c
NEXT r
RETURN

clic2:
x = MOUSE_X_POSITION(2): y = MOUSE_Y_POSITION(2)
c = INT(x/lc): r = INT(y/hr)
IF oc2(r,c) = 0 OR at = 1 THEN at = 0: RETURN
2D_TARGET_IS 2: xpo = xp(r,c): ypo = yp(r,c)
2D_IMAGE_COPY 4, xpo, ypo, xpo+lc-1, ypo+hr-1
orig = 2: ro(2) = r: co(2) = c: at = 1
RETURN

clic3:
x = MOUSE_X_POSITION(3): y = MOUSE_Y_POSITION(3)
c = INT(x/lc): r = INT(y/hr)
2D_TARGET_IS 3
IF at = 1
    IF oc3(r,c) = 1: ' case destinataire déjà occupée
        IF orig = 3
            ' c'est une permutation
            2D_IMAGE_COPY 5, xp(r,c), yp(r,c), xp(r,c)+lc-1, yp(r,c)+hr-1
            2D_IMAGE_PASTE 4, xp(r,c), yp(r,c)
            2D_IMAGE_PASTE 5, xpo, ypo
        END_IF
        at = 0: RETURN
    END_IF
    2D_IMAGE_PASTE 4, xp(r,c), yp(r,c): oc3(r,c) = 1
    ' effacement image d'origine
    IF orig = 2
        oc2(ro(2),co(2)) = 0
    ELSE
        oc3(ro(3),co(3)) = 0
    END_IF
    2D_TARGET_IS orig: 2D_RECTANGLE xpo,ypo,xpo+lc, ypo+hr
    at = 0
ELSE
    IF oc3(r,c) = 0 THEN RETURN
    xpo = xp(r,c): ypo = yp(r,c)
    2D_IMAGE_COPY 4, xpo, ypo, xpo+lc-1, ypo+hr-1
    orig = 3: ro(3) = r: co(3) = c: at = 1
END_IF
RETURN
   
Aide:
cr$ = CHR$(13)+CHR$(10)
a$ = " - PUZZLE -" + cr$ + cr$
a$=a$+" - Choisir une image (bouton 'Image'). Une image temporaire est créée"+cr$
a$=a$+"    aux dimensions des fenêtres du jeu."+cr$+cr$
a$=a$+" -  Choisir le nombre de colonnes et de rangées pour le découpage."+cr$+cr$
a$=a$+" - Puis clic 'Go !': génération de manière aléatoire d'un puzzle de l'image"+cr$
a$=a$+"    dans la fenêtre supérieure."+cr$+cr$
a$=a$+" Le jeu consiste à reconstituer l'image dans la fenêtre inférieure:"+cr$
a$=a$+"    cliquer une case du haut, puis cliquer sur son emplacement présumé en bas,"+cr$
a$=a$+"    (une case libre), la portion d'image y est transférée."+cr$
a$=a$+" On peut également cliquer sur une case du bas déjà placée, puis cliquer soit"+cr$
a$=a$+" sur un autre emplacement libre pour rectifier une position, soit sur une" + cr$
a$=a$+" autre case déjà occupée, pour permuter les images."+cr$+cr$
a$=a$+" On peut à tout moment avoir un aperçu de l'image finale en cliquant sur 'Voir'."+cr$
MESSAGE a$
RETURN

PS j'ai un peu réduit les dimensions des images (de 640x480 à 560x420), je me suis aperçu que ça ne tenait pas forcément sur tous les écrans...

PS2 Les dimensions des images sont maintenant fonction de la définition de l'écran (remarque judicieuse de Nardo)

PS3 les éléments d'image du haut sont effacés au fur et à mesure de leur utilisation en bas.

PS4 (5/11) possibilité de permuter deux pièces déjà placées.


Dernière édition par JL35 le Sam 5 Nov 2011 - 16:40, édité 7 fois
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Puzzle Empty
MessageSujet: Re: Puzzle   Puzzle EmptyVen 4 Nov 2011 - 17:45

La vache !
T'as un grand écran JL35 !
Sur mon portable je n'arrive pas à afficher la totalité du formulaire...
J'ai pas encore regardé dans le détail mais Irfanview est obligatoire ?
EDIT : Oups on s'est croisé non ? Wink
tu peux pas le mettre dans la largeur ?
format 16/9 ?
ou utiliser screen_x et screen_y (et trouver une taille standard en puissance de 2?)


Dernière édition par Nardo26 le Ven 4 Nov 2011 - 17:49, édité 1 fois
Revenir en haut Aller en bas
http://nardo26.lescigales.org
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Puzzle Empty
MessageSujet: Re: Puzzle   Puzzle EmptyVen 4 Nov 2011 - 17:47

Ben oui (1920x1200 Very Happy ), d'ailleurs je viens d'éditer et de réduire les dimensions des images, pour toi !
Et en effet, Irfanview ne sert qu'à ça, redimensionner l'image d'origine, je ne sais pas faire autrement...

Remarque n'importe quel programme de redimensionnement d'image conviendrait, mais je ne sais pas faire en Panoramic pur.

Edit j'y ai pensé, mettre les images côte à côte... ça va se faire...
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Puzzle Empty
MessageSujet: Re: Puzzle   Puzzle EmptyVen 4 Nov 2011 - 18:07

petit problème ligne 71 :

il faut rajouter un espace entre iv$ et f$ :
EXECUTE_WAIT iv$ +" "+ f$ + " /info=" + fm$
Revenir en haut Aller en bas
http://nardo26.lescigales.org
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Puzzle Empty
MessageSujet: Re: Puzzle   Puzzle EmptyVen 4 Nov 2011 - 18:10

Eh non mon ami !
L'espace est déjà dans la variable iv$ !!! Very Happy

Bon, je rectifie ci-dessus pour que ça tienne dans tous les écrans.
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Puzzle Empty
MessageSujet: Re: Puzzle   Puzzle EmptyVen 4 Nov 2011 - 18:13

Ben perso, j'ai été obligé de rajouter les espaces pour que cela fonctionne...
bizarre... scratch
EDIT : J'ai trouvé pourquoi :
j'ai modifier légèrement le début du prog
Code:

DLL_ON "Utils.dll"
DIM Dll_return

iv$ = "C:\Program Files (x86)\IrfanView\i_view32.exe"
Dll_return = DLL_CALL2("GetShortName",ADR(iv$),LEN(iv$))
iv$=TRIM$(iv$)
et donc je n'avais plus l'espace à la fin de iv$....
Revenir en haut Aller en bas
http://nardo26.lescigales.org
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Puzzle Empty
MessageSujet: Re: Puzzle   Puzzle EmptyVen 4 Nov 2011 - 18:20

Ah ben oui, si tu introduis des erreurs, alors...
Je ne comprends pas trop cette complication d'introduire une dll alors qu'on a l'Execute ?
Edit, pardon Nardo, c'est pour avoir le nom court, j'avais pô vu...
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Puzzle Empty
MessageSujet: Re: Puzzle   Puzzle EmptyVen 4 Nov 2011 - 18:26

Un peu statique, il manque du mouvement...
mais pas mal ! Wink
Revenir en haut Aller en bas
http://nardo26.lescigales.org
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Puzzle Empty
MessageSujet: Re: Puzzle   Puzzle EmptyVen 4 Nov 2011 - 18:30

J'aurais pu aussi découper les pièces comme dans un vrai puzzle...
Je ne sais pas faire le glisser/déposer d'un élément graphique en Panoramic... ça aurait été plus joli, évidemment.

J'ai ajouté quelque chose de plus logique: l'effacement des pièces du haut au fur et à mesure de leur utilisation en bas, c'est plus clair, on ne peut pas utiliser deux fois la même pièce.
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Puzzle Empty
MessageSujet: Re: Puzzle   Puzzle EmptyVen 4 Nov 2011 - 23:54

Il est super ce programme Smile Juste une petite remarque a moins que j'aille raté un élément, il y a quelques petites améliorations qui pourraient encore être apportées:
- Si on place mal la dernière pièce, on ne peut plus permuter 2 pièces en bas
- Peut-être afficher un message quand toutes les pièces sont correctement placée pour féliciter le gagnant et demander si l'on veut arrêter ou recommencer
- Éventuellement un bouton test qui affiche les pièces mal placées (moins utile si l'on peut permuter les vignettes placées même quand elles sont toutes mises et si l'on a le message disant que tout est correct)
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Puzzle Empty
MessageSujet: Re: Puzzle   Puzzle EmptySam 5 Nov 2011 - 1:52

Un truc que tu pourrais éventuellement rajouter:
un score en fonction du nombre de pièces et du temps passé pour compléter le puzzle
et ce sera parfait !
La partie graphique n'est pas trop mon domaine mais pour le mouvement, on ne peut pas utiliser des sprites ?
scratch
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Puzzle Empty
MessageSujet: Re: Puzzle   Puzzle EmptySam 5 Nov 2011 - 10:18

si on peut Smile =>Crééer un sprite et le masquer, clic sur image => charge l'image dans le sprite et l'affiche sur l'image, le sprite suit ensuite les coordonnées de la souris jusqu'au prochain clic ou on copie l'image dans sa destination et l'on masque le sprite qui n'a servit qu'à faire beau et se souvenir que l'on a une pièce en atente d'être déposée ...
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Puzzle Empty
MessageSujet: Re: Puzzle   Puzzle EmptySam 5 Nov 2011 - 14:17

Je tourne le dos 5 minutes et me voilà avec tout un cahier des charges...
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Puzzle Empty
MessageSujet: Re: Puzzle   Puzzle EmptySam 5 Nov 2011 - 14:43

^^ Tu sais bien que pour les idées, tu peux compter sur nous. Après c'est comme pour Jack, tu pioches dedans ce que tu veux Smile
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Puzzle Empty
MessageSujet: Re: Puzzle   Puzzle EmptySam 5 Nov 2011 - 15:37

Suite à ta remarque judicieuse, j'ai ajouté la possibilité de permuter deux pièces déjà placées, ça me paraît en effet indispensable, sinon on est coincé en cas d'erreur.

Pour le reste (genre Tagada! à la fin si c'est bon, etc., ça attendra ! Very Happy )
1) ce n'est pas forcément très simple de vérifier que tout est bien en place.
2) le joueur peut bien le faire lui-même en comparant à l'image source (bouton 'Voir')

Pour rejouer, il suffit de cliquer sur 'Image', de choisir une autre image (ou la même), et c'est reparti.

@Nardo, pareil, pour compter le temps il faudrait en permanence (à chaque mouvement) vérifier que tout est bien en place pour arrêter le compteur quand c'est bon...
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Puzzle Empty
MessageSujet: Re: Puzzle   Puzzle EmptySam 5 Nov 2011 - 16:47

Belle de nuit 35 renâcle à avancer ? Puzzle 45
Revenir en haut Aller en bas
http://nardo26.lescigales.org
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Puzzle Empty
MessageSujet: Re: Puzzle   Puzzle EmptySam 5 Nov 2011 - 16:52

Un peu mon neveu, je freine des quatre fers !
Je n'ai pas envie de me laisser entraîner dans une usine à gaz, alors que c'était une idée toute simplette au départ !

Quand même, belle de nuit, tu exagères (à peine).
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Puzzle Empty
MessageSujet: Re: Puzzle   Puzzle EmptySam 5 Nov 2011 - 16:58

Bon c'est toi qui voit...


PS : et que dire de "Reine de saba 26" ?
Puzzle Reine2Saba
Revenir en haut Aller en bas
http://nardo26.lescigales.org
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Puzzle Empty
MessageSujet: Re: Puzzle   Puzzle EmptySam 5 Nov 2011 - 17:07

quand même, j'aime mieux l'autre !
Revenir en haut Aller en bas
Contenu sponsorisé





Puzzle Empty
MessageSujet: Re: Puzzle   Puzzle Empty

Revenir en haut Aller en bas
 
Puzzle
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Puzzle 2
» Jeu Puzzle
» Scrabble puzzle
» Construire et résoudre un puzzle
» Résoudre un puzzle créé par Puzzeliser

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: