Bonjour !
Je me suis amus� � adapter pour Linux le jeu �crit par par M.Dlb � l'occasion du d�fi Pascal 2011. (Le lien de t�l�chargement du programme original se trouve ici.)
Il reste apparemment quelques petites choses � corriger mais le jeu se compile et fonctionne. Je ne l'ai test� que sous Linux mais en principe il devrait toujours fonctionner aussi sous Windows.
Il y a un probl�me que je n'ai pas r�ussi � r�soudre dans la proc�dure DrawPixel de l'unit� sdl_utils. Je ne sais pas si c'est une erreur dans le code ou si c'est li� au fait que je compile en 64 bits. Chaque appel de la proc�dure d�clenche une exception de type Range check error.
Du coup j'ai mis un Exit; au d�but de la proc�dure, en attendant mieux. �a n'emp�che pas l'affichage d'�tre correct : apparemment la proc�dure n'est pas vraiment indispensable, ou alors je n'ai pas compris � quoi elle sert.
Je r�alise que �a n'a pas beaucoup de sens de v�rifier Length(InitialPixelLocation^).
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 procedure DrawPixel(Surface: PSDL_Surface; X, Y: Integer; Color: PSDL_Color); var BytesPerPixel, PixelColor, ScreenPitch: LongWord; InitialPixelLocation: PLongBuffer; begin Exit; // <--- BytesPerPixel := Surface^.Format^.BytesPerPixel; ScreenPitch := Surface^.Pitch; InitialPixelLocation := Surface^.Pixels; WriteLn('X=', X, ' Y=', Y, ' BytesPerPixel=', BytesPerPixel, ' ScreenPitch=', ScreenPitch, ' Length(InitialPixelLocation^)=', Length(InitialPixelLocation^)); PixelColor := SDL_MapRGB(Surface^.Format, Color^.R, Color^.G, Color^.B); try InitialPixelLocation^[Y * (ScreenPitch div BytesPerPixel) + X] := PixelColor; except on E: Exception do begin WriteLn({$I %FILE%} + ' ' + {$I %LINE%} + ' ' + E.Message); Halt; end; end; end;
Il y a aussi une violation d'acc�s quand on quitte le programme.
Voil�, si quelqu'un veut m'aider � corriger les derni�res erreurs, il sera bienvenu.
Partager