Definire un perimétre avec drawimage

Messages postés
517
Date d'inscription
mercredi 22 décembre 2010
Statut
Membre
Dernière intervention
25 septembre 2016
- - Dernière réponse : dj naoki
Messages postés
517
Date d'inscription
mercredi 22 décembre 2010
Statut
Membre
Dernière intervention
25 septembre 2016
- 12 nov. 2013 à 22:24
Bonjour,
désolé pour ce titre pas très claire mais je ne savais pas trop comment dire ca
voila je code un petit jeu en ce moment et le sol est constitué de plusieurs images (100) le Pb c'est que je voudrais faire en sorte que par exemple quand je suis sur telle image je ne puisse plus avancer ou bien que ca initialise un variable a 1 par exemple et tout ca en fonction de l'image
comment puis je faire ??
merci
Afficher la suite 

8 réponses

Messages postés
3247
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
26 décembre 2018
45
0
Merci
Salut

Quand je lis ton post il est difficile de comprendre ce que tu veux faire.J'essaie de traduire en algo ton texte
tu dis
quand je suis sur telle image

cela se traduit comment
je clique sur l'image ?
je ne puisse plus avancer 

pas compris

peut etre explique en quoi consiste ton jeu ?
Commenter la réponse de cs_ShayW
Messages postés
517
Date d'inscription
mercredi 22 décembre 2010
Statut
Membre
Dernière intervention
25 septembre 2016
1
0
Merci
Désolé c'est vrais que c'est pas très clair ^^' en faite admettons que je dessine 2 bitmap a l'aide de ce code :
'code pour afficher le décors (ici le sol)
Dim dec As Bitmap = My.Resources.terre
        e.Graphics.DrawImage(dec, 50, 100)
dec.Dispose()

'code pour afficher un autre décors
Dim dec2 As Bitmap = My.Resources.eau
        e.Graphics.DrawImage(dec2, 100, 200)
dec2.Dispose()

'code pour afficher l'image du perso
Dim perso As Bitmap = My.Resources.perso
        e.Graphics.DrawImage(perso, persox, persoy)
        perso.Dispose()



ce que je voudrais c'est que je ne puisse pas déplacer mon image "perso" sur l'image "dec2"(ici l'eau)

et a plus long terme faire en sorte que dés que je charge l'image "dec2" (donc l'eau) automatiquement l'image perso ne puisse pas ce déplacer sur "dec 2"

(je dis automatiquement car en fonction des map l'eau(dec2) ne seras pas au mémé emplacement)

merci
Commenter la réponse de dj naoki
Messages postés
3247
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
26 décembre 2018
45
0
Merci
si je comprends
tu as une liste d'images et tu veux les placer sans qu'elles s'entrechevauchent
d'abord
pas besoin d'écrire dec.dispose le framework s'en occupe.
Après avoir afficher tes images tu veux les déplacer ? ou tu les places une fois ?

pour faciliter la tache tu devrais nommé tes images dans ta resource avec le meme nom numéroté selon l'ordre de placement sur ton écran
par im1 im2 im3
si My.Resources.terre est ta premiere image renomme la im1 etc...
les images sont elles de tailles différentes
Commenter la réponse de cs_ShayW
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
0
Merci
Bonjour,
Je suis cette discussion avec beaucoup d'attention.
La difficulté à surmonter n'est pas au niveau d'un débutant, loin de là ...
Les explications données par le demandeur laissent entendre qu'un personnage ne saurait aller au delà d'une limite (celle d'une zone "eau").
Cela se traduit par deux nécessités liminaires :
1) il ne saurait alors être question de traiter avec des images "bordées" par un rectangle, mais bel et bien par avec des pictureboxes non rectangulaires
2) il va ensuite falloir traiter avec ni plus ni moins que l'intersection de deux pictureboxes non rectangulaires.
Conclusion : à mon humble connaissance : utilisation intensive de fonctions de l'Api de Windows.
Bonne chance ...

PS et je n'ose même pas parler (en matière d'intersection) de certains aspects ! Exemple le plus simple : le "personnage" garde les pieds sur terre, mais l'image de son bras tendu "passe" au premier plan de celle de l'eau ... hein ...
(c'est l'UNE (entre mille et une autres) des raisons de mon "bonne chance").

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
cs_ShayW
Messages postés
3247
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
26 décembre 2018
45 -
Bonjour Ucfoutu

Je me demande si le demandeur est conscient de la difficultée du problème
dj naoki
Messages postés
517
Date d'inscription
mercredi 22 décembre 2010
Statut
Membre
Dernière intervention
25 septembre 2016
1 -
merci ucfoutu tu a compris mon pb mais je pense que sa sera un peu plus simple du fait que mon perso est vu de haut et que mon terrain aussi (en mode rpg )
après je ne fait pas trop comment faire.
au départ je pansait a un truc comme:
(image de l'eau est positionner a 10,10)

si perso.x est entre 10 et 20 (largeur de l'eu sur axe x) et que perso. Y est entre 10 et 20 (largeur sur l'axe y) alors perso.x est téléporter au sur une valeur non comprise entre 10 et 20 (de mémé pour y)

merci
dj naoki
Messages postés
517
Date d'inscription
mercredi 22 décembre 2010
Statut
Membre
Dernière intervention
25 septembre 2016
1 -
ou alors ! le sol n'est constituer que d'une seul image et je trace sur l'image une grille invisible et je met par exemple que le perso a pas le droit d'aller en A3
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
0
Merci
Que ton personnage soit ou non vu de haut, cela ne change rigoureusement rien à ce que je t'ai dit, sauf si, à la fois :
- la silhouette de ton ton personnage est rectangulaire et occupe toute la surface du contrôle où il est dessiné, ou rond dans un carré et dont le rayon est = la moitié d'un côté du contrôle où il est dessiné
- la surface de ton "eau" est rectangulaire
- le personnage ne peut se déplacer que perpendiculairement aux côtés de ta "surface d'eau".
Idem si tu divises en portions rectangulaires (problème rapporté à chacune des portions) !

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Commenter la réponse de ucfoutu
Messages postés
517
Date d'inscription
mercredi 22 décembre 2010
Statut
Membre
Dernière intervention
25 septembre 2016
1
0
Merci
comment je pourrais faire alors ?? parce que sa m'embâterais d'abandonner maintenant. comment fonctionne les jeux ?
Commenter la réponse de dj naoki
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
0
Merci
Je t'ai déjà répondu : application intensive de fonctions complexes de l'Api de Windows (pictureboxes à contours non rectangulaires, vérifications d'intersections, etc ...).
Tout cela est complexe et demande beaucoup de connaissances que l'on ne peut valablement acquérir et mettre en oeuvre que pas à pas, très patiemment).
La baguette magique n'existe pas.
Bonne chance

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Commenter la réponse de ucfoutu
Messages postés
517
Date d'inscription
mercredi 22 décembre 2010
Statut
Membre
Dernière intervention
25 septembre 2016
1
0
Merci
re !

j'ai réussi !!!!!!!

en faite il sufi de mettre un picturebox invisible sur la zone a bloquer et de mettre ca dans la procédure de déplacement (le code fonctionne mais nécessite des améliorations)

 ' bloquer vers le bas
        If persoy + persoh > b1.Top And persoy < b1.Top + b1.Height And persox > b1.Left And persox < b1.Left + b1.Width Then
            persoy = b1.Top - persoh
        End If
                
        'bloquer vers le haut
        If persoy < b5.Top And persoy < b5.Top + b5.Height And persox > b5.Left And persox < b5.Left + b5.Width Then
            persoy = b5.Top + b5.Height
        End If
       
        'bloquer vers la droite
        If persox + persow > b3.Left And persox < b3.Left + b3.Width And persoy < b3.Top + b3.Height And persoy > b3.Top Then
            persox = b3.Left - persow
        End If
        'bloquer vers la gauche
        If persox > b4.Left And persox < b4.Left + b4.Width And persoy < b4.Top + b4.Height And persoy > b4.Top Then
            persox = b4.Left + persow
        End If




ici le place des picturebox qui on un coté qui ne laisse pas passer le perso

bon code !
Commenter la réponse de dj naoki