2012-10-17 5 views
-2

Possible en double:
How to create a square 10x10 table in Android?Comment mettre en place un damier et des pièces efficacement?

Je veux mettre en œuvre une planche à damier carré, comme un échiquier. Je l'ai fait en utilisant TableLayout et ImageViews comme des cellules de tableau. Cependant, je suis coincé quand il s'agit de placer des pièces à bord. Je ne peux pas dessiner/afficher une pièce sur une cellule de tableau, c'est-à-dire que je ne peux pas créer deux ImageViews qui se chevauchent. Peut-être que cette façon n'est pas si intelligente.

Alors, quel est le meilleur moyen d'implémenter un jeu simple comme un jeu d'échecs avec un damier et des pièces? Quelle est la meilleure approche pour choisir, mettre en lumière et déplacer une pièce?

+0

Obtenez une image d'un tableau à damier, définissez-le comme image de fond, construisez une table sur le dessus, ajoutez des images de pièce à jouer à la table si nécessaire. –

+0

Je crée des tablelayout et des images de manière dynamique de sorte qu'il s'adapte à l'ensemble de l'écran. Je n'ai pas utilisé d'image de fond, je pense que la mise à l'échelle semblerait mauvaise. Je télécharge le code src de DroidFish, mais je n'ai aucune idée de leur approche jusqu'à maintenant ... – Mehmed

Répondre

1

Vous pouvez créer une ImageView qui contient à la fois la mosaïque et la pièce pour chaque pièce ainsi qu'une mosaïque vide, puis échangez simplement les images au besoin pour afficher des pièces ou des carreaux vides.

Bien sûr, cette approche ne permettrait aucune sorte d'animation lorsque des pièces sont déplacées. Pour cela, vous devez disposer d'un arrière-plan en tant que plateau de jeu, puis créer une table dans laquelle vous placeriez les pièces en tant qu'images distinctes (qui ne contiennent pas d'image en mosaïque).

+0

Comment puis-je définir une image pour y avoir plusieurs images? Est-ce le seul moyen? -> http://bit.ly/U5YzPw – Mehmed

+0

Ce n'est probablement pas la seule façon, mais cela me semble être un bon moyen. Vous ne pouvez pas avoir directement un ImageView afficher deux images. – Ralgha

1

Je créer deux TableLayouts dont le contenu est placé l'un sur l'autre. Les tuiles de fond (où vous placez vos "pièces") sont bien sûr derrière les pièces elles-mêmes.

Lorsque vous déplacez une pièce, vous déplacez simplement le contenu d'une cellule vers une autre cellule, mais cela n'a pas vraiment besoin d'être dit. La bonne façon d'utiliser cette approche est que vous pouvez facilement colorer les carreaux d'arrière-plan différemment selon le contexte (sans avoir à manipuler ImageView lui-même), vous pouvez par exemple changer les carreaux d'une pièce très facilement.

Également augmenter la taille de la carte ne serait pas un problème car rien n'est statique. Assurez-vous simplement que la taille des tuiles d'arrière-plan TableLayout et les pièces TableLayout sont de la même taille et qu'elles sont placées les unes sur les autres. Quand il se résume à l'efficacité, vous devez toujours garder à l'esprit si vous devriez vraiment vous concentrer sur ce point maintenant.

En règle générale; faire fonctionner les choses, le profil, le rendre plus rapide. N'essayez pas de le faire dans une autre direction, cela ne vous donnera qu'un mal de tête.

+0

Assurez-vous simplement que l'arrière-plan des images utilisées en tant que pièces est transparent afin que vous puissiez réellement voir les carreaux d'arrière-plan en dessous. –

Questions connexes