CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

comment créer tableau, 1 case = 1 bit ?

Lapintade
Lapintade
Niveau 30
02 janvier 2004 à 11:44:51

> Si tu t´embetes a faire ta compression
> avec tes clés de cryptages, etc
> ben t´es pas pret de le finir ton jeu"

Et pourtant ca fait partie du développement !

J´ai bossé sur 4 jeux pros ( dont un sur PC et 2 qui sont dans le commerce), et 2 jeux amateurs GBA et y a jamais eu de compression de developpé.

Donc n´affirme pas que ca fait partie du developpement. Mes example prouve que ce n´est pas toujours le cas.

Un peu d´humulité diantre. Personne ici ne peux connaitre la verité absolue. Et lorsque qu´on la connait pas, on ne s´avance pas autant.

Donc au lieu d´essayer de me contredire systematiquement, essayer de faire preuve d´un soupson d´intelligence et de pas etaler votre science inutilement et de dire aux noobs que GERER LES BITS CA SERT A RIEN POUR LES PETIT DEV AMATEURS FAIT PAR DES NEWBIES.

:)

Lightness1024
Lightness1024
Niveau 10
02 janvier 2004 à 12:02:48

peut etre ke ils peuvent l´éviter.
mais si ils veulent apprendre a le faire c´est tres interressant a implémenter je pense au contraire.
ca apprend les operateurs booléens et tout..

lapintade>
ton front montant tu l´aurais eu si tu connaissais la directive:
__assume;

Lapintade
Lapintade
Niveau 30
02 janvier 2004 à 12:12:31

Je pense que les debutant on un million de choses a apprendre avant de faire ca. ( aussi bien au niveau du langage que de la creation de jeu).

Je n´ai rien contre la gestion des bits, j´ai commencé a programmé en assembleur ( a l´epoque c´etait le plus rapide), donc je fu forcé d´en utiliser beaucoup.

ton front montant tu l´aurais eu si tu > connaissais la directive: __assume;

Desolé, je comprends pas.

Lightness1024, c´est toi qui a fait le site de tutos ( et les tutos) que tu donne quelques messages plus bas ?

Altonfrere
Altonfrere
Niveau 10
02 janvier 2004 à 13:02:27

" J´ai bossé sur 4 jeux pros ( dont un sur PC et 2 qui sont dans le commerce), et 2 jeux amateurs GBA et y a jamais eu de compression de developpé."

Ne pense pas être le seul à bosser ( ou avoir bossé) dans les jeux. Ce qui m´étonne c´est qu´en ayant fait qqchose sur GBA il ne t´est jamais venu à l´idée de compresser un peu tes données!? Remarque tout dépend du jeu évidemment. Ca prouve au moins que les projets sur lesquels tu bossais n´avaient pas besoin de tout cela. Mais pourtant ca existe, plus que tu ne le crois je pense.

" Donc n´affirme pas que ca fait partie du developpement. Mes example prouve que ce n´est pas toujours le cas."

Je n´ai jamais dit que c´était indispensable ni systématique dans un développement. Seulement beaucoup de développements doivent trouver des solutions à ces problèmes ( compression, protection...).

" Un peu d´humulité diantre. Personne ici ne peux connaitre la verité absolue. Et lorsque qu´on la connait pas, on ne s´avance pas autant."

Je ne m´avance pas mais tu semblais prétendre que la question est à la base inutile puisque soit disant posée sur un forum de " noobs" . .. Si le but est seulement d´afficher un sprite ou se servir d´outils de création à la MordMoiLeMaker . . bin c´est un peu triste non ?

Ruffi
Ruffi
Niveau 9
02 janvier 2004 à 13:23:31

Je vais pas debatre avec vous, je vais juste tenter de repondre à la question :

comment créer tableau, 1 case = 1 bit ?

bool tab[n]; / / remplacer n par une valeur constante
ou
bool *tab; / / si tu ne conais pas a l´avance la taille de ton tableau
tab = new tab[n];

C bon, non ?

Ruffi
Ruffi
Niveau 9
02 janvier 2004 à 13:27:06

Zut, tu le fait en C.
tit rectification :
Fait un maloc a la place de faire new.

maider
maider
Niveau 4
02 janvier 2004 à 14:52:32

il le fait en C son tab? un conseil si tu fait de l´allocation de mémoire dynamique passe au C++, le risque en C c´est d´oublier de libérer la mémoire après utilisation et tu plante le programme,en C++ tu crée un constructeur,un destructeur et c´est bon t´à plus à te soucier de libérer ta mémoire après un sous programme

maider
maider
Niveau 4
02 janvier 2004 à 14:55:02

il le fait en C son tab? un conseil si tu fait de l´allocation de mémoire dynamique passe au C++, le risque en C c´est d´oublier de libérer la mémoire après utilisation et tu plante le programme,en C++ tu crée un constructeur,un destructeur et c´est bon t´à plus à te soucier de libérer ta mémoire après un sous programme

davidlebars29
davidlebars29
Niveau 2
02 janvier 2004 à 14:55:33

il le fait en C son tab? un conseil si tu fait de l´allocation de mémoire dynamique passe au C++, le risque en C c´est d´oublier de libérer la mémoire après utilisation et tu plante le programme,en C++ tu crée un constructeur,un destructeur et c´est bon t´à plus à te soucier de libérer ta mémoire après un sous programme

Lapintade
Lapintade
Niveau 30
02 janvier 2004 à 15:18:20

Altonfrere, je me doute que suis pas le seul pro ici, mais j´aimerais simplement que les discussions ne tourne justement pas dans des debats de pros. Y a d´autres forums pour ca.

Sur GBA, j´aurais peut etre besoin de compresser mes données, mais ce jour la j´utiliserai surement le compresseur du bios ou une lib deja faite. Donc meme en faisant de l´amateur avancé ( c´est quand meme avancé sur GBA de remplir toute la ROM :) ) , ben toujours pas besoin de coder mes algos de compression et gerer mes bits dans les clés de cryptage.

Love and peace et essayons de conseiller au mieux les debutants.

Lapintade
Lapintade
Niveau 30
02 janvier 2004 à 15:23:54

Si le but est seulement d´afficher un
sprite ou se servir d´outils de création
à la MordMoiLeMaker
. . bin c´est un peu triste non ?

Non ce qui est un peu triste est de denigrer des outils simples qui permettent de faire des jeux.

kookii
kookii
Niveau 4
02 janvier 2004 à 18:25:48

" kookii, tu ose me dire que j´etale mon ignorance ( tu me donnais meme pas) ben toi tu te caches pas pour etaler ta connerie. Le jour ou tu aura un jeu qui aura 100 millions d´objets, tu m´appellera. "

Ce n´est pas parce que ca ne t´es jamais arrive d´avoir affaire a des données qui ne tiennent pas en memoire que ca n´existe pas.
Un petit exemple, un terrain sous forme de heightmap 10000*10000 quads et hop 100M de Triangles... Si tu veux gerer plusieurs textures, plutot que de mettre un char, tu stockes ca sous forme de bits pour savoir laquelle afficher et tu réduis la taille par ex par 2 ou 3 en memoire.

C´est un exemple, c´est excessif 100M de T pour un terrain, mais on n´est plus y´a 10ans ou il n´y avait que 10000T a faire tenir en mémoire.

De même, pour les applications industrielles ( et je sais de quoi je parle) les modeles ne tiennent pas en mémoire. Il faut les compresser et les decompresser a la volee. Quand tu utilises des scanners a resolution de 0.25*0.25*0.75µm pour scanner un objet ne serait-ce que de 1m^3 je te laisse imaginer le nombre de triangles a gerer... Si tu arrives a me faire tenir ca en memoire sans compresser, depose un brevet :)

Lapintade
Lapintade
Niveau 30
02 janvier 2004 à 18:39:51

Kookie, je ne dis pas que tout ce que tu me dis est faux, mais c´est relativement hors sujet . .. ( tu cites les applis industielles, on en est loin quand meme ici).

Pour les terrains, il existe des millions de methodes qui ne font pas forcement appelle a de la compression ( patchs, streaming, etc . ..).

Je suis le premier a utiliser les bit nu mais c´est assez hardcore et inutile pour les newbies. Si tu message est de dire " oui mais ca existe" alors je ne le conteste pas. OUI CA EXISTE. Heureux ?

Lightness1024
Lightness1024
Niveau 10
02 janvier 2004 à 19:19:24

bon g pas lu le débat, je répond juste a lapintade>

oui c moi ki ai fait le site des tutos :)

et aussi, __assume; c la directive de certains compilateurs pour qu´ils n´optimise pas les lignes de codes qui sont dans une portée.

Lapintade
Lapintade
Niveau 30
02 janvier 2004 à 19:24:02

Si tu me le permets j´ajouterai le lien de ta page tutos dans ma page resumé.

Pour le __assume, je pense que tu doit confondre, j´ai jamais posé de questions de ce genre :) :) Ca doit etre quelqu´un d´autre.

Blawk
Blawk
Niveau 10
02 janvier 2004 à 20:01:07

Pour répondre à la question.

Je pense qu´il vaut mieux utilisé des champs de bits. Le tout bien ordoné en structure et unions.

Bien sûr, des masques sont utilisé, mais comme c´est en natif, c´est beaucoup plus rapide que si on développait une classe.

Kelios
Kelios
Niveau 8
03 janvier 2004 à 00:52:28

Bien, je ne veux pas trop m´interposer dans la luttle générale, même si je suis à 100% avec Aitonfrere.

Quant à la question originelle...

" Je vais pas debatre avec vous, je vais juste tenter de repondre à la question :

comment créer tableau, 1 case = 1 bit ?

bool tab[n]; / / remplacer n par une valeur constante
ou
bool *tab; / / si tu ne conais pas a l´avance la taille de ton tableau
tab = new tab[n];

C bon, non ? "
Non, c´est dommage, mais un bool ne vaut pas un bit, mais un octet entier. Ça fait gaspillage, mais c´est comme ça, c,est un byte entier pour un seul bit...

Aitonfrere propose un bonne solution avec sa classe, quoique il en existe une autre.

C´est un truc dont je pense qu´il n´est pas très connu, mais je peut me tromper... M´enfin, peut importe. Il s´agit des champs de bits. Ça vient du C, c´est une fonctionalité très utile en prog système, où des flags par bits sont très utilisés.

La syntaxe est la suivante:
struct nomDeStructure
{
unsigned int/int NomDuChamp:NombreDeBits;
/ * Autant que nécessaire */
};

La taille des structures est arrondi vers le haut de un byte. Cela signifie que la taille en bits sera un multiple de 8, garatissant une structure d´un nombre entier de bytes. Dans le cas où l´arrondisement est nécessaire, des bits, non accessibles, seront laissés vacants.

ex:
typedef struct Champ
{
int a : 2;
int b : 3;
int c : 6;
};

La taille de la structure sera 2 bytes. La disposition des bits n´est pas définie, et est libre au compilateur.

ex: aabbbccc ccc00000, bbb000aa cccccc00, 000ccccc caa00bbb, ect.

Cepandant, la taille totale d´un champ ne doit pas dépasser celle d´un entier.
int machin : 455 est illégal, par exemple.

Notez cepandant que la norme spécifie bel et bien un entier, mais que il est généralement accepté, aussi, des short et des char... Dans ce cas, la taille en bits du champ ne doit pas dépasser celle de son type.

Considérant ceci, donc, il est très possible de créer autant de bits que nous voulons. Ça serait un peut l´équivalent d´un tableau statique. Par exemeple, un " tableau" de 7 bits:

typepdef struct _Tableau7
{
int b1:1;
int b2:1;
int b3:1;
int b4:1;
int b5:1;
int b6:1;
int b7:1;
} Tableau7;

tableau7 Tableau;

On accède alors à un bit par:

Tableau.b5=0;
Tableau.b3=1;
Tableau.b2=2;/* Illégal! */

Voilà. C´est plus pratique pour des petits tableaux, mais pour des gros, c´est impensable: vous imaginez, 256 champs de bits? :)
Notez aussi que il n´est pas possible de pointer sur un champ ( ainsi que plein d´autres restrictions), interdisant la possibilité d´effectuer de l´allocation dynamique ( tout à fait sensé, d´ailleurs).
Dans ces cas, une grosse classe de dingue, dite méthode Aitonfrere, serait le plus bienvenue.

D´ailleurs que ceci ne sert à rien:

struct _Bit
{
int b:1;
} BitTableau[256];

BitTableau[45].b=1;

En effet, la structure étant arrondi au byte près, _Bit serait alors un tableau de 256 bytes. C´est 8 fois plus gros que nécessaire. malgré tout, c´est possible, mais alors, il vaudrait mieux utiliser des bool, à mon avis...

Kelios
---------

Kelios
Kelios
Niveau 8
03 janvier 2004 à 00:54:30

" la structure étant arrondi au byte près, _Bit serait alors un tableau de 256 bytes."

Euh, je voulais bien sur dire que BitTableau serait un tableau de 256 bytes. Mon erreur :(

Kelios
---------

Kelios
Kelios
Niveau 8
03 janvier 2004 à 01:44:00

Pfff, je me rends compte que j´ai écrit tout ça pour rien... :honte:

" Sans utiliser les champs de bit avec la commande struct."

Résolution 2004: lire TOUT avant de répondre :-d

Kelios
---------

rv15
rv15
Niveau 6
03 janvier 2004 à 12:57:47

c koi ce programme? il m´a l´air interressant...

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment