Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Sa Jul 19, 2025 02:33

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: sdl intialisierungs fehler
BeitragVerfasst: So Jul 11, 2004 16:25 
Offline
DGL Member

Registriert: Do Apr 29, 2004 11:53
Beiträge: 29
so, habs jetzt geschafft, ist initialisiert, nur, er zeigt keine bilder an?!
ich hab zuvor mit c++ und sdl gearbetiet ging alles ohne probs
nun hier , hmm geht nix

hier eine kleine app, er soll nur die 2 bilder an 2 verschiedenen plätzen anzeigen
aber er zeigt keins an, und er beendet das programm gleich wieder

Code:
  1.  
  2. program test;
  3.  
  4.  
  5. uses
  6.   SysUtils,
  7.   SDL,
  8.   SDLUtils,
  9.   SDL_Image;
  10.  
  11.  
  12. var
  13.   screen: PSDL_Surface;  // screen
  14.   player: PSDL_Surface;  // player
  15.   car: PSDL_Surface;  // enemie
  16.   SourceSurface: PSDL_Surface; //sourcesurface
  17.  
  18.   done: Boolean = false;
  19.  
  20.   player_rect: TSDL_Rect;   //player_rect
  21.   car_rect: TSDL_Rect;   //car_rect
  22.  
  23.   event: TSDL_Event;
  24.  
  25. begin
  26.  
  27.   // Initalisierung
  28.   if (SDL_Init(SDL_INIT_VIDEO) < 0 ) then
  29.   begin
  30.     Write('VIDEO ERROR!');
  31.   end;
  32.  
  33.   //----------------------------------------//
  34.  
  35.   screen := SDL_SetVideoMode(640,480,32, SDL_FULLSCREEN);
  36.  
  37.  
  38. //----------------Surfaces Player---------------------//
  39.  
  40. player := IMG_Load('media/player.png');
  41. car := IMG_Load('media/car.png');
  42.  
  43. SourceSurface := SDL_DisplayFormat( player );
  44.  
  45. player_rect.x := 10;
  46. player_rect.y := 40;
  47. player_rect.h := 100;
  48. player_rect.w := 100;
  49.  
  50. car_rect.x := 400;
  51. car_rect.y := 300;
  52.  
  53. //---------------------------------------------------//
  54.  
  55.    while SDL_PollEvent(@event)= 1 do
  56.     begin
  57.       case event.type_ of
  58.  
  59.       SDL_KeyDown:
  60.       begin      
  61.         write('Taste gedrückt');
  62.       end;
  63.  
  64.     end;
  65.   end;
  66.  
  67.  
  68. SDL_BlitSurface(car, nil, screen, @car_rect);
  69. SDL_BlitSurface(player, nil, screen, @player_rect);
  70.  
  71. end.
  72.  

_________________
wtf?!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jul 11, 2004 20:15 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Also ganz spontan kann ich nichts finden. Interessant wäre in jedem Fall erstmal an welcher Stelle er aussteigt. Beendet er das Programm vielleicht "normal" (sollte eher nicht), hat er Probleme beim Init oder vielleicht beim Laden eines Bildes? Das solltest Du in jedem Fall zuvor ermitteln. In unseren Templates ist eines SDL-Init für OpenGL für Freepascal dabei. Das funktioniert in jedem Fall, vielleicht kannst Dir da ja noch einige Dinge borgen.

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 12, 2004 12:42 
Offline
DGL Member

Registriert: Do Apr 29, 2004 11:53
Beiträge: 29
hab SDL_Flip(screen); vergessen, drum hat er die bilder nicht angezeigt :oops:
bin noch mit dem delphi syntax bisschen überfordert, hab zuvor mit c++ und sdl gearbeitet, aber c++ ist net so mein ding :-)

jetzt eine frage, wegen dem ich in c++ schier verzweifelt wäre, ich hab ein fadennkreuz

Code:
  1.  
  2. procedure mouse_init(mouseX: integer; mouseY: integer);
  3. begin;   //-------------------Mouse--------------//
  4.  
  5.   SDL_GetMouseState(mouseX,mouseY);
  6.   mouse_rect.x := mouseX;
  7.   mouse_rect.y := mouseY;
  8.  
  9. end;
  10.  


und jetzt will ich, dass sich der das player männchen
Code:
  1.  
  2. player := IMG_Load('media/player.png');
  3. SDL_SetColorKey(player, SDL_SRCCOLORKEY, SDL_MapRGB(player.format,255,255,255));
  4.  
  5. player_rect.x := 100;
  6. player_rect.y := 100;
  7. player_rect.h := 100;
  8. player_rect.w := 100;
  9.  


immer zum fadenkreuz dreht, hab auch deshalb schon SDL_Image in uses
ich weis nur net wie des jetzt gehen soll, dass er sich dynamisch bewegt, wäre nett wenn man mir da helfen könnte

_________________
wtf?!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 12, 2004 21:11 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Nun um eine genaue Antwort zu geben, fehlen da noch einige Informationen, aber so wie ich das sehe, soll das Ganze ja nur mit 2D geschehen. Das Prinzip dafür ist sehr simple. Deine Spielerposition ist z.B. in PX, und PY, die der Maus in MX, MY. Wenn nun PX>MX dann soll der Spieler sich nach rechts bewegen, ansonsten eben nach links. Je nach Animationsstufen läßt sich das gleich Spiel nun auch noch mit PY und MY machen um z.B. eine Ausrichtung nach vorne und hinten zu erreichen.

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 12, 2004 21:25 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
OT: Die Unterstriche ("_") in deinem Code zeigen woher du deine Programmiererfahrung hast. :wink:

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 13, 2004 12:41 
Offline
DGL Member

Registriert: Do Apr 29, 2004 11:53
Beiträge: 29
@flash, muss ich das jetzt verstehen :?:

@phobeus, ich möchte aber ein dynamisches bewegen machen, kein laden von bildern
außerdem möchte ich das ganze mit SDL_RotateDg machen von SDL_Image, da das fps spart...
also bilder zum drehen hab ich schon gebracht

aber dass er sich immer zum fadenkreuz dreht, komm ich net drauf

_________________
wtf?!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 13, 2004 19:49 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Ja, dann beschreibe dein Problem nochmal. Ich kenne mich mit den 2D-SDL.-Funktionen nicht aus, aber wenn Du damit ein Bild drehen kannst, ändert das ja an der Lösung nichts. Auch ist das hier schon eine dynamische Lösung... wenn Du noch eine größere Spielfläche nimmst, brauchst Du noch zusätzlich die Spielkoordinate (am besten oben links). Diese zählst Du dann zu der Mausposition dazu so, dass PX<MX+SX das normale Bild darstellt und PX>MX+SX das Bild horizontal gespiegelt darstellt. Bewegt sich die Spielfläche, so musst Du natürlich SX entsprechend weiterbewegen. Damit solltest Du relativ leicht im 2D-Bereich einiges an Problemen erschlagen bekommen.

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jul 14, 2004 12:23 
Offline
DGL Member

Registriert: Do Apr 29, 2004 11:53
Beiträge: 29
ich hab mit sdl_image auch noch nie gearbeitet , drum frag ich ja ob schon mal einer ein drehen zum fadenkreuz mit sdl_image gelöst hat...

bis jetzt hab ihc halt rausgefunden dass ich mit SDL_RotateDeg das bild drehen kann, dann müsste es doch möglich sein, diesen befehl auch für das drehen zum fadenkreuz nehmen.

ich will keine rechnung ins programm reintun, da dass eh nur fps kostet

_________________
wtf?!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jul 14, 2004 16:34 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Also zu konkreten Fragen von Funktionen im 2D-Bereich solltest Du lieber die SDL Dokumentation befragen, anstatt ein OpenGL-Forum, dass sich primär noch eher auf 3D spezialisiert hast. Wir können hier höchstens auf die Technik eingehen (die ist oben geschildert), nicht auf die eigentliche Darstellung. ich bin mir sicher, dass SDl entsprechende Funktionen zum spiegeln und rotieren bereit hält, kann darüber aber keine Auskunft geben.
Das mit der Rechnung habe ich nicht so ganz verstanden, aber Dir sei garantiert, dass Du mit einfachen Additionen und Mulitplikationen einen Rechner nicht mehr so leicht in die Knie zwingen wirst, zumindest nicht um eine Figur nach einem Fadenkreuz auszurichten.

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 16, 2004 21:23 
Offline
DGL Member

Registriert: Do Apr 29, 2004 11:53
Beiträge: 29
ok, danke für die antwort
aber noch ne frage, in opengl gibts doch den befehl glrotate?!

mit dem müsste es doch auch gehen
ich hab OpenGl12

2. prob, welches ich mit c++ hatte, kommt glaub daher dass irgendwas mitm syntax net stimmt

Code:
  1.  
  2. //---------------------------------------------------//
  3. while (not done) do
  4.    while SDL_PollEvent(@event)= 1 do
  5.     begin
  6.       case event.type_ of
  7.  
  8.       SDL_KeyDown:
  9.   //-------------begin of keydown --------- //
  10.        begin
  11.  
  12.         end;
  13.   //-------------end of keydown --------- //
  14.   //-------------begin of moving player --------- //
  15.  
  16.   keys := SDL_GetKeyState(nil);
  17.   if ( keys[SDLK_w] ) then    // w-Taste
  18.   if playerY > 10 then
  19.      playerY := playerY-1;
  20.   end;
  21.  
  22.   if ( keys[SDLK_s] ) then     // s-Taste
  23.   begin
  24.   if playerY < 470 - player.h then
  25.       playerY := playerY+1 ;  
  26.   end;
  27.  
  28.   if ( keys[SDLK_d] ) then   // d-Taste
  29.   begin
  30.   if playerX < 630 - player.w then
  31.       playerX := playerX+1;
  32.       SDL_Quit;
  33.   end;
  34.  
  35.   if ( keys[SDLK_a] ) then  // a-Taste
  36.   begin
  37.   if playerX > 10 then
  38.        playerX := playerX-1;
  39.   end;
  40.   //-------------end of moving player --------- //
  41.  
  42.      end;
  43.   //-------------blitting --------- //
  44.     SDL_BlitSurface(car, nil, screen, @car_rect);
  45.     SDL_BlitSurface(player, nil, screen, @player_rect);
  46.     SDL_Flip(screen);
  47.   //-------------end of blitting--------- //
  48.  
  49.  
  50.  
  51. end.
  52.  


bei allen vier ( keys[SDLK_taste] ) kommt array type required
und bei keys := SDL_GetKeyState(nil); kommt constat expression detected

_________________
wtf?!


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 15 Queries | GZIP : On ]