Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1813 connectés 

  FORUM HardWare.fr
  Programmation

  Matrice 2D sous TurboC

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Matrice 2D sous TurboC

n°60000
lkolrn
<comment ça marche?>
Posté le 18-09-2001 à 02:00:39  profilanswer
 

Salut,
j'ai un gros problème: pour faire un petit jeu en C mode graphique de base sous TurboC (avec <graphics.h> ), j'ai besoin de créer une matrice 2D (de type char **) qui représente la surface de jeu...
 
Seulement le compilo il refuse d'afficher une matrice dont la taille est supérieure à 220*220... Alors je sais pas si c le max qu'on peut obtenir avec ce compilo ou koi, mais c nul, moi il me fo + !
 
Comment on fé SVP??? (si c pas possible avec TurboC++, svp de me donner la ou les références de compilos de préférence en C ou C++ avec lesquels ça marche)
 
Merci d'avance...

mood
Publicité
Posté le 18-09-2001 à 02:00:39  profilanswer
 

n°60009
grosmethos
Posté le 18-09-2001 à 09:33:38  profilanswer
 

pourquoi tu t'emmerde avec des pointeurs pour ta matrice !? fati tout simplement un
char[NbLignes][NbColonnes];
tu peux aussi bosser avec des pointeurs quand tu fais ça, et j'pense pas que tu sera limité à 220*220.
 
Autre chose, pourquoi t'utilise TurboC, tu sais de quand ça date ça ? d'y a au moins 10 ans, autant dire, de la préhistoire de l'info... Alors qu'il existe des compilo qui font tout à ta place (ou presque, j'me comprends). La programmation dos, avec graphics.h, y a pas plus ...pourri !
En fait je parle en connaissance de cause, parce que g fait comme toi au début, j'avais que ça, et ces cons des IUT me faisaient bosser sur TurboC.
Alors, un conseil, apprends le C++ si tu connais pas encore (si tu connais le C et la prog objet, c pas trop dur !), procure toi Visual C++ 5 ou 6 (ou C++ Builder, de Borland, tu seras moins dépaysé peut être), ensuite, pour les jeux, apprends à utiliser DirectX, ou Open Gl.
 
Bonne chance, y a qd même du boulot !:D

n°60010
El_gringo
Posté le 18-09-2001 à 09:34:02  profilanswer
 

pourquoi tu t'emmerde avec des pointeurs pour ta matrice !? fati tout simplement un
char[NbLignes][NbColonnes];
tu peux aussi bosser avec des pointeurs quand tu fais ça, et j'pense pas que tu sera limité à 220*220.
 
Autre chose, pourquoi t'utilise TurboC, tu sais de quand ça date ça ? d'y a au moins 10 ans, autant dire, de la préhistoire de l'info... Alors qu'il existe des compilo qui font tout à ta place (ou presque, j'me comprends). La programmation dos, avec graphics.h, y a pas plus ...pourri !
En fait je parle en connaissance de cause, parce que g fait comme toi au début, j'avais que ça, et ces cons des IUT me faisaient bosser sur TurboC.
Alors, un conseil, apprends le C++ si tu connais pas encore (si tu connais le C et la prog objet, c pas trop dur !), procure toi Visual C++ 5 ou 6 (ou C++ Builder, de Borland, tu seras moins dépaysé peut être), ensuite, pour les jeux, apprends à utiliser DirectX, ou Open Gl.
 
Bonne chance, y a qd même du boulot !:D

n°60011
BENB
100% Lux.
Posté le 18-09-2001 à 09:37:08  profilanswer
 

Comment refuse-t-il ?
en Turbo C, en 16 bits ?
220*220 = 48 400 soit 94-95 Ko (ou le double en fct du modele memoire) ?
Quel modele memoire utilises-tu?
comment declares-tu ce tableau ?
 
En Dos il est difficile d'allour des blocs de plus de 64 Ko...
les methodes...  

  • modele memoire hudge
  • allouer un tableaux de 220 pointeurs puis 220 tableaux d'elements comme cela tu partitionnes ton bloc...
  • passer en win32

n°60130
lkolrn
&lt;comment ça marche?&gt;
Posté le 18-09-2001 à 18:39:32  profilanswer
 

REPONSE aux QUESTIONS
 
Comment refuse-t-il ?
-> ben si, il s'exécute plus...
 
en Turbo C, en 16 bits ?  
-> oui-oui
 
220*220 = 48 400 soit 94-95 Ko (ou le double en fct du modele memoire) ?
-> je sais c pas bcp...
 
Quel modele memoire utilises-tu?  
-> Large, soit 1M pour le code et 1M pour les données statiques
 
comment declares-tu ce tableau ?
-> char ** mat;
 
puis j'alloue avec MAXX = MAXY = 220
 
mat = (char **) malloc (MAXX * sizeof (char *));
for (x=0; x < MAXX; x++)
    *(mat+x) = (char *) malloc (MAXY * sizeof (char));

n°60148
ddr555
Posté le 18-09-2001 à 19:51:34  profilanswer
 

t'es limité à des blocs de 64 Ko en mode 16 bit, ceci explique peut être celà

n°60229
tfj57
Posté le 19-09-2001 à 01:44:40  profilanswer
 

Lorsque la taille des tableaux dépassaient 64K, c'était la galère !!! Heureusement que cela n'existe plus en 32 bits.
Si tu veux rester en 16 bits, voici une solution au problème :
 
#include <alloc.h>
 
#define NX 400
#define NY 300
 
typedef char LIGNE[NX];
LIGNE huge *tab; /* huge pour pointeurs > 64k */
 
main()
{
    int x,y;
    tab=farmalloc((long)sizeof(LIGNE)*NY);
    if (!tab)
    {
        /* erreur d'allocation ...*/
        abort();
    }
    for (y=0;y<NY;y++)
        for (x=0;x<NX;x++)
            tab[y][x]=0;
}
 
Salutations

 

[edtdd]--Message édité par tfj57--[/edtdd]

n°60233
lkolrn
&lt;comment ça marche?&gt;
Posté le 19-09-2001 à 05:09:37  profilanswer
 

MERCI pour ces renseignements UTILES...! :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  Matrice 2D sous TurboC

 

Sujets relatifs
Open GL multitexturing et la matrice de textures....[ada95] comment afficher une matrice?
[math] projection perspective et matrice projective 
Plus de sujets relatifs à : Matrice 2D sous TurboC


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR