11P by xguru 11달전 | favorite | 댓글 1개

- Canvas에서 동작하는 Flappy Bird 게임
- 마우스 클릭하면 점프
- 원래는 341바이트로 시작했는데 많은 사람들이 댓글로 코드골프에 참여하면서, 용량이 계속 줄고 SVG 버전으로도 변환

아래는 브라우저 주소창에 붙여 넣기 가능한 dataurl 버전들

- 오리지널 버전 (341바이트)
data:text/html,<body onload="z=c.getContext`2d`;c.width=c.height=W=401,Q=z.fillRect.bind(z),N=M=>z.fillStyle=M;c.onclick=_=>M=9;M=S=p=0;Y=E=200;setInterval(_=>{!p&&(p=W,P=E*Math.random()),N`red`,Q(0,0,W,W),Y-=M-=.5,p-=8,N`black`,Q(p,0,V=50,P),p<-V?p=0:Q(p,P+E,V,W),((Y<P||Y>P+E)&&p<B)||Y>W?(M=S=p=0,Y=E):z.fillText(S++,9,B);Q(0,Y,B,B)},B=24)"><canvas id=c>

- 최종본 (205바이트)
data:text/html,<body onload=z=c.getContext`2d`,setInterval(`c.width=W=150,Y<W&&P<Y&Y<P+E|9<p?z.fillText(S++${Y=`,9,9|z.fillRect(p`}*0,Y-=--M${Y+Y},P+E,9,W),P))):p=M=Y=S=6,p=p-6||(P=S%E,W)`,E=49) onclick=M=9><canvas id=c>

- SVG 버전 (227바이트)
data:text/html,<svg onload="Y=G=T=0;W=99;setInterval('T%W?p.setAttribute(`d`,`M${W-T%W} ${G}h9V0h-9Zv75h9V150h-9ZM0 ${Y}v9h9v-9H0`):Y>G&&Y<G+75?G=75*Math.random():V=Y=T=0;Y-=V-=.03;t.innerHTML=T++',9)"onclick=V=2><path id=p /><text id=t y=11>

- jsfiddle에서 바로 실행해보기 : https://jsfiddle.net/5gjbtn74/

xguru 11달전  [-]

HN에 아래와 같은 다양한 정보들이 같이 올라왔네요 https://news.ycombinator.com/item?id=25251518

- SNES 용 Super Mario World 에 손으로 코드 인젝션해서 플래피 버드 실행하기 : https://www.youtube.com/watch?v=hB6eY73sLV0

- 플래피버드 안에서 플래피버드 https://www.lexaloffle.com/bbs/?tid=29323
ㅤZ 는 바깥쪽 새 점프, X 는 안쪽 새 점프

- 부트섹터에서 실행하는 플래피버드 fbird https://github.com/nanochess/fbird

- 140바이트 짜리 JavaScript 버전 https://www.dwitter.net/h/FlappyBird