一个只有960字节的C++滑雪小游戏

bitbit
最后编辑于 2019年04月02日 开发

最近发现了一个由C++写的滑雪小游戏,名字叫做Tiny Ski,作者是Frank Force。Tiny Ski的特点就是小,只有960字节,一张名片就可以容得下。

Tiny Ski的滑雪轨道每次都不同,界面图形由ASCII字符模拟形成,左右键移动即可,玩起来很简单。


Image From:frankforce.com

这有点像JavaScript编程比赛js1k,它的代码最大字节数是1024。关于js1k的介绍,参见1024文章:JS1k的创始人,荷兰JavaScript大神Peter van der Zee

在写完C++代码后,Frank Force也写了一个JS版本,提交到了就是js1k网站上。点击下面链接,可以在PC浏览器中运行Tiny Ski,手机上没有左右键玩不了:
https://js1k.com/2019-x/demo/4155

Tiny Ski的C++代码,在Visual Studio上编译运行:

#include<windows.h>// -+TINY SKI+-  
#include<iostream>// By Frank Force 
#include<ctime>   //  ski.3d2k.com  
#define S SetConsoleCursorPosition  
#define K GetStdHandle(-11)//  O....
#define I U.dwCursorPosition//  O...
#define GO S(K,I)//..O           O..
#define D E(K,&U);//..O    \^\    O.
#define A std::cout<<//O           O
#define N(o)!(rand()%(o))//       O.
#define G(o)(1&GetKeyState(o)>>16)  
#define E GetConsoleScreenBufferInfo
#define R COORD i={o-1,I.Y-11};S(K,i
void O(int _){while(_--)A(N(9)?'*': 
'.');}int main(){_:short s=72,k=1,i=
70,w=11,h=0,o=36,a[11][2],*g=*a,m,e=
-1;while(w--)A'\n';srand(int(time(0)
));while(++w<12||1[g]>=o&&*g<o){O(k)
;A'O';for(m=i;m--;)A(w%100?' ':'-');
CONSOLE_SCREEN_BUFFER_INFO U;A'O';O(
s-k-i);if(w%10==0)A' '<<w/10;D{R);}A
". .";GO;A'\n';o+=m=G(39)-G(37);D{R)
;}A(m?m<0?"/^/":"\\^\\":"|^|");*g++=
k;*g=i+k;GO;h=k<1?1:s<=k+i?-1:N(50)?
N(2)*2-1:h;k+=N(2)*h;Sleep(w<99?50-w
/3:16);N(5)?e=i<-25*e*N(i-15)||25<i*
e&&N(35-i)?-e:e,k-=e*(N(2)*k||s<k+i+
e),i+=e:1;g=a[w%11];}A"\n"<<w*.1-1.1
<<" meters!";while(!G(13));goto _;}

Frank Force在2002年毕业于罗切斯特理工学院(Rochester Institute of Technology)计算机专业,在多家游戏公司待过。现在他是一个独立游戏开发者,住在德克萨斯州的奥斯汀。

Frank Force的文章:
http://frankforce.com/?p=5826

登录注册后才能评论。