IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Pascal Discussion :

Version multiplateforme d'un jeu inspiré de Tetris


Sujet :

Contribuez Pascal

  1. #1
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 458
    Points
    15 458
    Billets dans le blog
    9
    Par défaut Version multiplateforme d'un jeu inspiré de Tetris
    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.

    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;
    Je réalise que ça n'a pas beaucoup de sens de vérifier Length(InitialPixelLocation^).

    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.
    Fichiers attachés Fichiers attachés
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Content de voir que ce programme intéresse encore du monde, 10 ans après !!!
    Merci pour l'effort, et bon courage pour le portage !
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  3. #3
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 458
    Points
    15 458
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par M.Dlb Voir le message
    Merci pour l'effort, et bon courage pour le portage !
    Pas de quoi. Je crois que le plus gros est fait.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

Discussions similaires

  1. Réponses: 104
    Dernier message: 06/10/2020, 13h57
  2. Un développeur indépendant distribue une version pirate de son jeu
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 19
    Dernier message: 22/09/2011, 09h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo