Dans l’esprit de ré-implémenter les jeux vidéo classiques , j’invite la communauté à créer la meilleure implémentation de Tetris .
Pour référence, une capture d'écran de la version NES officielle de Tetris.
Caractéristiques requises
- Un système de notation raisonnable doit être en place, qui récompense davantage les effacements multilignes que les effacements unifilaires. Le score actuel doit être visible à tout moment.
- Le prochain morceau qui apparaîtra doit être indiqué d'une manière ou d'une autre.
- La distribution des sept tétrominoes devrait être assez égale (c'est-à-dire choisie de manière pseudo-aléatoire).
- L'utilisateur doit avoir la possibilité de faire pivoter la pièce actuelle dans les deux sens, ainsi que d'accélérer sa descente.
- Lorsque le jeu est terminé, il doit être clairement indiqué que le jeu est terminé.
- Le code source doit être structuré et facilement compréhensible.
Caractéristiques optionnelles
- Progression de la vitesse de chute après un certain nombre de tentatives (c.-à-d. Augmentation du niveau de difficulté) et progression du score par ligne supprimée, proportionnelle à la vitesse.
- La gravité. Vous pouvez choisir de mettre en œuvre la gravité «classique», dans laquelle les blocs peuvent rester flottants au-dessus des espaces vides, ou vous pouvez choisir de mettre en œuvre la gravité «de remplissage par inondation», dans laquelle les blocs qui ont été séparés de leur tétromino d'origine via des lignes de dégagement peuvent tomber à découvert. les lacunes.
- Meilleurs scores avec saisie du nom.
- L'animation après la ligne est effacée et / ou après l'obtention d'un nouveau score élevé.
Limites
- Toutes les bibliothèques utilisées ( jQuery , PyGame , etc.) doivent être librement disponibles.
- La taille du code source ne doit pas dépasser 4096 octets, excluant les espaces et les commentaires. Toutes les ressources externes (fichiers de données, images, etc.) seront ajoutées à la longueur du code, à l'exclusion des fichiers générés, par exemple pour les scores élevés.
Je me rends compte qu’il s’agit d’une restriction plutôt arbitraire; Mon objectif principal est de décourager le copier-coller des implémentations existantes et d'encourager la brièveté et l'autonomie.
Critères gagnants
Ce défi sera considéré comme un concours de popularité , ce qui signifie que la soumission avec le plus de votes positifs sera sélectionnée comme gagnant. Lors du vote positif, j'encourage les utilisateurs à voter à tour de rôle pour toute soumission qui, à leur avis, répond de manière satisfaisante aux exigences énoncées ci-dessus.
Le gagnant sera choisi au plus tôt 2 semaines après la première solution valable. De plus, j'accorderai une prime au gagnant, à peu près proportionnelle au nombre de votes positifs que cette question reçoit ( 10 * #votes
arrondi à la cinquantaine la plus proche). En cas d'égalité après la fin de la période de 2 semaines, la période de compétition sera prolongée d'une semaine. En cas d'égalité des voix, je me réserve le droit de voter.
S'il vous plaît demander des éclaircissements. Que la meilleure implémentation gagne!
Réponses:
Essayez: http://tetris.muehe.org
Mise à jour Il y a un meilleur score global. Profitez de le battre ou - alternativement - le piratage :-)
CoffeeScript et la version HTML devraient répondre aux exigences au mieux de ma connaissance (et je n’ai jamais vraiment joué à Tetris).
Github https://github.com/henrik-muehe/tetris
traits
la source
Pascal
Développé dans FreePascal 2.6.2, devrait également compiler avec Turbo Pascal 6.0. Seule l' unité Crt est utilisée, pas de ressources externes.
Capture d'écran
(Sous Linux, dans la fenêtre XTerm.)
Contrôle
Notation
Le niveau commence à 1 et augmente après chaque ligne complétée. (Plusieurs lignes remplies en même temps comptent pour 1.)
La mesure
la source
Java (Swing)
Ceci est une implémentation de la première édition historique de Game Boy de Nintendo (c) de 1989.
Comment jouer:
Z= rotation à gauche
X= rotation à droite
Left= déplacement à gauche
Right= déplacement à droite
Down= déplacement (lentement)
Up= rotation à gauche (juste pour une utilisation plus facile)
R= réinitialisation du jeu
J'ai évité d'utiliser plus d'une classe (parce que l'aspect golf me vient à l'esprit). Mais maintenant ce n'est plus golfable dans tous les cas ... Cependant, j'ai compressé un fichier Font et un fichier Image codés en Base64, pour pouvoir les utiliser dans le seul et même fichier de classe.
Pour l'exécuter, copiez le code Java dans votre IDE et démarrez. Vous n'avez pas besoin de bibliothèques ou de ressources supplémentaires.
TODOs:
Les commentaires sont les bienvenus :)
la source
import java.awt.event.KeyAdapter;
et remplaceznew KeyAdapter
parnew java.awt.event.KeyAdapter
.Lua - 2876
Tetris dans un terminal, fonctionne sur la plupart des systèmes Unix, lua pure, aucune librairie supplémentaire n’est nécessaire.
Les contrôles sont: wasd ou hjkl, w / k pour déposer, s / j pour faire pivoter, ad / hl pour se déplacer
La vitesse augmente avec le score, chaque fois que plusieurs lignes sont supprimées, vous obtenez le carré du nombre de lignes détruites.
Ce n'est pas la solution la plus probable au golf, mais j'ai quand même décidé de jouer au golf un peu. Les nouvelles lignes servent uniquement à insérer du texte dans 80 colonnes. Je ne les ai pas incluses dans le nombre de caractères.
la source
cat
.cat
, j'ai utiliséC-x
M-c
M-butterfly
...Mathematica
Ce code a été écrit dans Mathematica par Xiangdong Wen et peut en réalité être joué dans un navigateur Web ici: Shape Descender (Cliquez ici sur les graphiques pour lancer les touches fléchées). Ci-dessous se trouvent la capture d’écran et le code complet - ce qui est assez peu convaincant pour une application Web complète de ce jeu.
Code
la source
C
J'ai écrit cela il y a un an alors que je m'ennuyais en classe au lycée. Soi-disant, le programmeur d'origine a écrit la première version de Tetris en utilisant des crochets, et il semblait assez simple d'essayer de recréer, non? Je ne connaissais aucun logiciel d'interface graphique, j'ai donc créé un bon programme de console à l'ancienne. C'était de retour avant que j'apprenne le C ++ et ces pratiques de programmation bien embêtantes, donc le code peut être un peu brouillon. Je l'ai à peu près juste ailé.
Il répond à toutes les exigences du défi, sauf que la pièce ne tourne que dans un sens (dans le sens des aiguilles d'une montre). Utilisez WASD pour jouer, W fait pivoter la pièce. Le code source complet et le fichier .exe peuvent être trouvés ici: http://sourceforge.net/projects/tklone/files/tklone/tklone-v1.0/
tetris.c
setPiece.c
la source
J'ai construit une version javascript https://marchingband.github.io/tetris/
la source
dom[p.x][p.y+1].style.background
retoursblue none repeat scroll 0% 0%
ne seront jamais égauxblue
. Votre solution est valide, mais je suggérerais de tout changer.style.background
→.style.backgroundColor
pour fonctionner correctement à la fois dans Firefox et Chrome.