Bloquer des parties d'une image
Fermé
Matador8512
Messages postés
3
Date d'inscription
samedi 19 mai 2018
Statut
Membre
Dernière intervention
20 mai 2018
-
19 mai 2018 à 18:26
Whismeril Messages postés 18279 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 mars 2023 - 20 mai 2018 à 18:25
Whismeril Messages postés 18279 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 mars 2023 - 20 mai 2018 à 18:25
A voir également:
- Bloquer des parties d'une image
- Frédéric cherche à faire le buzz sur les réseaux sociaux. il a ajouté une image de manchots sur une image de plage. retrouvez l'image originale de la plage. que cachent les manchots ? ✓ - Forum Windows
- Recherche par image - Guide
- Image iso - Guide
- Faststone image viewer - Télécharger - Visionnage & Diaporama
- Bloquer sur messenger - Guide
2 réponses
Whismeril
Messages postés
18279
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 mars 2023
888
19 mai 2018 à 19:06
19 mai 2018 à 19:06
Bonjour, il me semble qu'il serait plus simple de disposer des contrôles invisibles (labels par exemples) pour faire tes obstacles.
Il te suffirait de gérer les collisions.
Sinon, tu dois te créer une collection de coordonnées interdites et à chaque mouvement regarder si les bords des ton label ne sont pas dans ces coordonnées.
Il te suffirait de gérer les collisions.
Sinon, tu dois te créer une collection de coordonnées interdites et à chaque mouvement regarder si les bords des ton label ne sont pas dans ces coordonnées.
Whismeril
Messages postés
18279
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 mars 2023
888
20 mai 2018 à 18:25
20 mai 2018 à 18:25
Chaque label est un rectangle définit par un coin et sa taille.
Il faut que tu regardes si le déplacement amène un des 4 coins du personnage dans le rectangle d'un mur.
Un truc comme ça
S'il y a collision, je ne me suis pas amusé à trouver le déplacement max possible.
Il faut que tu regardes si le déplacement amène un des 4 coins du personnage dans le rectangle d'un mur.
Un truc comme ça
private bool AutoriseDeplacement(int DeltaX, int DeltaY, out Point NouvellePosition)
{
//tous les murs contiennent "Mur" dans leur nom
List<Label> murs = this.Controls.OfType<Label>().Where(l => l.Name.Contains("Mur")).ToList();
//Calcul de la nouvelle position du personnage
NouvellePosition = new Point(lblPerso.Location.X, lblPerso.Location.Y);
NouvellePosition.Offset(DeltaX, DeltaY);
List<Point> coinsPerso = new List<Point>{
NouvellePosition,
new Point(NouvellePosition.X, NouvellePosition.Y + lblPerso.Height),
new Point(NouvellePosition.X + lblPerso.Width, NouvellePosition.Y),
new Point(NouvellePosition.X + lblPerso.Width, NouvellePosition.Y + lblPerso.Height)
};
//Test de collision
foreach (Label mur in murs)
foreach (Point coin in coinsPerso)
if (coin.X >= mur.Location.X && coin.X <= mur.Location.X + mur.Width && coin.Y >= mur.Location.Y && coin.Y <= mur.Location.Y + mur.Height)
return false;
//si on arrive jusqu'ici, c'est qu'il n'y a pas de collision
return true;
}
private void button1_Click(object sender, EventArgs e)
{
Point nouvellePosition;
if (AutoriseDeplacement(10, 5, out nouvellePosition))
lblPerso.Location = nouvellePosition;
else
MessageBox.Show("Boom !");
}
S'il y a collision, je ne me suis pas amusé à trouver le déplacement max possible.
19 mai 2018 à 19:35
Encore merci !
19 mai 2018 à 20:00
20 mai 2018 à 11:34