2008-09-26 11 views
0

J'ai une image d'une carte de jeu de base. Pensez-y comme juste des murs horizontaux et verticaux qui ne peuvent pas être croisés. Comment puis-je passer d'une image png des murs à quelque chose dans le code facilement?Comment puis-je transformer un fichier image d'une carte de jeu en limites dans mon programme?

La manière difficile est assez simple ... c'est juste si je change la carte d'image je voudrais un moyen facile de traduire cela en code.

Merci!

Modifier: La carte n'est pas basée sur les vignettes. C'est top 2D.

Répondre

1

Je me lance dans les jeux vidéo, et personnellement, je ne voudrais pas avoir à vérifier les limites des images sur la carte. Ne serait-il pas plus propre si ces murs étaient des objets qui avaient juste une propriété d'image (ou quelque chose comme ça)? L'image s'afficherait, mais l'objet aurait des coordonnées bien définies et une fonction pourrait décider si un objet a été frappé à chaque fois que le joueur a bougé.

1

J'ai besoin de plus de détails.

Votre vignette de jeu est-elle basée? Est-ce que c'est 3d? Si sa dalle est basée, vous pouvez sous-échantillonner votre image à la résolution de tuile et ensuite faire une conversion 1: 1 avec chaque pixel représentant une tuile.

0

Si vous n'avez pas besoin de précalculer quoi que ce soit en utilisant les informations de la carte. Vous pouvez simplement vérifier la logique d'exécution en utilisant la fonction like getPixel (x, y).

1

Je suggère d'écrire un script qui prend chaque pixel individuel et détermine s'il représente une partie d'un mur ou non (c'est-à-dire noir ou blanc). Ensuite, codez votre jeu de sorte que les murs soient construits à partir d'un petit bloc individuel, représenté par les pixels. Je ne devrais pas être trop dur ...

0

Eh bien, je peux voir deux cas avec deux « meilleure solution » selon l'endroit où votre image provient de:

  1. Votre graphiques est carrelé, et donc vous pouvez facilement « reconnaître » un bloc parce qu'il est en utilisant les mêmes graphismes que les autres blocs et tout ce que vous auriez à faire est un programme qui, lorsqu'on lui donne une liste de "carreaux bloquants" et une carte peut produire une "carte de collision" en comparant chaque carreau avec des carreaux dans la "liste de blocage" . Vos graphiques ne sont que des graphiques (par exemple, il peut s'agir d'une image ou de graphiques CG) et vous ne vous attendez pas à ce que les pixels d'un bloc soient identiques à ceux d'un autre bloc. Vous pouvez toujours essayer d'appliquer un algorithme de "détection de contour" sur votre image, mais je suppose que vous devriez plutôt diviser votre image dans une couche BG et une couche FG afin que la couche FG ait une couleur prédéfinie (ou alpha = 0) et testez les pixels par rapport à cette couleur pour définir si les choses sont bloquantes ou non. Vous n'avez pas beaucoup de formes de blocage, mais elles sont généralement complexes (polygones, ellipses) et seraient inefficaces à rendre en utilisant un bitmap du monde ou à emballer en tant que "attributs de tuile". C'est typiquement le cas pour les jeux d'aventure pointer-cliquer, par exemple. Dans ce cas, vous devez probablement créer un chemin qui correspond à vos limites avec un programme de dessin vectoriel et rechercher une bibliothèque faisant des intersections polygonales ou des collisions bezier.

Bonne chance et amusez-vous bien.