Também como curiosidade deixo-vos hoje um jogo de Tetris bastante primitivo, mas praticável e com apenas 19 linhas de código ou 1467 caracteres (não os contei mas assim afirma o autor).
O autor deste código é John Tromp (em colaboração com Freek Wiedijk) e ganhou o titulo de melhor jogo ( num concurso de código C ofuscado ? se não estou em erro...) em 1989.
O código é o seguinte:
long h[4];t(){h[3]-=h[3]/3000;setitimer(0,h,0);}c,d,l,v[]={(int)t,0,2},w,s,I,K
=0,i=276,j,k,q[276],Q[276],*n=q,*m,x=17,f[]={7,-13,-12,1,8,-11,-12,-1,9,-1,1,
12,3,-13,-12,-1,12,-1,11,1,15,-1,13,1,18,-1,1,2,0,-12,-1,11,1,-12,1,13,10,-12,
1,12,11,-12,-1,1,2,-12,-1,12,13,-12,12,13,14,-11,-1,1,4,-13,-12,12,16,-11,-12,
12,17,-13,1,-1,5,-12,12,11,6,-12,12,24};u(){for(i=11;++i<264;)if((k=q[i])-Q[i]
){Q[i]=k;if(i-++I||i%12<1)printf("\033[%d;%dH",(I=i)/12,i%12*2+28);printf(
"\033[%dm "+(K-k?0:5),k);K=k;}Q[263]=c=getchar();}G(b){for(i=4;i--;)if(q[i?b+
n[i]:b])return 0;return 1;}g(b){for(i=4;i--;q[i?x+n[i]:x]=b);}main(C,V,a)char*
*V,*a;{h[3]=1000000/(l=C>1?atoi(V[1]):2);for(a=C>2?V[2]:"jkl pq";i;i--)*n++=i<
25||i%12<2?7:0;srand(getpid());system("stty cbreak -echo stop u");sigvec(14,v,
0);t();puts("\033[H\033[J");for(n=f+rand()%7*4;;g(7),u(),g(0)){if(c<0){if(G(x+
12))x+=12;else{g(7);++w;for(j=0;j<252;j=12*(j/12+1))for(;q[++j];)if(j%12==10){
for(;j%12;q[j--]=0);u();for(;--j;q[j+12]=q[j]);u();}n=f+rand()%7*4;G(x=17)||(c
=a[5]);}}if(c==*a)G(--x)||++x;if(c==a[1])n=f+4**(m=n),G(x)||(n=m);if(c==a[2])G
(++x)||--x;if(c==a[3])for(;G(x+12);++w)x+=12;if(c==a[4]||c==a[5]){s=sigblock(
8192);printf("\033[H\033[J\033[0m%d\n",w);if(c==a[5])break;for(j=264;j--;Q[j]=
0);while(getchar()-a[4]);puts("\033[H\033[J\033[7m");sigsetmask(s);}}d=popen(
"stty -cbreak echo stop \023;sort -mnr -o HI - HI;cat HI","w");fprintf(d,
"%4d from level %1d by %s\n",w,l,getlogin());pclose(d);}
Copie e cole o código num ficheiro de texto e guarde o ficheiro com o nome tetris.c
Para compilar execute no terminal:
gcc tetris.c -o tetris
Para executar:
./tetris
Teclas:
Esquerda - j
Girar - k
Direita - l
Cair peça - Barra de espaço
Pausa - p
Sair - q
O jogo inclui características como: velocidade de jogo em aumento constante, possibilidade de poder escolher a velocidade a que começa o jogo, as teclas de controle podem ser redefinidas, o ecrã de jogo fica "limpo" enquanto está em pausa, tabelas de pontuações, etc.
Para configurar alguns aspectos como redefinir as teclas, por exemplo, existe documentação na página do autor.
Página do autor: http://homepages.cwi.nl/~tromp/
Os meus cumprimentos.
Ola a todos......
ResponderEliminarpergunto este jogo rodou no teu computador ou a intensão era postar o código e nada mais?
Quando compilo apresenta varios problemas. Tem algo a me dizer.......
Olá amigo.
EliminarCerto é que na altura que publiquei isto o jogo funcionava.
E é que já lá vão 6 anos desde que fiz esta entrada, e o autor do código fez o mesmo em 1989.
Desde então, muitas coisas mudaram, da mesma maneira que, de certeza que você se puser um jogo de windows 2000 ou windows 98 no actual windows 10 ele não vai funcionar.
A página do autor mudou, agora pode encontrar o código em: https://tromp.github.io/tetris.html
E pode encontrar uma versão diferente por exemplo em:
https://github.com/marklap/tetris
De qualquer maneira tenha em conta o que lhe disse mais acima.
Obrigado pelo seu comentário.
Este comentário foi removido pelo autor.
ResponderEliminarGrato a resposta... você acredita que só após postar quê fui ver a data? Agora entendi porque não funcionou,compilei no Linux e o jogo é para Windos .....
ResponderEliminarGrato a resposta... você acredita que só após postar quê fui ver a data? Agora entendi porque não funcionou,compilei no Linux e o jogo é para Windos .....
ResponderEliminararf... compilei no linux também. não funciona. o Texto precisa enfatizar que é para Windows
ResponderEliminar