Matrice 2D sous TurboC - Programmation
Marsh Posté le 18-09-2001 à 09:33:38
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 !
Marsh Posté le 18-09-2001 à 09:34:02
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 !
Marsh Posté le 18-09-2001 à 09:37:08
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...
Marsh Posté le 18-09-2001 à 18:39:32
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));
Marsh Posté le 18-09-2001 à 19:51:34
t'es limité à des blocs de 64 Ko en mode 16 bit, ceci explique peut être celà
Marsh Posté le 19-09-2001 à 01:44:40
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]
Marsh Posté le 18-09-2001 à 02:00:39
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...