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 » Problème addin
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Problème addin

Posté le 09/12/2013 13:45

voila, je suis en train de préparer quelques graphisme pour mon prochain jeu et il y a un problème. mon programme peut afficher des lignes mais dès que je mets un GetKeyWait, mon écran est blanc. Comment faire pour que les traits restent pendant que le GetKeyWait fonctionne?

PS, mon programme est en fichier joint

Fichier joint


Précédente 1, 2, 3 ··· 9, 10, 11, 12, 13, 14, 15 ··· 18, 19, 20 Suivante
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 21/03/2014 20:26 | #


en fait je voudrais mettre tout les éléments de la structure à 0
en gros
tableau[2][2].type=0;
tableau[2][2].id=0;
tableau[2][2].tinvoc=0;
tableau[2][2].attack=0;
...


mais tableau[2][2]={0}; ne marche pas et je voudrais une solution pas trop longue
Lephenixnoir Hors ligne Administrateur Points: 24235 Défis: 170 Message

Citer : Posté le 21/03/2014 20:30 | #


Eh bien
for(i=0;i<max;i++)
{
  tableau[i].type = 0;
  tableau[i].id = 0;
  tableau[i].tinvoc = 0;
  // etc
}


Par contre, je ne vois pas vraiment l'intérêt, puisque tu va les remplir après en chargeant tes données.
Et puis, pourquoi deux dimensions ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 22/03/2014 08:50 | #


En fait, ça représente le plateau de jeu yugioh qui fait 5*4 cases. Donc il me faut un tableau à deux dimensions pour le representer facilement, dans chaque case, il y a le type de cartes(magie, piège effet, normal), l id de la carte, le type d'invocation (attaque , defense ou caché), une valeur pour savoir s'il a deja attaque, une autre pour savoir s'il a déjà changé d'état (attaque <> defense < cache )
Lephenixnoir Hors ligne Administrateur Points: 24235 Défis: 170 Message

Citer : Posté le 22/03/2014 09:00 | #


Ah ! Je pensais qu'il s'agissait de la liste des monstres.

Tu ne peux pas affecter une valeur à tous les éléments d'une structure d'un coup, puisque ces éléments n'ont pas tous la même taille.
En revanche, je peux te proposer ça (à utiliser avec précaution, je ne l'ai pas testé)
unsigned char *ptr;
ptr = (unsigned char *)(&structure);
for(i=0;i<sizeof(structure);i++) *ptr++ = 0;

Explication:
- On initialise un pointeur de type unsigned char à l'adresse de la structure.
- Puisque cette fois-ci, sizeof nous renvoie bien la taille en octets de la structure, on boucle sur toute la structure et on met les octets à 0.

Attention néanmoins: si une variable fait plusieurs octets, alors tous les octets, hauts et bas, seront mis à 0. Le code ne fait pas attention à quels octets sont à alloués à quelle variable.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 22/03/2014 19:49 | #


pour passer un tableau de structure dans une fonction,je fais
typedef struct Card Card;
struct Card
{
    int type;
    int id;
    int tinvoc;
    int attack;
    int switchstate;
    int effect;
    Phase timeffect;
};

fonction1(){
Card buffer[2]={0};
buffer[0].id=3;
fonction2(buffer);
}

fonction2(Card tab[2]){
tab[0].id=10;
tab[1].id=20;
tab[0].id=30;
}


mais quand j'affiche les id dans la fonction1, ça ne se modifie pas, l'id n'a pas changé, comment s'est possible?
Faut il que je fasse (*tab[0]).id=10; ou tab[0]->id=10;
Lephenixnoir Hors ligne Administrateur Points: 24235 Défis: 170 Message

Citer : Posté le 22/03/2014 20:34 | #


Ben non, évidemment que l'id n'est pas changé
Puisque tu passes tout ton tableau de structures en paramètre de ta fonction, celui-ci est copié.

Voilà ce qu'il faut faire.
typedef struct
{
    int type;
    int id;
    int tinvoc;
    int attack;
    int switchstate;
    int effect;
    Phase timeffect;
} Card; // pour simplifier

fonction1()
{
  Card buffer[2]={0};
    // Cette instruction fonctionne-t-elle ?
  buffer[0].id=3;
  fonction2(buffer);
}

fonction2(Card *tab)
{
  *tab.id=10;
  *(tab+1).id=20;
  *tab.id=30;
}

Si je ne me suis trompé nulle part, ça devrait fonctionner.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 22/03/2014 20:35 | #


fonction2(Card *tab)
{
  tab->id=10;
  (tab+1)->id=20;
  tab->id=30;
}



Ajouté le 22/03/2014 à 20:43 :
effectivement, voila la syntaxe correcte (vérifié sur compilateur)

void fonction2(Card *tab)
{
  tab->id=1;//pour le tab[0]
  tab[1].id=2;
}

Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 23/03/2014 10:37 | #


Lephenixnoir a écrit :
Ben non, évidemment que l'id n'est pas changé
Puisque tu passes tout ton tableau de structures en paramètre de ta fonction, celui-ci est copié.

Voilà ce qu'il faut faire.
fonction2(Card *tab)
{
  *tab.id=10;
  *(tab+1).id=20;
  *tab.id=30;
}


En fait, il faudrait faire
fonction2(Card *tab)
{
  (*tab).id=10;
  (*(tab+1)).id=20;
  (*tab).id=30;
}

Mais vu que les programmeurs sont feignants, -> remplace le (*tab).xxx :
fonction2(Card *tab)
{
  tab->id=10;
  tab->id=20;
  tab->id=30;
}


Ajouté le 23/03/2014 à 10:38 :
Bref, voir ici pour plus d'infos => http://fr.openclassrooms.com/informatique/cours/apprenez-a-programmer-en-c/pointeur-de-structure
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 07/04/2014 19:21 | #


je vais faire une fonction pour inverser les tableaux pour ML_bmp
ex; 01111001 devient 10011110

mais je ne sais pas comment faire? est ce qu'il existe un truc comme ^,| ou &?

Positon Hors ligne Rédacteur Points: 2396 Défis: 57 Message

Citer : Posté le 07/04/2014 19:25 | #


Avec & tu peux isoler un bit, je crois.
Du genre :
253 & 2 //isole le second bit à partir de la gauche, qui est nul
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 07/04/2014 19:31 | #


Fait 0xFF - var
avec une boucle, un sprite de 8*8 est vite fait
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 07/04/2014 19:55 | #


Dark storm a écrit :
0xFF - var


en clair je fais 255(0xFF) - la valeur à inverser
Lephenixnoir Hors ligne Administrateur Points: 24235 Défis: 170 Message

Citer : Posté le 07/04/2014 20:08 | #


Tu fais valeur max - valeur actuelle.
Sur 8 bits, ça fait 255-valeur.
Exemple, 255-23 = 232.
00010111 devient 1110100.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 07/04/2014 20:10 | #


Lephenixnoir a écrit :

00010111 devient 11101000.


tu veux dire?

Ajouté le 07/04/2014 à 20:10 :
en tout cas, ça vas m'aider pour ma future MoveLib
Lephenixnoir Hors ligne Administrateur Points: 24235 Défis: 170 Message

Citer : Posté le 07/04/2014 20:12 | #


J'ai corrigé l'erreur, je ne sais pas si tu as vu ^^'
L'exemple illustre bien le processus, non ?
23 (00010111) devient 232 (11101000) après l'opération.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 08/04/2014 17:15 | #


void MOL_reverse_bmp(char* bmp, int size){
    int i;
    for(i=0;i<size;i++){
        bmp[i]=0xFF-bmp[i];
    }
}


est ce que c'est bon?
Lephenixnoir Hors ligne Administrateur Points: 24235 Défis: 170 Message

Citer : Posté le 08/04/2014 17:19 | #


Oui, c'est bon.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 08/04/2014 18:39 | #


Par contre, là tu ne retourne que des sprites de 8*hauteur.
Pour les autres, ça sera un peu plus complexe.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 08/04/2014 19:20 | #


C'est quoi des sorites ;)(même mon correcteur d'orthographe reconnaît sorite )?

Pour les sorites 8*8 je sais comment sait comment sais coder mais en dessus je n'en ai aucune idée
Lephenixnoir Hors ligne Administrateur Points: 24235 Défis: 170 Message

Citer : Posté le 08/04/2014 19:26 | #


En fait, le problème est le suivant.
Considérons un sprite de 8*x de large.
01100111 00111100 01101101

Après inversion, il est transformé en
11100110 00111100 10110110

Ce qui déjà est différent de l'objectif recherché.

De plus, prenons un sprite de 8*x+3 de large.
01101101 10010011 011[blue]00000[/blue]

Après inversion, cela donne
10110110 11001001 [blue]00000[/blue]110

Et là, les bits significatifs de l'octet de fin disparaissent.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 08/04/2014 19:48 | #


Lephenixnoir a écrit :
En fait, le problème est le suivant.
Considérons un sprite de 8*x de large.
01100111 00111100 01101101

Après inversion, il est transformé en
11100110 00111100 10110110



ç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)
[red]10101110 10101010 10101001 11001001 1011[/red][blue]0000[/blue]

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
11010000 et non 00001101


c'est ça

Précédente 1, 2, 3 ··· 9, 10, 11, 12, 13, 14, 15 ··· 18, 19, 20 Suivante

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 57 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