WAGGL von Windows nach Linux portieren

Dieses Thema im Forum "C/C++" wurde erstellt von djtraumwelt, 21.09.2006.

  1. #1 djtraumwelt, 21.09.2006
    djtraumwelt

    djtraumwelt Foren As

    Dabei seit:
    21.09.2006
    Beiträge:
    78
    Zustimmungen:
    0
    Hallo!

    Ich habe unter Windows ein Spiel geschrieben Namens WAGGL (läuft unter wine) und möchte das jetzt auch für Linux schreiben. Das wird dann meine erste Linux-Anwendung die ich schreibe und von daher habe ich noch ziemlich wenig Ahnung. Was ich bis jetzt habe: CODE. Als nächstes bräuchte ich den Hintergrund schwarz und weiß nicht wie man das macht

    Vielen Dank für eure Hilfe
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. theton

    theton Bitmuncher

    Dabei seit:
    27.05.2004
    Beiträge:
    4.820
    Zustimmungen:
    0
    Ort:
    Berlin, Germany
    Wuerde ich einfach mit gtk_style_set_background() machen. Installiere dir mal devhelp und die zugehoerige GTK-Referenz und besorg dir mal ganz dringend ein Buch zur GTK-Programmierung. :)
     
  4. #3 hazelnoot, 21.09.2006
    hazelnoot

    hazelnoot www.mywm.dl.am

    Dabei seit:
    13.10.2005
    Beiträge:
    377
    Zustimmungen:
    0
    Ort:
    in Geiersberg
    also ich will dir ja jetzt nix dreinreden aber ich wuerde das waggel so wie du das gemacht hast mit der xlib realisieren... ist denk ich schoener als mit gtk... tja is meine meinung!

    mfg hazelnoot
     
  5. theton

    theton Bitmuncher

    Dabei seit:
    27.05.2004
    Beiträge:
    4.820
    Zustimmungen:
    0
    Ort:
    Berlin, Germany
    Schoener geht immer. ;) Noch schoener wirds mit SDL oder OpenGL. :D
     
  6. #5 hazelnoot, 22.09.2006
    hazelnoot

    hazelnoot www.mywm.dl.am

    Dabei seit:
    13.10.2005
    Beiträge:
    377
    Zustimmungen:
    0
    Ort:
    in Geiersberg
    muss ich dir vollkommen zustimmen:D
     
  7. #6 djtraumwelt, 22.09.2006
    djtraumwelt

    djtraumwelt Foren As

    Dabei seit:
    21.09.2006
    Beiträge:
    78
    Zustimmungen:
    0
    ich hab ja noch so gut wie nix geschafft und könnte von daher auch gerne SDL verwenden. aber ich hab so überhaupt keine ahnung. kann mir jemand das fenster mit schwarzem hintergrund in SDL schreiben. ich weiß das ist viel verlangt aber ich kriegs alleine wirklich nicht hin und wenn ich den fertigen code erst mal sehe dann kann ich davon lernen.
     
  8. #7 supersucker, 22.09.2006
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
  9. theton

    theton Bitmuncher

    Dabei seit:
    27.05.2004
    Beiträge:
    4.820
    Zustimmungen:
    0
    Ort:
    Berlin, Germany
  10. #9 SkydiverBS, 22.09.2006
    SkydiverBS

    SkydiverBS Tripel-As

    Dabei seit:
    15.01.2005
    Beiträge:
    207
    Zustimmungen:
    0
    Ort:
    Freising
    Ich wuerde ja zu OpenGL tendieren, allerdings nur weil ich in meinem Studium damit etwas Erfahrung gesammelt habe :D !

    OpenGL ist natuerlich recht maechtig weil man an jedem Parameter drehen kann aber somit auch recht low-level. Ausserdem behandelt es nur Grafik und Eingabegeraete, eine Funktion zum Abspielen von Sound fehlt. SDL waere da vielleicht besser.

    Falls du dich doch dazu entscheiden solltest OpenGL zu nehmen, ich hab hier noch ein paar Beispiele-Programme aus der GDV (Graphische Datenverarbeitung)-Vorlesung rumfliegen die ich dir geben kann.

    Gruss,
    Philip
     
  11. #10 hazelnoot, 22.09.2006
    hazelnoot

    hazelnoot www.mywm.dl.am

    Dabei seit:
    13.10.2005
    Beiträge:
    377
    Zustimmungen:
    0
    Ort:
    in Geiersberg
  12. #11 djtraumwelt, 01.10.2006
    djtraumwelt

    djtraumwelt Foren As

    Dabei seit:
    21.09.2006
    Beiträge:
    78
    Zustimmungen:
    0
    #include <stdlib.h>
    #include <SDL/SDL.h>

    SDL_Event event;
    int quit = 0;
    int xbox = 400;
    int ybox = 300;
    int radbox = 120;
    int xxbox = 50;
    int yybox = 50;

    int main()
    {
    if ( SDL_Init(SDL_INIT_VIDEO) < 0 )
    {
    fprintf(stderr, "SDL konnte nicht initialisiert werden: %s\n",
    SDL_GetError());
    exit(1);
    }

    SDL_Surface *display;
    SDL_Surface *image;

    SDL_Rect drect;
    SDL_Rect srect;

    display = SDL_SetVideoMode( 800, 600, 16, SDL_SWSURFACE );
    if ( display == NULL )
    {
    fprintf(stderr, "Konnte kein Fenster 800x600px oeffnen: %s\n",
    SDL_GetError());
    exit(1);
    }

    image = SDL_LoadBMP("sperr.bmp");
    if (image == NULL)
    {
    fprintf(stderr, "Das Bild konnte nicht geladen werden: %s\n",
    SDL_GetError());
    exit(-1);
    }

    srect.x = 0;
    srect.y = 0;
    srect.w = 10;
    srect.h = 10;

    drect.x = xxbox - 35;
    drect.y = yybox - 35;
    drect.w = 70;
    drect.h = 70;
    SDL_FillRect(display, &drect, SDL_MapRGB(display->format, 0, 50, 127));

    drect.w = 10;
    drect.h = 10;
    for( drect.x = xbox - radbox; drect.x <= xbox + radbox; drect.x = drect.x + 10) {
    drect.y = ybox - radbox;
    SDL_BlitSurface(image, &srect, display, &drect);
    SDL_UpdateRects(display,1,&drect);
    drect.y = ybox + radbox;
    SDL_BlitSurface(image, &srect, display, &drect);
    }
    for( drect.y = ybox - radbox; drect.y <= ybox + radbox; drect.y = drect.y + 10) {
    drect.x = xbox - radbox;
    SDL_BlitSurface(image, &srect, display, &drect);
    SDL_UpdateRects(display,1,&drect);
    drect.x = xbox + radbox;
    SDL_BlitSurface(image, &srect, display, &drect);
    }

    drect.x = 0;
    drect.y = 0;
    drect.w = 800;
    drect.h = 600;
    SDL_UpdateRects(display,1,&drect);

    while( quit == 0 )
    {
    while( SDL_PollEvent( &event ) )
    {
    switch( event.type )
    {
    case SDL_QUIT:
    quit = 1;
    break;
    case SDL_MOUSEBUTTONDOWN:
    if (event.x >= xbox - radbox && event.x <= xbox + radbox && event.y >= ybox - radbox && event.y <= ybox + radbox) quit = 1;
    /* er kennt kein event.x und kein event.y */
    break;
    }
    }
    }

    SDL_FreeSurface(image);
    atexit(SDL_Quit);
    }

    das hab ich bis jetzt und komm nicht weiter. was hab ich falsch gemacht?
     
  13. theton

    theton Bitmuncher

    Dabei seit:
    27.05.2004
    Beiträge:
    4.820
    Zustimmungen:
    0
    Ort:
    Berlin, Germany
    Ganz einfach SDL_Event kennt die Elemente x und y nicht.
    Code:
    error: union has no member named `x'
    Siehe dazu auch die Definition von von SDL_Event (man sdl_event):
    Code:
    STRUCTURE DEFINITION
           typedef union{
             Uint8 type;
             SDL_ActiveEvent active;
             SDL_KeyboardEvent key;
             SDL_MouseMotionEvent motion;
             SDL_MouseButtonEvent button;
             SDL_JoyAxisEvent jaxis;
             SDL_JoyBallEvent jball;
             SDL_JoyHatEvent jhat;
             SDL_JoyButtonEvent jbutton;
             SDL_ResizeEvent resize;
             SDL_ExposeEvent expose;
             SDL_QuitEvent quit;
             SDL_UserEvent user;
             SDL_SywWMEvent syswm;
           } SDL_Event;
    
    Nachtrag: Im uebrigen waere es der Lesbarkeit des Codes sehr zutraeglich, wenn du ihn hier im Board in einen
    Code:
    -Block packen wuerdest.
     
  14. #13 djtraumwelt, 01.10.2006
    djtraumwelt

    djtraumwelt Foren As

    Dabei seit:
    21.09.2006
    Beiträge:
    78
    Zustimmungen:
    0
    ich hab ja versucht das in einen code-block zu packen, aber hab schnell antwort erwischt und da war kein code-block in der formatierung. naja das nächste mal.

    ich weiß, dass SDL_Event kein x und kein y kennt. Aber wer kennt das? Ich muss doch die position der Maus überprüfen ob sie innerhalb des Kästchens ist.
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. theton

    theton Bitmuncher

    Dabei seit:
    27.05.2004
    Beiträge:
    4.820
    Zustimmungen:
    0
    Ort:
    Berlin, Germany
    Warum verwendest du dann event.x, wenn du weisst, dass x nicht Teil des Union ist? Fuer's Mouse-Handling gibts das Union SDL_MouseMotionEvent. Siehe z.B. http://www.pro-linux.de/work/sdl/sdl-teil2.html
     
  17. #15 djtraumwelt, 01.10.2006
    djtraumwelt

    djtraumwelt Foren As

    Dabei seit:
    21.09.2006
    Beiträge:
    78
    Zustimmungen:
    0
    Ich hab's jetzt:
    Code:
      while( quit == 0 )
      {
       while( SDL_PollEvent( &event ) )
       {
        switch( event.type )
        {
          case SDL_QUIT:
            quit = 1;
          break;
          case SDL_MOUSEBUTTONDOWN:
            if (event.button.x >= xbox - radbox && event.button.x <= xbox + radbox && event.button.y >= ybox - radbox && event.button.y <= ybox + radbox) quit = 1;
          break;
        }
       }
      }
     
Thema:

WAGGL von Windows nach Linux portieren

Die Seite wird geladen...

WAGGL von Windows nach Linux portieren - Ähnliche Themen

  1. SAMBA für Windows10 Domäne einrichten

    SAMBA für Windows10 Domäne einrichten: Hallo, ich habe letztes Wochenende verzweifelt versucht, Samba auf meinem Server einzurichten, daher versuche ich aktuell meinen Fehler zu...
  2. Grub Boot Menü - Windows 10 hinzufügen

    Grub Boot Menü - Windows 10 hinzufügen: Hallo liebe Linux Gemeinde :) Ich, Linux Anfänger, habe folgendes Problem und wäre für Ratschläge und Hilfestellungen sehr dankbar!: Neuer PC,...
  3. Debian Samba 4.2.10+dfsg-0+deb8u3 Password wrong -Windows DC

    Debian Samba 4.2.10+dfsg-0+deb8u3 Password wrong -Windows DC: Hallo, ich habe einen debian Samba-Server mit share´s ohne Domäne aufgesetzt, d.h. "standalone". Wenn ich von Windows-Clients mit...
  4. Samba unter Windows 10

    Samba unter Windows 10: Hallo zusammen, ich habe auf meinen Ubuntu Server Samba installiert und eingerichtet. ich kann mich bei Windows 10 mit den Daten anmelden und...
  5. Artikel: Ubuntu unter Windows ausprobiert

    Artikel: Ubuntu unter Windows ausprobiert: Dieser Artikel gibt einen ersten Eindruck des »Windows-Subsystems für Linux«, das Microsoft bereitstellt, um Ubuntu ohne Virtualisierung unter...