1KB roguelike game "Ooooorrrrcs!"

So, brave hero... You went to the Orcish Mines and got their Crystal Crown? Hah?
You really think this is over? Watch for the surprise that orcs prepared especially for you...

After a long way up, with blunted sword in hand and Crown in the backpack your face was finally covered in Moonlight.
However the pain from bleeding wounds was too strong to let you perceive beauty of rocky area where entrance to Orcish Mines was.
There was only one way home, long way east, where human civilization lays.

A noise recalling whispers of stream, suddenly changed into a roar of hundred voices, when distant shapes spotted you.
"Ooooorrrrcs!" you screamed and started to run for your life...

- You are wounded and bleeding. Every turn you loose HP.
- Orcs will find you by blood traces, you have to run. Orcs are chasing you from west, run east.
- Run far enough to loose them and win.
- Take herbs '?' that grow among rocks. They add 20 HP and for a moment allow you to run faster.
- Orc guards are on your way. They have different strength (A-F). A is the weakest one, F the strongest.
- Kill guards to get MP. Every killed guard gives you 1 MP.
- Avoid guards hiding by the rocks - they will catch you and throw west.
- Kill guards to get MP. You need it to run away.

6,9,3,8,2 - move E,NE,SE,N,S. There is no wait command as it would be deadly :)
p - use magic power - teleports you east a distant equaling your MP


Download the Windows binary + source code: (about 81KB)


Source code

#include "curses.h"
#define S 40
#define A mvprintw
#define B rand()
#define L level[x][y]
#define F for(x=0;x #define G for(y=0;y #define H (y,x,"%c",L)
void main(){srand(time(NULL));initscr();resize_term(S,60);curs_set(0);noecho();
int h=100,t=0,p=2,x,y,a=20,b=20,level[S+1][S];char*m="lost";
F f:G L=rand()%3?32:219;if(t++==0)level[19][20]=62;x=1;G L=rand()%2?L :79+(rand()%2)*0x20;x=39;
G L=rand()%150?L:rand()%3?63:65+rand()%5;F G L=level[x+1][y];x=a,y=b;if (!(L &8)){L--;if(L==64){p++;L=63;}}
a=x,b=y;if(L==63)a++,h+=20,L=32;if(h>100)h=100;while(L>63)a--,x=a;F G mvaddch(y,x,L); mvaddch(b,a,'@');
A(20,50,"HP %d ",h);A(21,50,"MP %d ",p);A(22,50,"Turn %d",t);refresh();switch(getch())
if(a<1||b<0||b>=S||h<=0)goto e;if (a>=S-1){m="won";goto e;}h--,x=39;goto f;e:A(20,22,"You %s in %d turns!",m,t);refresh();getch();}


Jakub Debski ( '2008