Developpez.com - Rubrique Lazarus

Le Club des Développeurs et IT Pro

Défi Pascal 2011 : Un jeu inspiré du Tetris

Prolongé jusqu'au 31-12-2011

Le 2011-07-10 10:48:59, par Alcatîz, Responsable Pascal, Lazarus et Assembleur
Bonjour à toutes et à tous,

Pour cette année 2011, l'équipe Pascal a essayé de proposer un défi accessible à tous (contrairement à 2010 ) et offrant suffisamment de challenge aux développeurs expérimentés. Le choix s'est porté sur un jeu librement inspiré du célèbre Tetris.

Vous pouvez laisser s'envoler votre imagination : il n'y a aucune contrainte de plateforme ni de compilateur... du moment que ce soit du Pascal.
L'originalité, la créativité et l'ergonomie sont des critères importants; n'ayez donc pas peur de vous lancer si vous êtes débutant(e).

Voici le règlement complet du défi :

Cahier des charges :

Réaliser un jeu librement inspiré du Tetris.



Nous ne pouvons imaginer que vous ignoriez ce dont il s'agit : http://fr.wikipedia.org/wiki/Tetris.

Les règles du jeu de base sont connues, rien ne vous empêche de les modifier avec originalité (multijoueur, en trois dimensions...).

Le choix de la plateforme et du compilateur sont entièrement libres ! Que ce soit sur Windows, Linux, MacOS, Android, etc : peu importe.
Que ça tourne sur PC, téléphone mobile, Nintendo DS, WII, etc : peu importe.
Que vous utilisiez Turbo Pascal, Lazarus, Delphi, Flash Pascal, Turbo51, etc : peu importe.

Le but est double :
  • 1. Vous éclater,
  • 2. Nous étonner !


Date limite :

Les sources pourront être envoyés à Alcatîz jusqu'au 31-12-2011.
Au fur et à mesure de la réception des sources, la liste des participants sera mise à jour à la suite de ce message.

Surtout ne postez pas vos sources sur le forum.

Notation :

Les différents projets seront classés selon les différents critères ci-dessous. Le premier classé dans chaque critère recevra 5 points, le second 4 points... jusqu'au 5ème, qui recevra 1 point.
Le projet qui totalisera le plus de points sera le gagnant.

Voici les différents critères :
  • Originalité et créativité;
  • Look et ergonomie;
  • Qualité du package (source + manuel d'installation et d'utilisation);
  • Qualité du code (rapidité, exempt de bugs, gestion des exceptions...);
  • Originalité technique (plateforme originale, compilateur exotique, technologie...)


Participants :

joreveur (projet envoyé le 31-10-2011) ;
mick605 (projet envoyé le 31-10-2011) ;
titeeee (projet envoyé le 01-11-2011) ;
Paul TOTH (projet posté le 16-12-2011).

Publication des résultats :

Les résultats seront publiés dans le courant du mois de février 2012.

Soyez inventifs et mettez-en nous plein la vue !
Bonne chance à tous les candidats.
  Discussion forum
104 commentaires
  • M.Dlb
    Rédacteur/Modérateur
    Voici les miennes:

    Tetris
  • mick605
    Membre chevronné
    Si j'ai bien compris, il s'agit de faire une libre adaptation du jeu, donc pas de recréer exactement un Tetris ... A toi d'ajouter, enlever, modifier le jeu pour le rendre intérressant ...

    Les règles du jeu de base sont connues, rien ne vous empêche de les modifier avec originalité (multijoueur, en trois dimensions...).
    En tout cas, je participe !
  • Alcatîz
    Responsable Pascal, Lazarus et Assembleur
    Envoyé par wormful_sickfoot
    Je participe également...

    A base de SDL...
    Oui mais toi tu ne peux pas gagner...
  • darrylsite
    Rédacteur
    Envoyé par titeeee
    Bonjour, j'aimerai un développeur pascal pour m'épaulé un peut, parce que j'ai bien commencé, et j'ai des bug que je ne sais pas du tout résoudre. Donc si quelqu'un et partant, qu'il me contacte. Merci !
    Salut,

    Si c'est pour le défi, le forum est toujours disponible. Il suffit de ne pas dévoiler ta solution.
  • darrylsite
    Rédacteur
    Envoyé par joreveur
    bonjour,

    et la 3D avec Lunettes ?

    sérieusement, je ne sais même pas si je vais arriver à coder quelque chose en 2D...

    pour l'instant j'arrive juste à faire descendre un carré et à le déplacer pendant la descente à droite ou à gauche... pas très avancée mon affaire...
    Vous êtes donc déjà bien avancé si vous pouvez descendre et deplacer un carré. Quelques heures de plus et vous pourrez manipuler des formes.

    Bon courage
  • mick605
    Membre chevronné
    Salut,

    Quand vous dites :
    Envoyé par Alcatîz
    [*]Originalité technique (plateforme originale, compilateur exotique, technologie...)
    Vous parlez de ca ?

    [ame="http://www.youtube.com/watch?v=Hui5Azx5jQo"]Scopetris demo - YouTube[/ame]
  • mick605
    Membre chevronné
    Salut

    1 point de moins pour mon projet sans doute...
    Ya pas de raisons ... Le but d'un forum c'est d'aider, pas de penaliser

    Code :
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState
      );
    begin
      case Key of
        VK_RIGHT: Button4Click(form1);
        VK_LEFT:  Button3Click(form1);
    ...
    En fait, le parametre, c'est Sender. Donc, normalement, tu devrais lui passer en parametres le bouton sur lequel tu est censé cliquer, du genre Button4Click(Button4);.

    Apres, tu peux tres bien lui passer nil, si ton code dans ta procedure Button4Click ne tiens pas compte du parametre Sender. Le plus propre reste de faire une procedure DeplacerDroite par exemple, et de l'appeler dans le ButtonClick et dans le KeyDown.

    Un petit conseil qui sera surement payant : renomme tes composants !!!
  • Paul TOTH
    Expert éminent sénior
    Envoyé par joreveur
    oui ça marche...
    la discussion ayant évolué, une solution a été donné... 1 point de moins pour mon projet sans doute...

    J'avais du faire un test un peu trop rapide la 1ere fois..

    je viens d'utiliser KeyDown

    sinon est-ce bien comme cela qu'on appelle une procédure déjà créée ?

    Code :
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState
      );
    begin
      case Key of
        VK_RIGHT: Button4Click(form1);
        VK_LEFT:  Button3Click(form1);
    ...
    dans mon cas ça fonctionne mais ce n'est peut-être pas très propre ?
    comme tu as déjà une réponse éclairée j'ajoute juste un commentaire sur ton usage de Form1 comme paramètre des méthodes click.

    ça fonctionne, y'a pas à dire, mais c'est une très mauvaise habitude dont tu devrais te débarrasser. Ton application ne possède probablement qu'une seule fiche de type TForm1 et la variable globale Form1 pointe sur la seule instance de cette fiche ... mais imaginons que demain tu veuilles lancer deux tétris en parallèle pour corser le jeu. Tu vas créer deux fiches TForm1 l'une à côté de l'autre...sauf que la variable Form1 ne pourra pointer que sur une seule des deux. Avec ton code le clic sur le bouton1 d'une fiche va fonctionner, le clic sur le bouton1 de l'autre fiche fera bouger la pièce de la première !

    alors comment accéder à la fiche sans passer par la variable form1 ? tout simplement avec le mot clé Self qui à l'intérieur d'une méthode de la fiche te retourne l'instance de celle-ci.

    Code :
    1
    2
    3
    4
    5
    procedure TForm1.Button1Click(Sender);
    begin
      if Self = Form1 then ShowMessage('C''est pratique !');
    end;
  • joreveur
    Membre averti
    trop bien

    j'espère que tu seras le 1er
  • EpiTouille
    Membre éprouvé
    merci, toute façon, on peut publier les sources maintenant que la deadline est passé . Je publierai les mienne dans la semaine