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 | 
 

 Puzzle

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



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

MessageSujet: Puzzle   Ven 4 Nov 2011 - 19: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 - 18:40, édité 7 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Nardo26

avatar

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

MessageSujet: Re: Puzzle   Ven 4 Nov 2011 - 19: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 - 19:49, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
JL35



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

MessageSujet: Re: Puzzle   Ven 4 Nov 2011 - 19: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
Voir le profil de l'utilisateur
Nardo26

avatar

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

MessageSujet: Re: Puzzle   Ven 4 Nov 2011 - 20: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
Voir le profil de l'utilisateur http://nardo26.lescigales.org
JL35



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

MessageSujet: Re: Puzzle   Ven 4 Nov 2011 - 20: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
Voir le profil de l'utilisateur
Nardo26

avatar

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

MessageSujet: Re: Puzzle   Ven 4 Nov 2011 - 20: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
Voir le profil de l'utilisateur http://nardo26.lescigales.org
JL35



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

MessageSujet: Re: Puzzle   Ven 4 Nov 2011 - 20: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
Voir le profil de l'utilisateur
Nardo26

avatar

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

MessageSujet: Re: Puzzle   Ven 4 Nov 2011 - 20:26

Un peu statique, il manque du mouvement...
mais pas mal ! Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
JL35



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

MessageSujet: Re: Puzzle   Ven 4 Nov 2011 - 20: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
Voir le profil de l'utilisateur
Jicehel

avatar

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

MessageSujet: Re: Puzzle   Sam 5 Nov 2011 - 1: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
Voir le profil de l'utilisateur
Nardo26

avatar

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

MessageSujet: Re: Puzzle   Sam 5 Nov 2011 - 3: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
Voir le profil de l'utilisateur http://nardo26.lescigales.org
Jicehel

avatar

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

MessageSujet: Re: Puzzle   Sam 5 Nov 2011 - 12: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
Voir le profil de l'utilisateur
JL35



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

MessageSujet: Re: Puzzle   Sam 5 Nov 2011 - 16:17

Je tourne le dos 5 minutes et me voilà avec tout un cahier des charges...
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: Puzzle   Sam 5 Nov 2011 - 16: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
Voir le profil de l'utilisateur
JL35



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

MessageSujet: Re: Puzzle   Sam 5 Nov 2011 - 17: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
Voir le profil de l'utilisateur
Nardo26

avatar

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

MessageSujet: Re: Puzzle   Sam 5 Nov 2011 - 18:47

Belle de nuit 35 renâcle à avancer ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
JL35



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

MessageSujet: Re: Puzzle   Sam 5 Nov 2011 - 18: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
Voir le profil de l'utilisateur
Nardo26

avatar

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

MessageSujet: Re: Puzzle   Sam 5 Nov 2011 - 18:58

Bon c'est toi qui voit...


PS : et que dire de "Reine de saba 26" ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
JL35



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

MessageSujet: Re: Puzzle   Sam 5 Nov 2011 - 19:07

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




MessageSujet: Re: Puzzle   

Revenir en haut Aller en bas
 
Puzzle
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [résolu ]puzzle
» Scrabble puzzle
» (Resolu] Découpage puzzle
» N° 19 PFS " Effet Puzzle "
» Puzzle animé

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: