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

C Discussion :

Dessiner les pièces d'un Tetris


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2018
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Dessiner les pièces d'un Tetris
    Bonjour, voilà quelques heures que je suis bloqué là dessus :
    Je suis entrain de coder un tetris, pour ensuite faire une IA qui joue a ce tetris.
    Voilà Je veux dessiner ma pièce a l'intérieur de mon tableau mais je ne sais pas comment faire.
    J'ai pensé a copier ligne par ligne le tableau qui représente la piece dans le tableau qui représente la map alors j'ai fait ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    void draw_piece(struct board *map, int w, int h, int col) {
    	int l1 = col+(h-4)*w;
    	for(int i = l1; i < l1+5; ++i) {
    		for(int m = 12; m < 16; ++m) {
    			map->tab[i] = PIECE_I[m];
    		}
    	}
     
    }
    en gros là, ca prend la pièce I et ca copie la derniere ligne de la pièce I dans la map. Problème ca ne le fait pas, enfait ca copie que le derniere élément, a savoir 0, dans la map donc ca ne change rien...

    à savoir :

    ma map est un tableau à une dimension affiché comme une matrice. Donc des coordonnées (x,y) seront calculées par x+y*w.

    pareil pour ma pièce c'est du 4*4, mais à une dimension alors la derniere ligne de ma piece sera de 12 a 16

    Quelqu'un pourrait-il m'aider ?

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par NUTSMASTER Voir le message
    Quelqu'un pourrait-il m'aider ?
    Une copie d'un tableau t1 dans un tableau t2 ne nécessite qu'une seule boucle. Or toi tu fais deux boucles imbriquées. Fatalement il y aura un truc qui va clocher...
    Citation Envoyé par NUTSMASTER Voir le message
    ma map est un tableau à une dimension affiché comme une matrice. Donc des coordonnées (x,y) seront calculées par x+y*w.
    pareil pour ma pièce c'est du 4*4, mais à une dimension alors la derniere ligne de ma piece sera de 12 a 16
    Très bonne approche. Donc tu fais une boucle sur "i" variant de 0 à 4 et tu copies map[i] dans piece[i+12] (ou un truc dans ce genre)...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2018
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    SUPER !

    Merci beaucoup ! Tu m'a débloqué !

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2018
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Ducoup pour ceux qui veulent voilà le code : en gros je déclare un l1 qui donne la coordonnée a laquelle je veux le placer dans le tableau (ici donc x+y*w) et je fais un for de 0 a 4 et je fait :
    tab[i+l1-1] = piece[i+12] pour le bas de la piece et ensuite je fais a peu pres la meme chose en changeant les valeurs pour que ca se place bien.
    Voilà le code pour une pièce entière :

    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
     
    for(int i = 0; i < 4; ++i) {
    		    map->tab[i+l1-1] = PIECE[i+12];
     
    	    }
            for(int i = 0; i < 4; ++i) {
    		    map->tab[i+l2-1] = PIECE[i+8];
     
    	    }
            for(int i = 0; i < 4; ++i) {
    		    map->tab[i+l3-1] = PIECE[i+4];
     
    	    }
            for(int i = 0; i < 4; ++i) {
    		    map->tab[i+l4-1] = PIECE[i];
     
    	    }
    donc on a l1 l2 l3 et l4 qui correspond aux coordonnées des 4lignes que l'on doit copier de piece dans tab

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Pourquoi 3 boucles ???
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (int i = 0; i < 4; ++i) {
    	map->tab[i+l1-1] = PIECE[i+12];
    	map->tab[i+l2-1] = PIECE[i+8];
    	map->tab[i+l3-1] = PIECE[i+4];
    }
    Ou mieux: utiliser une fonction déjà faite pour ça (ça n'ira pas plus vite et ça revient en plus à refaire 3 boucles mais ça donne un code plus light...)
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    memcpy(map->tab + l1 - 1, PIECE + 12, 4 * sizeof (*PIECE));
    memcpy(map->tab + l2 - 1, PIECE + 8, 4 * sizeof (*PIECE));
    memcpy(map->tab + l3 - 1, PIECE + 4, 4 * sizeof (*PIECE));
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. BTS Info de Gestion passé aujourd'hui question pour SQL
    Par red210 dans le forum Décisions SGBD
    Réponses: 11
    Dernier message: 29/05/2005, 14h48
  2. [bochs] Question pour un kernel de base...
    Par hudson dans le forum Assembleur
    Réponses: 2
    Dernier message: 24/02/2005, 12h07
  3. Petite question pour Backup
    Par chicken92000 dans le forum Administration
    Réponses: 2
    Dernier message: 16/09/2004, 16h10
  4. [MIB] Questions pour construire une mib
    Par fadoua dans le forum Développement
    Réponses: 4
    Dernier message: 11/03/2004, 10h47

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