一個用 C 語言寫的迷你版 2048 遊戲,只有487個字符

一個用 C 語言寫的迷你版 2048 遊戲,只有487個字符

想要一起學習C++的可以加群248894430,群內有各種資料滿足大家

Jay Chan 用 C 語言寫的一個迷你版 2048 遊戲,只有 487 個字符。來圍觀吧

C

1234567891011M[16],X=16,W,k;main(){T(system("stty cbreak"));puts(W&1?"WIN":"LOSE");}K[]={2,3,1};s(f,d,i,j,l,P){for(i=4;i--;)for(j=k=l=0;k<4;)j<4?P=M[w(d,i,j++)],W|=P>>11,l*P&&(f?M[w(d,i,k)]=l<<(l==P):0,k++),l=l?P?l-P?P:0:l:P:(f?M[w(d,i,k)]=l:0,++k,W|=2*!l,l=0);}w(d,i,j){returnd?w(d-1,j,3-i):4*i+j;}T(i){for(i=X+rand()%X;M[i%X]*i;i--);i?M[i%X]=2<<rand()%2:0;for(W=i=0;i<4;)s(0,i++);for(i=X,puts("\e[2J\e[H");i--;i%4||puts(""))printf(M[i]?"%4d|":" |",M[i]);W-2||read(0,&k,3)|T(s(1,K[(k>>X)%4]));}//[2048]

下面是其他熱心網友給上面程序加了註解

C

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071// Original file by Jay Chan:// https://gist.github.com/justecorruptio/9967738#include <stdio.h>#define GRID_LEN 16intM[GRID_LEN];intX=GRID_LEN;intW;intk;intK[]={2,3,1};s(f,d,i,j,l,P){for(i=4;i--;){for(j=k=l=0;k<4;){if(j<4){P=M[w(d,i,j++)];W|=P>>11;l*P&&(f?M[w(d,i,k)]=l<<(l==P):0,k++);l=l?(P?(l-P?P:0):l):P;}else{f?M[w(d,i,k)]=l:0;++k;W|=2*!l;l=0;}}}}intw(d,i,j){// Decrements until d reaches 0// Recursive functionif(d<=0){return4*i+j;}returnw(d-1,j,3-i);}T(i){for(i=X+rand()%X;M[i%X]*i;i--);i?M[i%X]=2<<rand()%2:0;for(W=i=0;i<4;i++){s(0,i);}// Prints the tiles onto the terminalfor(i=X,puts("\e[2J\e[H");i--;i%4||puts("")){printf(M[i]?"%4d|":" |",M[i]);}// Read input from keyboardW-2||read(0,&k,3)|T(s(1,K[(k>>X)%4]));}intmain(){// Uses stty to clear the screen in preparation for the gameT(system("stty cbreak"));// Game has finished by this point// If win, display "WIN". Otherwise, display "LOSE".puts(W&1?"WIN":"LOSE");return0;}//[2048]

想要一起學習C++的可以加群248894430,群內有各種資料滿足大家

相關推薦

推薦中...