Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Autres questions


Index du Forum » Autres questions » symétrie verticale d'un sprite en C
Ninestars Hors ligne Membre Points: 2461 Défis: 24 Message

symétrie verticale d'un sprite en C

Posté le 28/08/2013 00:11

Salut tout le monde, savez-vous comment faire le symétrique verticale d'un sprite ayant une taille quelconque en C ?


Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 30/08/2013 00:48 | #


memcpy est dans "string.h"

je l'utilise pour les fond d'écrans :

unsigned char fond[] = {0x42, ...};
memcpy(ML_vram_adress(), fond, 1024);
ML_display_vram();

ce qui est bien plus rapide que ML_bmp_or(fond, 0, 0, 128, 64)
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Ninestars Hors ligne Membre Points: 2461 Défis: 24 Message

Citer : Posté le 30/08/2013 11:24 | #


Je suis en C dodormeur

Il y a un bug Limachi
System ERROR
TLB ERROR
TARGET 00000000
PC = 00305A01
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 30/08/2013 13:24 | #


si c'est un sprite 8*8:

void inverserSprite8x8(unsigned int *spriteOriginal, unsigned int *spriteModifie)
{
     int i;
     for(i=0; i<8; ++i) spriteModifie[i ] = spriteOriginal[7-i];
}


si c'est du 16*16 :

(je te prépare le code )

Ajouté le 30/08/2013 à 13:25 :
void inverserSprite16x16(unsigned int *spriteOriginal, unsigned int *spriteModifie)
{
     int i;
     for(i=0; i<8; ++i) {
          spriteModifie[2*i] = spriteOriginal[14-2*i];
          spriteModifie[2*i+1] = spriteOriginal[15-2*i];
     }
}


normalement ça marche
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Ninestars Hors ligne Membre Points: 2461 Défis: 24 Message

Citer : Posté le 07/09/2013 20:11 | #


Merci quand même DS mais j'ai fais le mien du coup il correspond exactement à ce que je veux.
unsigned char* reverse_sprite(unsigned char*sprite, [purple]int[/purple] largeur, [purple]int[/purple] hauteur)
{
    [purple]int[/purple] i, j;
    [purple]unsigned char[/purple] registre;
    unsigned char* rev_sprite = NULL;
    rev_sprite = calloc(largeur*hauteur, sizeof(char));
    
    [b][blue]if[/blue][/b] (largeur == [maroon]8[/maroon])
    {
        [b][blue]for[/blue][/b] (i=[maroon]0[/maroon]; i<hauteur; i++)
        {
            [b][blue]for[/blue][/b] (j=[maroon]0[/maroon]; j<8; j++)
            {
                [b][blue]if[/blue][/b] (sprite[i ] & 1<<j) rev_sprite[i ] |= [maroon]1[/maroon]<<(7-j);
            }
        }
    }
    [b][blue]if[/blue][/b] (largeur == [maroon]16[/maroon])
    {
        [b][blue]for[/blue][/b] (i=[maroon]0[/maroon]; i<hauteur*2; i++)
        {
            [b][blue]for[/blue][/b] (j=[maroon]0[/maroon]; j<8; j++)
            {
                [b][blue]if[/blue][/b] (sprite[i ] & 1<<j) rev_sprite[i ] |= [maroon]1[/maroon]<<(7-j);
            }
            [b][blue]if[/blue][/b] (i % 2)
            {
                registre = rev_sprite[i-1];
                rev_sprite[i-1] = rev_sprite[i ];
                rev_sprite[i ] = registre;
            }
        }
    }
    [b][blue]return[/blue][/b] rev_sprite;
}

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 46 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd