Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

[C]programme graphique qui Bug



  1. #1
    Tix

    [C]programme graphique qui Bug


    ------

    salut

    voila mon code (mon premier vrais programme graphique depuis que j'ai découvert TurboC ilya quelques jours), c'ets un effet plasma sous VGA, comme en qbasic
    Code : C
    Code:
    #include <stdlib.h>
    #include <stdio.h>
    #include <dos.h>
    #include <io.h>
    
    static char Palette[4*3] = {0,0,0,0,0,63,0,63,0,63,0,0};
    union REGS regset;
    struct SREGS sregs;
    
    void load13h()
    {
            regset.x.ax = 0x0013;
            int86(0x10, &regset, &regset);
    }
    void exit13h()
    {
            getch();
            regset.x.ax = 0x0003;
            int86(0x10, &regset, &regset);
    }
    void drawpx(int x, int y, int coul)
    {
            int ptr = (320*y+x);
            poke(0xA000,ptr,coul);
    }
    int getpx(int x, int y)
    {
            int ptr = (320*y+x);
            return peek(0xA000,ptr);
    }
    void pal( unsigned char i, unsigned char r, unsigned char v, unsigned char b)
    {
    
            outp(0x3c8, i);
            outp(0x3c9, r);
            outp(0x3c9, v);
            outp(0x3c9, b);
    }
    
    int main()
    {
    
    int color;
    int CA,CB,CC,CD,CE,CF,CG,CH,CI;
    long ptr;
    load13h();
            for(ptr=0; ptr<=64000;ptr++)
            {
                    color=rand()%255;
                    poke(0xA000,ptr,color);
            }
            for(ptr=0; ptr<=63679;ptr++)
            {
                    CA=peek(0xA000,ptr+321);
                    CB=peek(0xA000,ptr+320);
                    CC=peek(0xA000,ptr-321);
                    CD=peek(0xA000,ptr-320);
                    CE=peek(0xA000,ptr+319);
                    CF=peek(0xA000,ptr-319);
                    CG=peek(0xA000,ptr+1);
                    CH=peek(0xA000,ptr-1);
                    CI=peek(0xA000,ptr);
                    color = (CA+CB+CC+CD+CE+CF+CG+CH+CI)/9;
                    poke(0xA000,ptr,color);
            }
    exit13h();
    
    }

    mais voila, il me plante windows avec une opération non conforme.

    voyez vous une erreur ?

    merci, ++ Tix.

    -----

  2. Publicité
  3. #2
    Pole

    Re : [C]programme graphique qui Bug

    Mieux vaut apprendre la SDL, c'est portable et ça fait une jolie fenêtre de taille réglable,pas du 320*200.
    De plus, tu peux facilement gérer la souris,le joystick,le clavier....
    Sinon, essaye allegro.
    Ceci devrait t'aider : http://loka.developpez.com/tutoriel/sdl/
    Passe sous Code::Blocks,ou Dev-C++, c'est bien mieux que TurboC qui est en fenêtre Dos. http://www.codeblocks.org/
    C'est gratuit!!!
    Dev-C++ me refuse les union donc sur ton prog,je ne peux pas t'aider.

    Bonne programmation,Pole.
    Pour comprendre la récursivité croisée, il faut comprendre les arbres d'appels. Et vice versa.

  4. #3
    Tix

    Re : [C]programme graphique qui Bug

    lol, me prend pas pour un homme préhistorique, j'utilise turboC par nécessité (sur un 386 )
    et CodeBlocks, la SDL ect ne me permettent pas de faire ce que je souhaite, et surtout pas d'etyre utilisé sous dos.

    merci pour ta réponse mais une aide ciblée pour mon probleme m'aidera surement plus efficacement

    ++ Tix.

  5. #4
    Pole

    Re : [C]programme graphique qui Bug

    Un 386, ça existe toujours?
    Pour la palette, il me semble qu'il faut faire des interruptions pour la modifier.
    Quand ptr=0, est-ce une bonne idée de faire ptr-319?

    Pole.
    Pour comprendre la récursivité croisée, il faut comprendre les arbres d'appels. Et vice versa.

  6. A voir en vidéo sur Futura
  7. #5
    Tix

    Re : [C]programme graphique qui Bug

    ca doit etre pour ca ^^, j'avais pensé a soustraire un eligne + 1 mais pas a en ajouter, je teste des que possible, merci

    sinon, pour les 386, ca existe, je posterai peu etre un ephoto du mien pour que vous voyez lzs dégars

    ++ Tix.

  8. #6
    Tix

    Re : [C]programme graphique qui Bug

    nonon, c'était pas ca :'(

  9. Publicité
  10. #7
    Pole

    Re : [C]programme graphique qui Bug

    J'imagine que tu as essayé avec ça :
    Code:
    for(ptr=0; ptr<=63679;ptr++)
            {
                    CA=peek(0xA000,ptr+321);
                    CB=peek(0xA000,ptr+320);
                    if(ptr>320)CC=peek(0xA000,ptr-321);else CC=0;
                    if(ptr>319)CD=peek(0xA000,ptr-320);else CD=0;
                    CE=peek(0xA000,ptr+319);
                    if(ptr>318)CF=peek(0xA000,ptr-319);else CF=0;
                    CG=peek(0xA000,ptr+1);
                    if(ptr>0)CH=peek(0xA000,ptr-1);else CH=0;
                    CI=peek(0xA000,ptr);
                    color = (CA+CB+CC+CD+CE+CF+CG+CH+CI)/9;
                    poke(0xA000,ptr,color);
            }
    ou ça :
    Code:
    for(ptr=321; ptr<=63679;ptr++)
            {
                    CA=peek(0xA000,ptr+321);
                    CB=peek(0xA000,ptr+320);
                    CC=peek(0xA000,ptr-321);
                    CD=peek(0xA000,ptr-320);
                    CE=peek(0xA000,ptr+319);
                    CF=peek(0xA000,ptr-319);
                    CG=peek(0xA000,ptr+1);
                    CH=peek(0xA000,ptr-1);
                    CI=peek(0xA000,ptr);
                    color = (CA+CB+CC+CD+CE+CF+CG+CH+CI)/9;
                    poke(0xA000,ptr,color);
            }
    Peut-être faut il remplacer 63679 par 63678.
    63679+321=64000
    Ce qui est la ligne 201. Mai je suis pas sûr du tout.

    Pole.
    Pour comprendre la récursivité croisée, il faut comprendre les arbres d'appels. Et vice versa.

  11. #8
    Tix

    Re : [C]programme graphique qui Bug

    haha, j'azi essayé en enlevant deux pixels de plus, rien y fait, je veu bien tester tes solutions, bien que ca me paraisse un peu lourd ... enfin, on verras bien

    merci, ++ Tix.

  12. #9
    Tix

    Re : [C]programme graphique qui Bug

    haha, miracle, ca fonctionne ^^

    il fallait remplacer poke et peek par pokeb et peekb je ne comprend pas pourquoi dailleur ... quel est la différence ?

Discussions similaires

  1. counter strike/bug graphique
    Par La-dodo dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 12/01/2007, 06h36
  2. javascript : script qui bug !!!!
    Par Tix dans le forum Logiciel - Software - Open Source
    Réponses: 17
    Dernier message: 19/07/2005, 13h59
  3. programme du bts art graphique
    Par Claudinne dans le forum Orientation après le BAC
    Réponses: 0
    Dernier message: 07/07/2005, 14h09
  4. thermocouple qui bug
    Par petitours dans le forum Électronique
    Réponses: 11
    Dernier message: 11/04/2005, 11h22
Découvrez nos comparatifs produits sur l'informatique et les technologies.