Posté le 09/12/2013 13:45
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 169 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
Citer : Posté le 08/04/2014 19:48 | #
En fait, le problème est le suivant.
Considérons un sprite de 8*x de large.
Après inversion, il est transformé en
ça s'est bon pour les sprites 8*x
Mais pour les sprites 16*x, c'est ça le problème
Je pense que c'est coder comme ça (exemple pour un bmp de 20*x)
en rouge, l'image codé et en bleu, des bites non utilisées dans l'image
et le problème c'est que en inversant le dernier octet, je devrais faire
c'est ça
Citer : Posté le 08/04/2014 20:17 | #
Oui, c'est ça
Pour que ton algo soit efficace, il faudrait que tu inverses toute une ligne d'un coup. Du coup, tu n'aurais plus de problème, même pas de fin de ligne.
Mais je ne comprends pas pourquoi tu te casses la tête.
Réécris un algorithme d'affichage qui l'affiche à l'envers, c'est bien plus simple, optimisé et performant !
Citer : Posté le 08/04/2014 20:20 | #
voici un algo pour une bmp de 16*16
int i,prm;
for(i=0;i<16;i+=2){
bmp[i]=0xFF-bmp[i];
bmp[i+1]=0xFF-bmp[i+1];
prm=bmp[i];bmp[i]=bmp[i+1];bmp[i+1]=prm;
}
}
j'ai regardé le code de pierrotLL et sa fonction ML_bmp est super chaude à comprendre
Citer : Posté le 08/04/2014 21:20 | #
Mais non, il ne faut pas la faire comme ça.
Il faut juste changer la position du pixel. Exemple;
avec x et y les coordonnées de base, et xi et yi les coordonnées actuelles, devient
avec MAX la largeur du bitmap. C'est beaucoup plus simple !
Après, la fonction est pas facile à décoder, mais si tu le souhaites, je peux te donner un coup de main pour ça.
Citer : Posté le 09/04/2014 19:52 | #
http://www.planet-casio.com/Fr/forums/topic12544-11-Probleme-addin-(YuGiOh).html#104061
Pour en revenir à notre "discussion" sur le codage en hexa, j'ai réfléchi.
En fait,le fichier ressemblera à ça
01 41 62 79 73 73 65 20 65 74 69 6E 63 65 6C 61 6E 74 65 06 40 07 58 05
avec l'ID, le nom, l'ATK,la DEF et le niveau
c'est ça
Citer : Posté le 09/04/2014 19:53 | #
Exact !
Citer : Posté le 09/04/2014 19:59 | #
le plus dur ça va être de tout écrire en hexadécimal parce que 600 fois 1 monstre, c'est pas de la tarte,
il y a eu moyen d'aller plus vite, genre un tableur ou j'écris toutes les infos en ascii et lui il convertit direct en hexadecimal(avec comme option si c'est un texte en ascii dans la case ou un nombre en decimal)
Citer : Posté le 09/04/2014 20:01 | #
Je te l'ai dit.
[...] les coder avec un programme (opération inverse de la lecture, il s'agit de la meilleure solution 8) ) [...]
Program-ception, il n'y a que ça de vrai !
Citer : Posté le 09/04/2014 20:03 | #
en clair, ça existe pas
Ben, je vais écrire un petit programme qui lit un .csv pour le convertir en hexa
Citer : Posté le 09/04/2014 20:06 | #
Mais non, écris un programme qui convertit des variables dans le code pour les écrire en hexa.
Tu les réunis par groupes, tu fais des fichiers fragmentaires et tu réunis le tout avec HxD.
Citer : Posté le 09/04/2014 20:09 | #
quels variables :huh:
Citer : Posté le 09/04/2014 20:18 | #
Tu définis le nom, l'ID, etc... comme des variables dans ton programme d'écriture, qui les écrira dans un fichier.
Citer : Posté le 09/04/2014 20:55 | #
Mais il va écrire 400 comme 34 30 30 et non 01 90 comme je voudrai
Citer : Posté le 09/04/2014 21:00 | #
Ben non, il faut écrire comme cela.
Ça fonctionnera, si tu écris dans un fichier.
Citer : Posté le 10/04/2014 19:13 | #
mais ça marche que quand le nombre est inférieur à 255(donc a 0xFF) donc quand il est codé que sur 1 octet car quand je fais
HxD me mets un seul octet 0x58 au lieu de 2 octet 0x02 0x58
Citer : Posté le 10/04/2014 19:22 | #
Forcément, fputc n'écrit qu'un caractère !
Citer : Posté le 10/04/2014 19:29 | #
donc j'utilise fprintf ou fputs?
Citer : Posté le 10/04/2014 19:35 | #
fprintf est toujours mieux
Citer : Posté le 10/04/2014 19:43 | #
mais du coup quand je fais fprintf(fichier,600); le programme crashe et quand je fais fprintf(fichier,"%d",600); il écrit 0x36 0x30 0x30(donc il écrit "600" au lieu de 600)
Citer : Posté le 10/04/2014 20:37 | #
fprintf attend un paramètre de type const char *, suivi de valeurs.
Je m'exlique.
600 est une valeur codée sur 2 octets, donc tu ne peux pas t'en servir telle quelle. Voici un code qui peut te permettre de faire ça.
char *ch = calloc(20,1);
ch[0] = atk & 65280;
ch[1] = atk & 255;
fprintf(file,"%s",ch);
Citer : Posté le 11/04/2014 18:24 | #
code::Blocks me met un warnings
sur la ligne ecrit[0]=600&65280;
et il n'écrit rien dans la fichier