Forum Graph100

Forum Graph100

Vous n'êtes pas identifié.

Annonce

Bonjour et bienvenue sur le nouveau Forum Graph100 !
L'intégralité des données a été transférée sur un forum PunBB et tout les comptes sont fonctionnels avec le même nom d'utilisateur et mot de passe.
Un wiki est aussi disponible avec le même compte ! N'oubliez pas de remettre votre avatar, bon surf !
Pour plus d'informations, consultez ce post.

#1 02 Jun 2002 15:38:09

casioworld
Programmeur Graph100
Lieu: Palaiseau (Essonne)
Date d'inscription: 08 Feb 2002
Messages: 1843
Site web

je defis quiconque de trouver l'erreur !!!

je defis qui compte de trouver l'erreur :

#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <stdlib.h>
#include <bios.h>

void inv_pixel(unsigned short int x, unsigned short int y)
    {
    asm push ax;
    asm push cx;
    asm push dx;
    asm mov cx,x;
    asm mov dx,y;
    asm mov ax,0x1A20;
    asm mov es,ax;
    asm mov si,0x003f;
    asm sub si,dx;
    asm sub cx,0x80;
    asm not cx;
    asm push cx;
    asm and cl,0xf8;
    asm shl cx,0x03;
    asm add si,cx;
    asm pop cx;
    asm and cl,0x07;
    asm mov al,es:[si];
    asm ror al,cl;
    asm not al;
    asm and al,1;
    asm mov ah,0xfe;
    asm rol ah,cl;
    asm and es:[si],ah;
    asm mov ah,al;
    asm rol ah,cl;
    asm or es:[si],ah;
    asm pop dx;
    asm pop cx;
    asm pop ax;
    }

char mur[1][7][18] =
{{
1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,0,1,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,
1,0,1,0,1,0,1,1,1,0,1,1,1,1,1,1,1,1,
1,0,1,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1,
1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,0,0,1,0,0,0,1,1,1,0,0,1,1,1,1},
};

char level[1][1][7] =
{1,1,1,1,0,1,1,};

void drawmur(unsigned char x, unsigned char y)
{char K,L;
for(K=0;K<18;K++){
for(L=0;L<7;L++){
if(mur[0][L][K]==1) inv_pixel(x + K,y + L);
}}}

int main()
{int I,F;
for(F=0;F<7;F=++){
if(level[0][1][F]==1){drawmur(F*18+5,56);}
getch();
retunr(0);
}
 

ca fait a peu pres 3heure que j'essaye de trouver l'erreur dans ce code.
EN fait je veux afficher le niveau d'un jeu.
Pour cela j'ai mis le level dans un tableau. les 1 corresponde à la presence d'un mur et le zero à un vide. apres "int main()" c'est un fonction qui lit le talbeau (ou chaine de caractere) en se deplacant vers la droite. Quand il y a un 1, un mur s'affiche. Mais ya pas de mur qui s'affiche  :cry:
Alors j'aimerais que quelqu'un m'aide si vous avez du temps.

@+

au fait le probleme ne peut pas venir de ce qu'il ya  au dessus de int main() parceque se sont soit des truc que j'ai utilisé dans virtualboxe ou des fonction issu de pong.


- http://www.casioworld.wb.st  --> plus grande base de données pour Graph100+
- http://efreidelirium.free.fr --> vive l'EFREI mdr

Hors ligne

 

#2 02 Jun 2002 16:07:59

KTr
Haut fonctionnaire graph100.com
Lieu: Saint Etienne
Date d'inscription: 19 Mar 2002
Messages: 1909
Site web

Re: je defis quiconque de trouver l'erreur !!!

Code:

int main() 
{int I,F; 
for(F=0;F<7;F=++){ 
if(level[0][1][F]==1){drawmur(F*18+5,56);} 
getch(); 
retunr(0); 
} 

Le F=++ c normal ?? ---> F++
Sinon esaye de remplacer les char H,L; par des int H,L;
Ca ca ma fait des erreur ke j'ai jammais pu comprendre.... (San dépassement de capacité ds mon code...)


(¯`·.¸¸.·´¯`·.¸¸.-> www.ktr.fr.fm  ktr@fr.fm <-.¸¸.·´¯`·.¸¸.·´¯)

Hors ligne

 

#3 02 Jun 2002 16:19:52

Spesiel
Testeur G100
Lieu: Le Mans
Date d'inscription: 06 Feb 2002
Messages: 598
Site web

Re: je defis quiconque de trouver l'erreur !!!

Je crois ke tu as raison, KTr, il n'y aucune autre erreur dans ce code.

@+


No matter where you are, everyone is always connected...

Hors ligne

 

#4 02 Jun 2002 16:27:03

KTr
Haut fonctionnaire graph100.com
Lieu: Saint Etienne
Date d'inscription: 19 Mar 2002
Messages: 1909
Site web

Re: je defis quiconque de trouver l'erreur !!!

Ouais si kelkun c pkoi ya des char ki bugs la ou ils ne devrai pa bugger ....?


(¯`·.¸¸.·´¯`·.¸¸.-> www.ktr.fr.fm  ktr@fr.fm <-.¸¸.·´¯`·.¸¸.·´¯)

Hors ligne

 

#5 02 Jun 2002 16:33:56

Spesiel
Testeur G100
Lieu: Le Mans
Date d'inscription: 06 Feb 2002
Messages: 598
Site web

Re: je defis quiconque de trouver l'erreur !!!

J'viens de faire un test en speed, ac la modif suivante:

F=++ --> F=F+1

(autant ne pas s'emmerder...)

Ca marche nikel (testé ac Visual C++ 6.0 SE)


No matter where you are, everyone is always connected...

Hors ligne

 

#6 02 Jun 2002 16:46:58

casioworld
Programmeur Graph100
Lieu: Palaiseau (Essonne)
Date d'inscription: 08 Feb 2002
Messages: 1843
Site web

Re: je defis quiconque de trouver l'erreur !!!

voila ce que j'ai testé et ca ne marche toujours pas:
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <stdlib.h>
#include <bios.h>

void inv_pixel(unsigned short int x, unsigned short int y)
{
asm push ax;
asm push cx;
asm push dx;
asm mov cx,x;
asm mov dx,y;
asm mov ax,0x1A20;
asm mov es,ax;
asm mov si,0x003f;
asm sub si,dx;
asm sub cx,0x80;
asm not cx;
asm push cx;
asm and cl,0xf8;
asm shl cx,0x03;
asm add si,cx;
asm pop cx;
asm and cl,0x07;
asm mov al,es:[si];
asm ror al,cl;
asm not al;
asm and al,1;
asm mov ah,0xfe;
asm rol ah,cl;
asm and es:[si],ah;
asm mov ah,al;
asm rol ah,cl;
asm or es:[si],ah;
asm pop dx;
asm pop cx;
asm pop ax;
}

char mur[1][7][18] =
{{
1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,0,1,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,
1,0,1,0,1,0,1,1,1,0,1,1,1,1,1,1,1,1,
1,0,1,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1,
1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,0,0,1,0,0,0,1,1,1,0,0,1,1,1,1}};

int level[1][1][7] =
{1,1,1,1,0,1,1,};

void drawmur(unsigned char x, unsigned char y)
{char K,L;
for(K=0;K<18;K++){
for(L=0;L<7;L++){
if(mur[0][L][K]==1) inv_pixel(x + K,y + L);
}
}
}

int main()
{int F;
for(F=0;F<7;F++)
{if(level[0][1][F]==1){drawmur(F*18+5,56);}}
getch();
return(0);
}

c'est tout de meme etrange !!!
merci tout de meme de m'aider.
y a un bug inexpliquable !!


- http://www.casioworld.wb.st  --> plus grande base de données pour Graph100+
- http://efreidelirium.free.fr --> vive l'EFREI mdr

Hors ligne

 

#7 02 Jun 2002 16:52:03

casioworld
Programmeur Graph100
Lieu: Palaiseau (Essonne)
Date d'inscription: 08 Feb 2002
Messages: 1843
Site web

Re: je defis quiconque de trouver l'erreur !!!

c'est aussi essayer avec int au lieu de char mais toujours rien.
va falloir que je trouve une nouvelle idee de jeu.
mais quand meme c'est pas normal !! :?


- http://www.casioworld.wb.st  --> plus grande base de données pour Graph100+
- http://efreidelirium.free.fr --> vive l'EFREI mdr

Hors ligne

 

#8 02 Jun 2002 19:49:47

2072
Programmeur Graph100
Lieu: Somewherebourg
Date d'inscription: 29 Jan 2002
Messages: 2056
Site web

Re: je defis quiconque de trouver l'erreur !!!

À quoi ça sert de faire

Code:

int level[1][1][7] = {1,1,1,1,0,1,1,};
 

quand on peut faire (avec en plus une faute en moins  ",}")

Code:

int leve[7] = {1,1,1,1,0,1,1}; 

et pareil pour :

Code:

char mur[1][7][18] = 
{{ 
1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1, 
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 
1,0,1,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1, 
1,0,1,0,1,0,1,1,1,0,1,1,1,1,1,1,1,1, 
1,0,1,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1, 
1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 
1,1,1,0,0,1,0,0,0,1,1,1,0,0,1,1,1,1}}; 

Alors qu'il est plus claire et plus simple d'écrire

Code:

char mur[7][18] = 
{
    {1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1},
    {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
    {1,0,1,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1}, 
    {1,0,1,0,1,0,1,1,1,0,1,1,1,1,1,1,1,1}, 
    {1,0,1,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1}, 
    {1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
    {1,1,1,0,0,1,0,0,0,1,1,1,0,0,1,1,1,1}
};

Et puis voilà la faute majeure (qui est sans doute la cause de ton problème) engendrée par cette organisation pour le moins étrange :

Code:

if(level[0][1][F]==1){drawmur(F*18+5,56);}}

//le level[0][1] correspond a un emplacement mémoire qui peut contenir n'importe quoi, il aurait fallu écrire :

if(level[0][0[F]==1){drawmur(F*18+5,56);}}

Bon voilà tout le code corrigé et réorganisé de mainière infiniment plus lisible

Code:

#include <stdio.h> 
#include <conio.h> 
#include <dos.h> 
#include <stdlib.h> 
#include <bios.h> 

void inv_pixel(unsigned short int x, unsigned short int y) 
{ 
    asm {
    push ax; 
    push cx; 
    push dx; 
    mov cx,x; 
    mov dx,y; 
    mov ax,0x1A20; 
    mov es,ax; 
    mov si,0x003f; 
    sub si,dx; 
    sub cx,0x80; 
    not cx; 
    push cx; 
    and cl,0xf8; 
    shl cx,0x03; 
    add si,cx; 
    pop cx; 
    and cl,0x07; 
    mov al,es:[si]; 
    ror al,cl; 
    not al; 
    and al,1; 
    mov ah,0xfe; 
    rol ah,cl; 
    and es:[si],ah; 
    mov ah,al; 
    rol ah,cl; 
    or es:[si],ah; 
    pop dx; 
    pop cx; 
    pop ax;
    }
} 

char mur[7][18] = 
{
    {1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1},
    {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
    {1,0,1,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1}, 
    {1,0,1,0,1,0,1,1,1,0,1,1,1,1,1,1,1,1}, 
    {1,0,1,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1}, 
    {1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
    {1,1,1,0,0,1,0,0,0,1,1,1,0,0,1,1,1,1}
}; 

int level[7] = {1,1,1,1,0,1,1}; 

void drawmur(unsigned char x, unsigned char y) 
{
    char K, L; 
    for (K = 0; K < 18; K++)
    { 
    for (L = 0; L < 7; L++)
    { 
        if (mur[L][K])
        inv_pixel(x + K, y + L); 
    } 
    } 
} 

int main() 
{
    int F;

    for (F = 0; F < 7; F++) 
    {
    if (level[F])
    {
        drawmur(F * 18 + 5, 56);
    }
    }

    getch();

    return 0; 
} 


Voilà je l'ai testé et ça dessine un mur en bas de l'écran, l'organisation et primordiale en programation elle permet d'éviter ce genre d'erreur, et tu devrai utiliser VIM comme éditeur (il met tout en couleur et indent le text tout seul).

Bon aller @+ et bon courrage pour la suite !


-~2072~-
Paid Emails
[URL=http://www.2072productions.com]2072productions.com[/URL]
[URL=http://www.casiocalc.org]casiocalc.org[/URL]

Hors ligne

 

#9 03 Jun 2002 01:52:06

casioworld
Programmeur Graph100
Lieu: Palaiseau (Essonne)
Date d'inscription: 08 Feb 2002
Messages: 1843
Site web

Re: je defis quiconque de trouver l'erreur !!!

NICKEL !!!!!!!!!!!!!!!!!!!!!!! big_smile  big_smile  big_smile  big_smile
comme quoi un rien change tout. merci bcp !!!!!!!!!!!!!!!!!! à tous !!!!!!!!
au bout de 3heures (il faut le temps de envoyer le .exe à la graph100 et ca prend un temps fou !!!).

          merci, je tretourne à ma prog !! big_smile  big_smile


- http://www.casioworld.wb.st  --> plus grande base de données pour Graph100+
- http://efreidelirium.free.fr --> vive l'EFREI mdr

Hors ligne

 

#10 03 Jun 2002 04:18:25

Starcraftkiller
Modérateur (e)
Lieu: Livry Gragan (un bled en banli
Date d'inscription: 05 May 2002
Messages: 52

Re: je defis quiconque de trouver l'erreur !!!

tes variables de dessins (F, K etc...) devraient pas etre en char mais en int
(c riské en fait a mon avis....)


@+
Starcraftkiller@wanadoo.fr

Hors ligne

 

#11 03 Jun 2002 07:43:49

2072
Programmeur Graph100
Lieu: Somewherebourg
Date d'inscription: 29 Jan 2002
Messages: 2056
Site web

Re: je defis quiconque de trouver l'erreur !!!

tant qu'elle sont comprise entre 0 et 255 c'est bon (pour des unsigned char) sinon entre -127 et +127 pour des char.


-~2072~-
Paid Emails
[URL=http://www.2072productions.com]2072productions.com[/URL]
[URL=http://www.casiocalc.org]casiocalc.org[/URL]

Hors ligne

 

#12 03 Jun 2002 12:58:23

deather
Membre Communauté Graph100
Lieu: Banlieue parisienne (Fresnes)
Date d'inscription: 05 May 2002
Messages: 909

Re: je defis quiconque de trouver l'erreur !!!

ya un truc ke je comprend pas c koa la diff entre int et char ? (il me semble ke lun stocke tel kel et lautre comverti en bit ou un truc kom sa). merci !


..:: Deather ::..
deather.dede@gmail.com.NO.SPAM

Hors ligne

 

#13 03 Jun 2002 14:44:21

KTr
Haut fonctionnaire graph100.com
Lieu: Saint Etienne
Date d'inscription: 19 Mar 2002
Messages: 1909
Site web

Re: je defis quiconque de trouver l'erreur !!!

Bah moi ce ke je c c ke char c stoké sur un octet donc ca va de 0 à 0xFF (255) alors k'un int c codé sur plusieurs octets....
Sinon je c pa pkoi desfoi sans dépasser la capaciter les char plantent...


(¯`·.¸¸.·´¯`·.¸¸.-> www.ktr.fr.fm  ktr@fr.fm <-.¸¸.·´¯`·.¸¸.·´¯)

Hors ligne

 

#14 03 Jun 2002 16:44:50

2072
Programmeur Graph100
Lieu: Somewherebourg
Date d'inscription: 29 Jan 2002
Messages: 2056
Site web

Re: je defis quiconque de trouver l'erreur !!!

Quand ça marche pas c'est que tu essaye de comparer des int avec des char, dans certaines circonstance... dans ce cas il faut mettre un cast


-~2072~-
Paid Emails
[URL=http://www.2072productions.com]2072productions.com[/URL]
[URL=http://www.casiocalc.org]casiocalc.org[/URL]

Hors ligne

 

#15 03 Jun 2002 17:29:04

KTr
Haut fonctionnaire graph100.com
Lieu: Saint Etienne
Date d'inscription: 19 Mar 2002
Messages: 1909
Site web

Re: je defis quiconque de trouver l'erreur !!!

Non c t ds cette boucle :

Code:

  for(int l = 54 ; l >= 20 ; l-=17)
  {
    for(int k = 118 ; k >= 26 ; k-=46)
    {
      for (int i = 0 ; i < 16 ; i++)
      {
    for (int j = 0 ; j < 11 ; j++)
    {
      if ((l != 37) || (k != 72)) gpixel(k - i , l - j, ktrtab[j][i]);
    }
      }
    }
  }

avec des unsigned char ca marchait pa  !


(¯`·.¸¸.·´¯`·.¸¸.-> www.ktr.fr.fm  ktr@fr.fm <-.¸¸.·´¯`·.¸¸.·´¯)

Hors ligne

 

#16 04 Jun 2002 13:52:20

2072
Programmeur Graph100
Lieu: Somewherebourg
Date d'inscription: 29 Jan 2002
Messages: 2056
Site web

Re: je defis quiconque de trouver l'erreur !!!

Oui parce que tu soustrayait 46 à 118 jus qu'à que K(118) devienne inférieur à 26 sauf que 118 - 46 = 72 et 72 - 46 = 26 et donc 26 - 46 = -20 sauf que K était unsigned et n'était donc pas égal à -20 mais à 235... la boucle était infinie...


-~2072~-
Paid Emails
[URL=http://www.2072productions.com]2072productions.com[/URL]
[URL=http://www.casiocalc.org]casiocalc.org[/URL]

Hors ligne

 

#17 04 Jun 2002 18:03:44

KTr
Haut fonctionnaire graph100.com
Lieu: Saint Etienne
Date d'inscription: 19 Mar 2002
Messages: 1909
Site web

Re: je defis quiconque de trouver l'erreur !!!

ben non ?? la boucle n'était pa infini ms 2 d truc n'apparaissaient pa !


(¯`·.¸¸.·´¯`·.¸¸.-> www.ktr.fr.fm  ktr@fr.fm <-.¸¸.·´¯`·.¸¸.·´¯)

Hors ligne

 

#18 04 Jun 2002 21:19:56

2072
Programmeur Graph100
Lieu: Somewherebourg
Date d'inscription: 29 Jan 2002
Messages: 2056
Site web

Re: je defis quiconque de trouver l'erreur !!!

et où étaient les unsigned char ? peut-être que le compilateur faisait des conversions automatiques mais c'est louche !


-~2072~-
Paid Emails
[URL=http://www.2072productions.com]2072productions.com[/URL]
[URL=http://www.casiocalc.org]casiocalc.org[/URL]

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr