Le défi est simple. Donnez le code le plus court possible pour reproduire le jeu classique de pong à 2 joueurs http://en.wikipedia.org/wiki/Pong . Le niveau de graphisme et de fonctionnalité doit être aussi proche que possible de cette démonstration javascript http://codeincomplete.com/posts/2011/5/14/javascript_pong/demo.html (mais sans les options supplémentaires, vous pouvez cliquer sur la gauche ou le cadre, les informations fps, etc. en bas à droite).
Comme toujours, le code doit être écrit dans un langage libre (dans les deux sens) et doit être exécutable sur Linux. Toutes les bibliothèques utilisées doivent également être gratuites, facilement disponibles et ne pas être écrites aux fins de ce concours (et ne pas contenir déjà une version de travail de Pong!).
la source
Réponses:
Javascript, 883 (+ 70 HTML)
Le script peut être placé à la fin de
<body>
ou appeléonLoad
. Il a besoin de l'élément canvas suivant:Le joueur 1 utilise les qet aclés, et le joueur 2 utilise les pet lclés. Appuyez sur la esctouche pour mettre en pause et sur n'importe quelle touche pour démarrer / continuer.
Vous pouvez le lire dans votre navigateur ici .
Je n'étais pas sûr de la physique à utiliser, alors j'ai commencé avec une méthode de réflexion simple, puis j'ai ajouté de la variété et je l'ai expérimentée un peu. La vitesse de la balle dans la direction y est affectée par l'endroit où vous frappez la balle sur la raquette, vous avez donc un certain contrôle sur la direction de la balle. La vitesse de la balle dans la direction x augmente lentement à chaque coup dans le rallye.
Je soupçonne qu'il sera battu assez facilement par des solutions utilisant des bibliothèques, mais je me suis amusé à le faire en javascript simple.
la source
20
à une variable nomméeg
et enregistrer un octet minuscule.sed, 35
Relever un peu la barre avec une méditation sed de timbre-poste.
La méditation se fait sur stdin / stdout sur deux ordinateurs, pas forcément connectés par un réseau. La méditation commence dans l'état
avec gourou zéro à gauche et un à droite. Le support d'angle se déplace vers la gauche et la droite, et si un gourou manœuvre son nombre pour contacter le curseur quand il vient à son côté, son score est augmenté d'une unité, et ils deviennent ravis de joie.
La méditation est initiée en tapant l'état ci-dessus
sed -f medi.sed
et l'ordinateur répond avec l'état suivant. Les types de gourous consciencieux qui déclarent dans la méditation, lisant à haute voix la touche suivante sur laquelle ils appuieront, les deux gourous appuyant enenter
même temps sur la touche sainte pour l'avenir. L'ordinateur consciencieux répond avec l'état suivant. Ceci, à son tour, est lu à haute voix tout en étant tapé à l'unisson comme avec le dernier. Continuez d'avancer vers l'avenir jusqu'à ce que le bonheur infini soit atteint.Les gourous qui souhaitent relever un défi peuvent jouer en mode «turbo», dans lequel les gourous tentent de prédire en collaboration le prochain état de l'ordinateur et de le saisir dans l'invite au lieu de l'état actuel. Les gourous auront la sagesse de vérifier l'accord entre leurs prédictions avant d'entrer dans le futur.
la source
Python (avec pygame ) 650 octets
traits
Pour terminer, je voudrais demander que cette solution ne soit pas retenue comme réponse acceptée, pour diverses raisons.
Exemple de capture d'écran:
Remarque: la police utilisée pour la partition peut varier d'un système à l'autre.
la source
HTML et JavaScript (prendre 2) - 525
Étant donné que l'OP ne semblait pas se soucier beaucoup de la partie "aussi proche que possible", voici une solution alternative que j'ai impitoyablement simplifiée, dépouillée et golfée. Q / A et P / L pour jouer, mais toutes les autres touches ont également un effet. Encore une fois, le code est entièrement autonome et je l'ai testé dans Chromium 25 sur Linux. Je peux le jouer encore plus si vous pouvez accepter de petits bugs ou une plus grande dégradation de la qualité graphique / du gameplay.
Merci Shmiddty
la source
c=window.c
. Vous vous attribuez une variable globale.++S[n]
intérieur de.random(++S[n])
HTML et JavaScript - 1663
Contre mon meilleur jugement, j'ai pris l'approche folle de jouer au golf avec le code réel de la démo. J'ai supprimé certaines fonctionnalités et éléments d'interface, mais généralement cela fonctionne exactement de la même manière - 0, 1 ou 2 pour choisir le nombre de joueurs humains, Q / A et P / L à déplacer.
Sauf si j'ai fait quelques erreurs, le gameplay doit être identique, pixel pour pixel et milliseconde pour milliseconde, à l'original à 640 * 480 (indice: le redimensionnement de la fenêtre du navigateur modifie la taille du jeu dans la démo). Il ne donne tout simplement pas d'instructions, n'annonce pas le gagnant et ne gère pas l'esc.
Le code est entièrement autonome et je l'ai testé dans Chromium 25 sous Linux. Firefox ne l'aime pas beaucoup.
Quelques crédits à Shmiddty pour des améliorations
la source
Traitement, 487 caractères
Exemple de capture d'écran:
Ce code a été créé avec un esprit court, il est donc assez buggé (la balle passe parfois à travers la pagaie ou s'enroule autour). Les commandes sont Q / A pour le joueur 1 et O / L pour le joueur 2.
la source
C # - 1283 caractères
Cela peut être joué un peu plus, mais le voici.
Edit: Je n'ai pas vu la nécessité d'une langue gratuite, exécutable sous Linux ...
la source
Tcl / Tk , 932 octets
Doit être exécuté dans le shell interactif
Remarque:
Juste une version très minimale de Pong, où la balle ne fonctionne que dans des angles diagonaux et a toujours la même vitesse.
la source