IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Un peu de graphisme


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut Un peu de graphisme
    Bonjour,
    afin de pas perdre la main en Java, et pour m'améliorer un peu, je suis entrain de développer un petit jeu en Java.
    Pour que se soit plus attractif, je le fais pour Android.
    J'ai créé un algo pour générer des labyrinthes en utilisant la méthode de l' Exploration exhaustive.
    J'ai donc un tableau de cases, et chaque case possède un entier qui indique les murs qui l’entourent (1 NORD, 10 SUD, 100 EST, 1000 OUEST. donc 1010 => mur OUEST et SUD).
    Pour afficher mon labyrinthe j'ai une méthode toString, qui parcours le tableau, et affiche l'entier des murs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    public String toString() {
     
    		String chaine = "";
    		int cpt = 0;
    		for(int i=0; i< laby.length; i++) {
     
    			// On passe ) la ligne suivante du labyrinthe
    			if(cpt == larg) {
    				cpt = 0;
    				chaine += "\n";
    			}
     
    			chaine+=laby[i].getMur();
    			chaine+= "||";
    			cpt++;
    		}
     
    		return chaine;
    	}
    Du coup j'obtiens un truc un peu illisible, et j'aimerais donc afficher des images à la place de cette chaine de caractères.
    Parcourir le tableau, et si mon getMur vaut 10, j'affiche l'image d'un mur en bas de la case par exemple.

    Mais je ne sais pas du coup comment faire ça pour android,
    donc si quelqu'un a une idée, je suis preneur,

    Merci d'avance

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    961
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 961
    Par défaut
    Vous devriez utiliser un Canvas Android, qui permet de faire du dessin vectoriel.

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Merci de votre réponse.
    J'irai voir le fonctionnement des canvas ce week end.

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Bonjour,
    j'ai regarder un peu le fonctionnement des canvas, et j'ai enfin réussi à dessiner une image. C'est exactement ce que je recherchais, donc encore merci.
    Maintenant je vais surment un peu gallerer pour finir mon petit projet, mais c'est en forgeant qu'on devient forgeron

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Bonjour bonjour,
    je viens re-poster ici pour ne pas ré-ouvrir un topic du même style, car j'ai un nouveau petit souci.
    En effet, j'arrive à générer des labyrinthe, et à les afficher.

    Voila mon fichier xml et le code de l'affichage :

    XML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
     
        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:onClick="onClickGenerer"
            android:text="Générer" />
     
    </RelativeLayout>
    Affichage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    public class DrawView extends View{
    	Paint paint = new Paint();
    	private ArrayList<Case> tabLaby = new ArrayList<Case>();
     
    	public DrawView(Context context, ArrayList<Case> tablaby) {
    		super(context);
    		paint.setColor(Color.GREEN);
    		this.tabLaby = tablaby;
    	}
     
    	@Override
    	public void onDraw(Canvas canvas) {  	
     
    		int x,y;
    		Bitmap mur = BitmapFactory.decodeResource(getResources(), R.drawable.mur);
    		Bitmap arrivee = BitmapFactory.decodeResource(getResources(), R.drawable.arrivee);
    		Bitmap depart = BitmapFactory.decodeResource(getResources(), R.drawable.depart);
     
    		for(int i=0; i< tabLaby.size(); i++) {
    			x = (int) tabLaby.get(i).getX();
    			x*= tabLaby.get(i).getTaille();
    			y = (int) tabLaby.get(i).getY();
    			y*= tabLaby.get(i).getTaille();
     
    			switch(tabLaby.get(i).getTypeCase()) {
    			case MUR:
    				canvas.drawBitmap(mur, x, y,null);
    				break;
     
    			case ARRIVEE:
    				canvas.drawBitmap(arrivee, x, y,null);
    				break;
     
    			case DEPART:
    				canvas.drawBitmap(depart, x, y,null);
    			}
    		}
    	}
    }
    Le canvas est appelé comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DrawView drawView = new DrawView(this, laby.getLaby());
    		drawView.setBackgroundResource(R.drawable.fondmenu);
    		setContentView(drawView);
    le seul problème, c'est que la zone de dessin prend tout l'écran, et cache le bouton qui permet de générer des labyrinthes.
    J'aimerais donc savoir comment faire pour afficher la zone de dessin dans une view que je pourrait mettre dans le xml ?

    Une nouvelle fois merci d'avance

  6. #6
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Normal:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setContentView(drawView);
    va remplacer tout le contenu du layout par la seule view....

    Mais pourquoi ne pas inclure DrawView directement dans le layout ?
    Bien sur, il va falloir fournir les constructeurs de View "normaux", mais la gestion est plus simple non ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6] [Graphisme] Arc de cercle dans un picturebox
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 04/11/2002, 17h55
  2. [VB6] [Graphisme] Transfert d'image pixel par pixel
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 15/10/2002, 09h53
  3. [VB6][Graphisme] Zoom
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 10/10/2002, 17h30
  4. RTL60 ( la jsuis un peu confused)
    Par magdoz dans le forum Outils
    Réponses: 7
    Dernier message: 23/07/2002, 11h20
  5. DirectX 6, un peu en retard ... :\
    Par multani dans le forum DirectX
    Réponses: 3
    Dernier message: 28/05/2002, 19h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo