graphics.h not found



  • #pragma    inline
    asm    .386p
    
    #include <io.h>
    #include <dos.h>
    #include <stdio.h>
    #include <conio.h>
    #include <fcntl.h>
    #include <process.h>
    
    #define byte     unsigned char
    #define word    unsigned int
    #define    dword    unsigned long
    
    void     setpixel_in_c    ( word xpos, word ypos, byte color )
    {
        char     *screen=(char*)0xa0000000;
    
        *(screen+320*ypos+xpos)=color;
    }
    
    void     setpixel     ( word xpos, word ypos, byte color )
    {
        asm    push    [0xa000]
        asm    pop    es
        asm    mov    di,[xpos]
        asm    mov     bx,[ypos]
        asm    mov    al,[color]
        asm    mov    cx,bx
        asm    shl    bx,8
        asm    shl    cx,6
        asm    add    bx,cx
        asm    add    di,bx
        asm     stosb
    
    }
    
    void    copyscreen    ( word dest, word source )
    {
        asm    mov    ds, [source]
        asm    mov    es, [dest]
        asm    xor    si, si
        asm    mov    di, si
        asm    mov    cx, 16000
        asm    rep    movsd
    }
    
    void    clearscreen     ( word dest )
    {
        asm    push    [dest]
        asm    pop    es
        asm    xor    di, di
        asm    mov    cx, 16000
        asm    xor    eax,eax
        asm    rep    stosd
    }
    
    void    mode13exit     ( void )
    {
        asm    mov    ax, 0x03
        asm    int    0x10
    }
    
    void    mode13init     ( void )
    {
        asm    mov    ax, 0x13
        asm    int    0x10
    }
    
    void     setpal        ( char palette[] )
    {
        word    counter;
    
        outp(0x3c8,0);
        for(counter=0;counter<=768;counter++)
        outp(0x3c9,palette[counter]);
    
    }
    
    void    loadtga        ( char *name, char *pixels, char palette[] )
    {
        byte    file_handle,temp_col;
        word    counter;
    
        if ((file_handle =open(name, O_RDONLY | O_BINARY)) == -1)
        {
        printf("can't open %s\n",name);
        exit(1);
        }
        read(file_handle, pixels, 18);
        read(file_handle, palette, 768);
        for(counter=0;counter<=766;counter+=3)
        {
        temp_col=palette[counter]>>2;
        palette[counter+1]=palette[counter+1]>>2;
        palette[counter]=palette[counter+2]>>2;
        palette[counter+2]=temp_col;
        }
        for(counter=1;counter<=200;counter++)
        read(file_handle, (pixels+64000-counter*320), 320);
        close(file_handle);
    }
    
    void    loadpcx        ( char *name, char *pixels, char palette[] )
    {
    
        int    handle;
        word    i,j,k;
        byte    p,q;
    
        i=0;j=0;p=0;k=0;
    
        if ((handle =open(name, O_RDONLY | O_BINARY)) == -1)
        {
        printf("can't open %s\n",name);
        exit(1);
        }
        lseek(handle,128,SEEK_SET);
        do
        {
        read(handle,&p,1);
        if((p&0xc0)==0xc0)
        {q=(p&0x3f);read(handle,&p,1);for(k=0;k<q;k++){*(pixels+j)=p;j++;}}
        else
        {*(pixels+j)=p;j++;}
        }
        while(j<64000);
        lseek(handle,-768,SEEK_END);
        for(i=0;i<768;i++)
        {read(handle,&p,1);palette[i]=p>>2;}
        close(handle);
    
    }
    

    hm, der funktioniert bei mir nicht, da krieg ich 6 errors...



  • Liest du überhaupt, was andere hier schreiben?



  • ähm, lass mich mal nachdenken...

    ...

    JAAAA!

    imerhin ist der coda aus dem konsolen faq



  • Devils Child schrieb:

    JAAAA!

    Also willst du es nicht geistig verarbeiten oder kannst du es nicht?

    Irgendeine graphics.h-Datei wird dir nicht weiterhelfen.



  • und wie krieg ich pixel und linien hin, der code daoben ist aus dem consolen-faq, und gibt 6 errors zurrück!



  • Die Windows-Konsole ist nicht für Pixel und Linien geeignet!

    Erstell nen eigenes Fenster mit WinAPI.



  • und wie macht man soein fenster auf?



  • Power Öff schrieb:

    Die Windows-Konsole ist nicht für Pixel und Linien geeignet!

    Erstell nen eigenes Fenster mit WinAPI.

    Du bist ein schlechter "Power Off" Emulator! 👎

    Ich wuerde sagen, es ist sehr wohl moeglich, in der Windows-Konsole Grafiken darzustellen.

    Am besten ist, man Subclassed das Konsolen-Fenster.

    Die Frage wurde oft gestellt, es lohnt sich bestimmt, mal hier im Konsolen-Forum oder auch WinAPI Forum danach zu suchen.



  • @devil

    dann pixel nur über allegro, opengl, oder directx

    programmier erstmal ohne und lern die grundlagen!

    (schade, dass die seite off ist, war ein relikt aus alten zeiten ... 😞 )



  • finde ich irgendwo source-code oder die libs dazu?



  • mal nachdenken..
    da gibt es einmal eine hervorragende möglichkeit, die heißt: google.
    dann gibt es eine super möglichkeit, die heißt: suchen, und ist oben links in forum zu finden.
    dann gibts schon den hinweis auf das spieleprogrammierer forum, und da gibts ein super faq, zu finden unten auf der seite des forums.
    und dann schau endlich mal ins dos konsolenfaq.

    sonst fängts an zu nerven 😉 🤡



  • ich hab schon ne st gegoogelt, aber ich glaub das im faq hilft, danke an alle 😉



  • Wie heißt dieses schöne Wort, das ihr immer verwendet? Belehrungsresistent?

    EDIT: @Devils Child: Wie wär's für den Anfang, wenn du einmal erläutern würdest, mit welchem Compiler du für welches Betriebssystem was machen willst?





  • Power Off schrieb:

    Power Öff schrieb:

    Die Windows-Konsole ist nicht für Pixel und Linien geeignet!

    Erstell nen eigenes Fenster mit WinAPI.

    Du bist ein schlechter "Power Off" Emulator! 👎

    Ich wuerde sagen, es ist sehr wohl moeglich, in der Windows-Konsole Grafiken darzustellen.

    Am besten ist, man Subclassed das Konsolen-Fenster.

    Die Frage wurde oft gestellt, es lohnt sich bestimmt, mal hier im Konsolen-Forum oder auch WinAPI Forum danach zu suchen.

    Klar durch irgendwelche Hacks geht es vielleicht irgendwie. Ich schrieb aber "nicht geeignet".



  • Hier ist ein Beispiel, wie es ohne Schweinereien geht (mit Subclassing ging's nicht, das geht nur mit Controls):

    //schlechten code gelöscht. VH
    

    😃



  • Das ist aber ne Schweinerei.

    😃



  • Power Öff schrieb:

    Das ist aber ne Schweinerei.

    😃

    Richtig Sinn macht es aber erst, wenn man den Konsolepuffer auf die Fenstergroesse beschraenkt und eine Applikation schreibt, die in sich geschlossen ist (also nicht irgendwas macht und dann endet). 😉

    Dann ist die Vorgehensweise (periodisches Neuzeichnen) auch durchaus zu empfehlen. Das ist ja auch nicht anders, als eine WM_PAINT Message zu bearbeiten. Leider bietet die Konsole weder einen Paint-Handler noch ein Paint-Input-Event. Aber so geht's ja auch. 😉

    EDIT: P.S.: Eine andere, viel geschicktere Moeglichkeit ist es, Grafikbereiche gezielt auszusuchen und als Windows-Control zu implementieren. Diese kann man dann als Child-Windows des Console-Fensters machen, und dann ist auch eine normale WM_PAINT-Behandlung moeglich. (EDIT II: Streicht das!)

    Das ist jedenfalls immer noch einfacher, als ein eigenes Terminal zu schreiben (z.B. mittels eigenem Fenster, Fensterpufferverwaltung, und Malen des Textes).



  • sauber. nicht nur kein c++ code, nein sogar auch noch schlechtes C :p



  • das mit dem periodisch neuzeichnen scheint nicht zu funktionieren


Anmelden zum Antworten