ANDROID :j'ai pas compris une partie d'un pro
Fermé
clement2012
Messages postés
2
Date d'inscription
vendredi 6 janvier 2012
Statut
Membre
Dernière intervention
7 janvier 2012
-
6 janv. 2012 à 19:40
mamiemando Messages postés 33333 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 31 octobre 2024 - 7 janv. 2012 à 03:10
mamiemando Messages postés 33333 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 31 octobre 2024 - 7 janv. 2012 à 03:10
A voir également:
- ANDROID :j'ai pas compris une partie d'un pro
- Android - Guide
- Android recovery - Guide
- Jouer a pokemon sur android - Guide
- Voir mot de passe wifi android - Guide
- Mode sécurisé android - Guide
3 réponses
mamiemando
Messages postés
33333
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
31 octobre 2024
7 800
Modifié par mamiemando le 6/01/2012 à 22:24
Modifié par mamiemando le 6/01/2012 à 22:24
Tu peux regarder avec un debugger les valeurs que vont prendre les différentes variables pour suivre ce qu'il fait (le moins qu'on puisse dire, c'est qu'il aurait pu commenter la manière dont il a encoder ses formes).
À première vue, pour chacune des 6 formes, il stocke 4 vecteurs de 8 entiers correspondant au dessin de la forme pour chacune de ses 4 orientations.
Les boucles for sont là pour debugguer. Son entier i (l'index qui désigne la forme courante) et l'entier j (l'index qui indique l'orientation) permet d'extraire de la variable shapes la valeur associée à la forme i et l'orientation j. Ainsi pour se trouver au début du vecteur qu'il intéresse et comme ce vecteur contient 8 éléments, il doit se décaler de (i * 4 + j) * 8.
Ensuite je suppose que chacun des shorts est vu comme un masque de 4 bits (soit 4 cases), et dont les valeurs 0 et 1 correspondent aux cases présentes dans la forme ou non.
Par exemple, si le bit de poids fort correspond au bit de signe et les suivants à une décomposition en puissante ce de 2 ( -1 s'encore 1001, 0 s'encode 0000, 1 s'encode 0001, 2 s'encore 0010, 3 s'encode 0011 etc...) avec un short tu peux définir 4 états de case). Reste à voir si c'est réellement dans cet ordre qu'il extrait les bits de ses formes.
Ainsi avec 4 shorts tu définis une matrice 4x4 de bits. Après le principal problème c'est de comprendre dans quel ordre il a stocké les morceaux de forme.
Mais ce n'est pas évident, car manifestement son encodage ne semble pas coller avec ce dernier paragraphe. Par exemple moi j'aurais encodé la forme suivante ainsi :
ce qui donne les 4 entiers :
Ce qui serait pas mal c'est de voir au niveau de sa fonction d'affichage l'opération qu'il fait, et qui permettrait de trancher sur comment il décode ses formes.
En tout pour moi, ce n'est pas un "pro". Certes c'est bien d'écrire un code optimisé, mais un pro "sérieux" prendrait commenterait son code pour le rendre réutilisable et lisible, avec des vrais noms de variables, des explications sur l'encodage etc...
L'autre soucis c'est que son code dépend très fortement de comment chaque short est stocké (big endian vs little endian) ce qui sous entend en tout cas qu'en C, selon l'architecture, encoder les shapes directement avec des entiers et sans passer par des masques aurait toutes les chances de déconner.
À première vue, pour chacune des 6 formes, il stocke 4 vecteurs de 8 entiers correspondant au dessin de la forme pour chacune de ses 4 orientations.
Les boucles for sont là pour debugguer. Son entier i (l'index qui désigne la forme courante) et l'entier j (l'index qui indique l'orientation) permet d'extraire de la variable shapes la valeur associée à la forme i et l'orientation j. Ainsi pour se trouver au début du vecteur qu'il intéresse et comme ce vecteur contient 8 éléments, il doit se décaler de (i * 4 + j) * 8.
Ensuite je suppose que chacun des shorts est vu comme un masque de 4 bits (soit 4 cases), et dont les valeurs 0 et 1 correspondent aux cases présentes dans la forme ou non.
Par exemple, si le bit de poids fort correspond au bit de signe et les suivants à une décomposition en puissante ce de 2 ( -1 s'encore 1001, 0 s'encode 0000, 1 s'encode 0001, 2 s'encore 0010, 3 s'encode 0011 etc...) avec un short tu peux définir 4 états de case). Reste à voir si c'est réellement dans cet ordre qu'il extrait les bits de ses formes.
Ainsi avec 4 shorts tu définis une matrice 4x4 de bits. Après le principal problème c'est de comprendre dans quel ordre il a stocké les morceaux de forme.
Mais ce n'est pas évident, car manifestement son encodage ne semble pas coller avec ce dernier paragraphe. Par exemple moi j'aurais encodé la forme suivante ainsi :
..x. ..x. .xx. ....
0010 0010 0110 0000
ce qui donne les 4 entiers :
2 2 6 0
Ce qui serait pas mal c'est de voir au niveau de sa fonction d'affichage l'opération qu'il fait, et qui permettrait de trancher sur comment il décode ses formes.
En tout pour moi, ce n'est pas un "pro". Certes c'est bien d'écrire un code optimisé, mais un pro "sérieux" prendrait commenterait son code pour le rendre réutilisable et lisible, avec des vrais noms de variables, des explications sur l'encodage etc...
L'autre soucis c'est que son code dépend très fortement de comment chaque short est stocké (big endian vs little endian) ce qui sous entend en tout cas qu'en C, selon l'architecture, encoder les shapes directement avec des entiers et sans passer par des masques aurait toutes les chances de déconner.
clement2012
Messages postés
2
Date d'inscription
vendredi 6 janvier 2012
Statut
Membre
Dernière intervention
7 janvier 2012
Modifié par mamiemando le 7/01/2012 à 03:06
Modifié par mamiemando le 7/01/2012 à 03:06
Premièrement je vous remercie pour toutes les explications , et 2iement franchement je suis tout a fait daccord avec vous, la personne qua programmer le jeux n'a pas du tout laisser de commentaire ni d'indications ni rien! du coup sa facilite pas la tache pour comprendre!!
apart sa la compilation du programme marche tres bien , laffichage c 10/10! j'ai rien a adire la dessu!
mais pour un debutant comme moi c pa tro evident ! donc je vous propose de transmettre tout le code afin de voir l'execution sa va peut 'etre' vous aidé a mieu m'expliquer la logique du développeur :D !!
Merci encore une fois!
apart sa la compilation du programme marche tres bien , laffichage c 10/10! j'ai rien a adire la dessu!
mais pour un debutant comme moi c pa tro evident ! donc je vous propose de transmettre tout le code afin de voir l'execution sa va peut 'etre' vous aidé a mieu m'expliquer la logique du développeur :D !!
Merci encore une fois!
mamiemando
Messages postés
33333
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
31 octobre 2024
7 800
7 janv. 2012 à 03:10
7 janv. 2012 à 03:10
Merci de soigner l'orthographe, parce que là c'est un peu dur.
Bah ce que je disais sur l'affichage, c'est qu'il faudrait comprendre ce qu'il fait de ses bs.groupx etc... et de comment il utilise shape par la suite. C'est pour ça que je te disais de regarder comment était codée sa fonction d'affichage.
Je pense que si tu débutes en programmation, tu devrais partir sur un exemple plus simple. Car sans vouloir dire que je suis super balèze en programmation, je pense me débrouiller à peu près et pour moi, ce programme est assez peu lisible.
Si tu connais la personne qui a développé le programme, le plus simple serait sûrement de lui demander des précisions...
Voilà sinon petit erratum sur ce que j'ai dit plus haut, les histoires d'encodage ne surviennent probablement pas en android car comme c'est du java, normalement l'architecture du système ne devrait pas avoir d'impact. Il faut juste savoir quelle convention est adoptée en java.
Bah ce que je disais sur l'affichage, c'est qu'il faudrait comprendre ce qu'il fait de ses bs.groupx etc... et de comment il utilise shape par la suite. C'est pour ça que je te disais de regarder comment était codée sa fonction d'affichage.
Je pense que si tu débutes en programmation, tu devrais partir sur un exemple plus simple. Car sans vouloir dire que je suis super balèze en programmation, je pense me débrouiller à peu près et pour moi, ce programme est assez peu lisible.
Si tu connais la personne qui a développé le programme, le plus simple serait sûrement de lui demander des précisions...
Voilà sinon petit erratum sur ce que j'ai dit plus haut, les histoires d'encodage ne surviennent probablement pas en android car comme c'est du java, normalement l'architecture du système ne devrait pas avoir d'impact. Il faut juste savoir quelle convention est adoptée en java.