Definire un perimétre avec drawimage

dj naoki Messages postés 511 Date d'inscription mercredi 22 décembre 2010 Statut Membre Dernière intervention 25 septembre 2016 - 10 nov. 2013 à 09:44
dj naoki Messages postés 511 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

8 réponses

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
10 nov. 2013 à 10:44
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 ?
0
dj naoki Messages postés 511 Date d'inscription mercredi 22 décembre 2010 Statut Membre Dernière intervention 25 septembre 2016 2
Modifié par dj naoki le 10/11/2013 à 11:28
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
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
10 nov. 2013 à 13:30
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 10/11/2013 à 13:56
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
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
10 nov. 2013 à 14:34
Bonjour Ucfoutu

Je me demande si le demandeur est conscient de la difficultée du problème
0
dj naoki Messages postés 511 Date d'inscription mercredi 22 décembre 2010 Statut Membre Dernière intervention 25 septembre 2016 2
10 nov. 2013 à 14:49
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
0
dj naoki Messages postés 511 Date d'inscription mercredi 22 décembre 2010 Statut Membre Dernière intervention 25 septembre 2016 2
10 nov. 2013 à 16:37
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 10/11/2013 à 16:50
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
0
dj naoki Messages postés 511 Date d'inscription mercredi 22 décembre 2010 Statut Membre Dernière intervention 25 septembre 2016 2
10 nov. 2013 à 16:49
comment je pourrais faire alors ?? parce que sa m'embâterais d'abandonner maintenant. comment fonctionne les jeux ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 10/11/2013 à 17:12
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
0
dj naoki Messages postés 511 Date d'inscription mercredi 22 décembre 2010 Statut Membre Dernière intervention 25 septembre 2016 2
12 nov. 2013 à 22:24
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 !
0
Rejoignez-nous