O desafio é simples. Dê o código mais curto possível para reproduzir o clássico jogo de pong para dois jogadores http://en.wikipedia.org/wiki/Pong . O nível de gráficos e funcionalidade deve ser o mais próximo possível desta demonstração javascript http://codeincomplete.com/posts/2011/5/14/javascript_pong/demo.html (mas sem as opções extras, você pode clicar no lado esquerdo ou o quadro, fps etc. no canto inferior direito).
Como sempre, o código deve ser escrito em um idioma livre (em ambos os sentidos) e deve ser executável no linux. Todas as bibliotecas utilizadas também devem ser gratuitas, facilmente disponíveis e não devem ser escritas para os fins desta competição (e também não devem conter uma versão funcional do Pong!).
code-golf
graphical-output
game
felipa
fonte
fonte
Respostas:
Javascript, 883 (+ 70 HTML)
O script pode ser colocado no final
<body>
ou chamadoonLoad
. Ele precisa do seguinte elemento de tela:O jogador 1 usa as teclas qe a, e o jogador 2 usa as teclas pe l. Pressione a esctecla para pausar e qualquer tecla para iniciar / continuar.
Você pode reproduzi-lo no seu navegador aqui .
Eu não tinha certeza da física a usar, então comecei com um método simples de reflexão e depois adicionei alguma variedade e experimentei um pouco. A velocidade da bola na direção y é afetada por onde, na raquete, você bate na bola, para que você tenha algum controle sobre onde a bola vai. A velocidade da bola na direção x aumenta lentamente a cada golpe no rally.
Eu suspeito que ele será facilmente superado por soluções usando bibliotecas, mas me diverti fazendo isso em javascript simples.
fonte
20
a uma variável chamadag
e salvar um byte mísero.sed, 35
Levantando um pouco a barra com uma meditação sediada em selos postais.
A meditação é apreciada no stdin / stdout em dois computadores, não necessariamente conectados por uma rede. A meditação começa no estado
com o guru zero à esquerda e um à direita. O colchete angular move-se para a esquerda e para a direita e, se um guru manobra seu número para entrar em contato com o cursor ao lado, sua pontuação é aumentada em um e eles ficam felizes com a alegria.
A meditação é iniciada digitando o estado acima
sed -f medi.sed
e o computador responde com o próximo estado. Os gurus obedientes digitam a meditação, lendo em voz alta a próxima tecla que pressionarão, com os dois gurus pressionando a tecla sagrada paraenter
o futuro ao mesmo tempo. O computador obediente responde com o próximo estado. Isso, por sua vez, é lido em voz alta enquanto digitado em uníssono, como no último. Continue avançando no futuro até que a felicidade infinita seja alcançada.Os gurus que desejam um desafio podem jogar o modo 'turbo', em que os gurus tentam prever colaborativamente o próximo estado do computador e digitando-o no prompt, em vez do estado atual. Os gurus terão a sabedoria de verificar o acordo entre suas previsões antes de entrar no futuro.
fonte
Python (com pygame ) 650 bytes
Recursos
Como nota final, eu gostaria de solicitar que esta solução não seja selecionada como a resposta aceita, por vários motivos.
Captura de tela de amostra:
Nota: a fonte usada para a pontuação pode variar de sistema para sistema.
fonte
HTML e JavaScript (versão 2) - 525
Como o OP não parecia se importar muito com a parte "o mais próximo possível", eis uma solução alternativa que simplifiquei, despojei e joguei sem piedade. Q / A e P / L para tocar, mas todas as outras teclas também têm efeito. Novamente, o código é totalmente independente e eu o testei no Chromium 25 no Linux. Posso jogar ainda mais se você puder aceitar pequenos erros ou maior degradação da qualidade / jogabilidade dos gráficos.
Obrigado Shmiddty
fonte
c=window.c
. Você está atribuindo uma variável global a si mesma.++S[n]
dentro.random(++S[n])
HTML e JavaScript - 1663
Contra meu melhor julgamento, adotei a abordagem maluca de jogar o código real da demo. Eu removi alguns recursos e elementos da interface, mas geralmente funciona exatamente da mesma maneira - 0, 1 ou 2 para escolher o número de jogadores humanos, Q / A e P / L a serem movidos.
A menos que eu tenha cometido alguns erros, a jogabilidade deve ser idêntica, pixel por pixel e milissegundo por milissegundo, ao original em 640 * 480 (dica: redimensionar a janela do navegador altera o tamanho do jogo na demo). Apenas não dá instruções, não anuncia o vencedor e não lida com esc.
O código é totalmente independente e eu testei no Chromium 25 no Linux. O Firefox não gosta muito.
Alguns créditos para Shmiddty por melhorias
fonte
Processando, 487 caracteres
Exemplo de captura de tela:
Esse código foi feito com a falta de atenção em mente, por isso é bastante complicado (a bola às vezes passa pela raquete ou envolve-a). Os controles são Q / A para o Player 1 e O / L para o Player 2.
fonte
C # - 1283 caracteres
Isso pode ser jogado um pouco mais, mas aqui está.
Edit: Não viu o requisito para uma linguagem gratuita, executável em linux ...
fonte
Tcl / Tk , 932 bytes
Deve ser executado no shell interativo
Nota:
Apenas uma versão muito mínima do Pong, onde a bola corre apenas em ângulos diagonais e sempre tem a mesma velocidade.
fonte