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
» Logiciel de planétarium.
Source pour faire les Undos successifs sur une map Emptypar Pedro Aujourd'hui à 8:08

» Un autre pense-bête...
Source pour faire les Undos successifs sur une map Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Source pour faire les Undos successifs sur une map Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Source pour faire les Undos successifs sur une map Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Source pour faire les Undos successifs sur une map Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Source pour faire les Undos successifs sur une map Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Source pour faire les Undos successifs sur une map Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Source pour faire les Undos successifs sur une map Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Source pour faire les Undos successifs sur une map Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Source pour faire les Undos successifs sur une map Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Source pour faire les Undos successifs sur une map Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Source pour faire les Undos successifs sur une map Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Source pour faire les Undos successifs sur une map Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Source pour faire les Undos successifs sur une map Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Source pour faire les Undos successifs sur une map Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
-20%
Le deal à ne pas rater :
Drone Dji DJI Mini 4K (EU)
239 € 299 €
Voir le deal

 

 Source pour faire les Undos successifs sur une map

Aller en bas 
AuteurMessage
exdragon

exdragon


Nombre de messages : 601
Date d'inscription : 05/01/2012

Source pour faire les Undos successifs sur une map Empty
MessageSujet: Source pour faire les Undos successifs sur une map   Source pour faire les Undos successifs sur une map EmptyMar 17 Jan 2012 - 7:24

Bonjour Wink

Pour ne pas que quelqu'un ré-invente la roue, je place là mon source permettant de placer des images (personnages ou autres) sur la map et de rétablir la zone modifiée de la map par un bouton "Undo" au cas où on se trompe, possibilité de revenir 30 coups en arrière.

Les variables et objets déclarés :

Code:
' Choix de la taille de map
dim taille%
dim maxtaille%

' Déclaration des variables utilisées par les boucles
dim y%
dim x%

' Déclaration des variables
dim sav_index%
dim element$
dim cible$
dim numero%
dim sel%
dim nl$
dim type$
dim x_sav%(30)
dim y_sav%(30)
dim debutX%
dim debutY%
dim L%
dim H%

' Initialisation des variables
sel%=0 : ' 0=pas de sélection d'un élément en cours...
sav_index%=0 :' index des éléments placés sur map pour le tableau des X et Y.

' Dimension de la fenêtre de l'éditeur
width 0,800
height 0,640
border_normal 0

' Création des objets "systeme" :
picture 1 :' La zone où s'affichera la map.
picture 2 :' Le menu de l'éditeur
picture 3 :' Le bouton (image) Undo
list 9 : ' La liste des éléments du type choisi
image 10 :' Image invisible, sert à copier un élément vers la map
image 12 :' Image pour sauver les placements successifs (undo).
dlist 14 :' Liste des X des 30 dernières images placées
dlist 15 :' Liste des Y des 30 dernières images placées


' Evenement sur ces objets "systemes"
on_click 1, place
on_click 3, replace
on_click 9, clickliste

Routine "place", Cette routine est appelée quand on clique sur la map.
Code:

' Place sur la map l'élément cliqué dans l'objet list.
place:
2D_target_is 1
if (sel%=1) :' Place l'élément sur la map seulement si on en a sélectionné un.
x%=int(mouse_X_position(1)/18)*18
y%=int(mouse_Y_position(1)/18)*18
pret%=1
debutX%=x%+1:' le 1 sert a placer l'image au centre de la case et pas au bord.
debutY%=y%+1:' Idem que précédemment.
' sauve la zone dans un fichier
2D_image_copy 12,debutX%,debutY%,debutX%+L%,debutY%+H%
' Sauve X et Y de la case cliquée dans un tableau des X et un tableau des Y.
item_add 14,debutX%:' Sauve X dans le tableau des X
item_add 15,debutY%:' Sauve Y dans le tableau des Y
sav_index%=count(14)
if (sav_index%<1) then sav_index%=1
fichier$="ia_temp\"+str$(sav_index%)+".bmp"
file_save 12,fichier$
sauvees%=sauvees%+1
' charge l'image de l'élément choisi et la place sur la map
cible$=type$+"\"+element$+str$(numero%)+".bmp"
file_load 10,cible$
2D_image_paste 10,debutX%,debutY%
end_if
return

Routine "clickliste" est appelée par le click sur la liste des éléments à placer.
Code:
' Sert à définir si la liste des éléments a été cliquée
clickliste:
numero%=item_index(9)
sel%=1
return

Routine "replace", Cette routine est appelée quand on clique sur le bouton "Undo"
Code:

' Replace les zones de map sauvegardées
replace:
' Recharge les fichiers images en sens inverse de leur numéro à
' la position lue dans les tableaux nommés x_sav et y_sav.
sav_index%=count(14)
if ((sav_index%>0) and (sav_index%<=30))
fichier$="ia_temp\"+str$(sav_index%)+".bmp"
file_load 12,fichier$
debutX%=item_read$(14,sav_index%)
debutY%=item_read$(15,sav_index%)
2D_image_paste 12,debutX%,debutY%
item_delete 14,sav_index%
item_delete 15,sav_index%
position 13,position(13)+1 : ' Progress_bar indique le niveau de Undo <30
end_if
return

Routine "nettoie" est appelée par le bouton "sauver la map".
Code:

' Efface du disque dur les images sauvées par le undo
' Efface du disque dur les images sauvegardées par le undo
' Et remet à zéro tous les compteurs et index de liste
nettoie:
for i%=1 to sauvees%
fichier$="ia_temp\"+str$(i%)+".bmp"
if (file_exists(fichier$)=1) then file_delete fichier$
next i%
sel%=0
sav_index%=0
pret%=0
sauvees%=0
position 13,0
clear 14
clear 15
return

Pour générer la Grille de la map, utilisez le générateur de grille fourni dans le forum, car il crée des cases (de grille) de 18x18 quand on indique un pas de 16, c'est pour permettre que l'image de 16x16 se place bien au centre de la case de 18x18.

Voilà si jamais quelqu'un veut plus de détails sur un point précis du code parce qu'il compte utiliser ce source, alors je répondrais.

POST MIS A JOUR Wink
Le 18 Janvier 2012


Dernière édition par exdragon le Mer 18 Jan 2012 - 8:38, édité 5 fois
Revenir en haut Aller en bas
exdragon

exdragon


Nombre de messages : 601
Date d'inscription : 05/01/2012

Source pour faire les Undos successifs sur une map Empty
MessageSujet: Re: Source pour faire les Undos successifs sur une map   Source pour faire les Undos successifs sur une map EmptyMar 17 Jan 2012 - 7:55

Avant de placer un élément sur la map, la zone où la souris clique est sauvegardée sous forme d'image sur disque dur sous le nom :

"\io_temp\"+type$+sav_index%+".bmp"

Où :
- io_temp : Est le dossier recevant les images du UNDO
- sav_index : Est le numéro d'index d'un Dlist qui stocke les positions des images placées sur la map.
Il y a un Dlist numéro 14 pour les positions X des images et un Dlist numéro 15 pour les positions Y des images, ils ont tous deux le même index, qui est sav_index%.
- Type$ : C'est le type d'élément placé sur la map (perso, batiment, objet...) car chaque type est un dossier où sont rangés les éléments de ce type.

Effacer du disque dur une image, peut se faire juste après la ligne où on replace l'image sur la map, mais je trouve que ça pourrait faire un lag (dû notamment à l'antivirus) au moment où on clique sur Undo.
Donc la solution la meilleure, plus propre et sans lags, est d'effacer toutes les images du disque placées par le undo, et le faire seulement au moment où on sauve la map.

POST MIS A JOUR
Le 18 Janvier 2012


Dernière édition par exdragon le Mer 18 Jan 2012 - 8:33, édité 5 fois
Revenir en haut Aller en bas
exdragon

exdragon


Nombre de messages : 601
Date d'inscription : 05/01/2012

Source pour faire les Undos successifs sur une map Empty
MessageSujet: Re: Source pour faire les Undos successifs sur une map   Source pour faire les Undos successifs sur une map EmptyMar 17 Jan 2012 - 10:21

Petite correction de la routine "place" du premier post.

Tout est ok Wink
Revenir en haut Aller en bas
exdragon

exdragon


Nombre de messages : 601
Date d'inscription : 05/01/2012

Source pour faire les Undos successifs sur une map Empty
MessageSujet: Re: Source pour faire les Undos successifs sur une map   Source pour faire les Undos successifs sur une map EmptyMer 18 Jan 2012 - 3:14

UP de mise à jour :

La première version (avant mise à jour) avait un gros bug^^

Tout est OK dans tous ces posts ci-dessus !
Revenir en haut Aller en bas
exdragon

exdragon


Nombre de messages : 601
Date d'inscription : 05/01/2012

Source pour faire les Undos successifs sur une map Empty
MessageSujet: Re: Source pour faire les Undos successifs sur une map   Source pour faire les Undos successifs sur une map EmptyMer 18 Jan 2012 - 8:06

Mise à jour derniere et définitive de la routine "place" dans le premier post.

Tout est OK, je place sur la map un élément que je choisi dans une liste (c'est l'objet 9), l'image sous lui a été sauvegardée pour un éventuel Undo, possibilité de 30 Undo successifs, le progress_bar en signale le niveau.

Voilà pour la contribution, j'espère que ça sera utile à quelqu'un, car pourquoi se crever avec des détails qui nous font perdre des heures quand on a le code tout fait par un collègue^^


Suis là pour des questions au cas où^^ ou par mp.
Je ne livre pas le source de l'éditeur complet pour le moment, mais je pense que ce sera faisable^^
Ce n'est que le générateur de carte ici, le moteur de jeu est à faire...
D'ailleurs un générateur de cartes tout simple, devinez quoi....c'est le notepad Wink

Revenir en haut Aller en bas
Contenu sponsorisé





Source pour faire les Undos successifs sur une map Empty
MessageSujet: Re: Source pour faire les Undos successifs sur une map   Source pour faire les Undos successifs sur une map Empty

Revenir en haut Aller en bas
 
Source pour faire les Undos successifs sur une map
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Prg pour imprimer un source Panoramic.
» logiciel open source pour les images vectorielles.
» Pour faire patienter
» Pour faire patienter
» Pour faire patienter...

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: