| Message
| Here is an interesting example of coding an adventure game in C. It can be found on the International Obfuscated C Code Contest page at:
http://www.ioccc.org/index.html
The entire source code of the adventure is here:
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#define __ "Y\n : ! ,.?>"
#define D(f) ; } int f(int i) { return
#define E(a,b,c,d,e) b##d,c,e,a
#define e(a,b,c,d) a##b##c##d
#define B *p++ - ' ' || !p++
#define _(k) o(*#k - 64)
#define G(g,l,k,o,e,d,n,c,i,b,a,f,j,m,p) \
a#b#c#d#e#f#g#a#i#j#k#l#m#n#o e,i l##c,m##b; d g j n h(k 30:1); o p f}
G(E(f ( 9) -s
? -s + 'q'
? f( 5 ) -s &&'d' -
s?U( 3 ) ||_(J)
:A ( s- f( 5 ))
:(c= 4 *
4):
g(0)D(
V)c <= 3 *4 + 3&&c && V(X ( i) ) ;
}
int , time ( 0)& , c - 15 || P
(1
):0,
& ( !!d ( 0 )
||(a=! _(S)) ,b= 0 )||
a
?d(a = 0)
? _
(I): w ( j =!W(j=_ (V ))) ,
l(_
(Y+ s ) )
)e
(
main(){;
;;;s , ra,
n, d), && C ( j +R( s-j+t( i- 1) )
)D( W)m[ c* 4| z( j ) ]
&&_( X )E (d ( 0
)&& R( 6)/ 6
? c= 17|_ ( T )
:01,||+
, v =i & 3 ^ 2
,+j & 3&&W ( j)||y ( 10 )D (k) --
j ? k ( O[j]=R(15 ))
: 1 D
( H )o ( 7+! ! i+3 )+
i?
c=i /4 & 63,
a= 1
:0)
D ( f )( p =M ,q ( i),*p+86)
D ( l) * f, B?
B ?B ?B? B ?B ?B
?7 :B?B ?36: 59 * 89 *5 * 2 :B?6587
*77 :9 + 2:B ?B?B?9: 5 : 37 : B ? 5 +5:4:20:
B?B?B?32
:e( 4, 3 , 1 *4 * 59 * 1 , 7):B?
17: 34 : 19 :B ?
8 *2 :B ?
2:26: B?
B?B ?B ?
82 *+ 576: B ?33 :22 :5 * 5:3 *4 :3:B ?B ?B? B ?6 +
+ 17 : B?B?13:6 : 9 *2:B?15 : 7 *2 :
B ?
B ?
27:24: 31 : B?
B? + 29 :,
m [a^ 2 ] =T( 8 * 7) ;j= 3
;
;
Q, ;int
P ( int
i )
{time_t(x ) =+ 0+
time(0) ; j=E( u (i ) : i D(R )e(r ,
a ,n ,d) ()% i+1, ( e( l , o,
caltim , e ) (& x)) ->e( tm_h , o, u , r)
;retur , i?_( W
): _( U) D(Y) *p&& *p<3 * 11 ?
( ++ p ), n j= + 34 +( j< 6
||j>19 ),Y (i)
: *p
D ( F) i == 9 ?1 :
F( (i+ 7)% ( 7 + 3) ) +!O[ i
]D(u) *p &&* p -32? p ++)
D (h ) i ?*++*S=i% ( 38)- 1,
D ( A )! n?i&&!g ( (0 ) ) ||K ( j=4| ! !i ) : N(!i )D(
Q)++j<
(s ) &&Q ( t( i)^i )
D( U )i>= 0 ?U( i- 1 )||~f (i+1 ) == ~ s
&&H (m[c* 4 |z(i)] )
:0;D
( X) + b && b<, for (*S = M ; *
p; ),
gets ( L, + 98 , stdin ) ?
p= L, E (r( 0 ): 0 ,h( i / 38 ) : 0;D( C)!
( m[j]+m [a= i] ) ?m[j[m]= i]=j:0;D (d) !
b+(* O-
c)*
* O; D (z )
-~- ~ -~i +
v
& 3 D(y)( putchar ) ( i)
D ( q ) i& ,!(O[j = i]
|| _ ( O))+a :0;
D (w)O[ j] ==c && o
(( !i ++ ? ! !_ (M
):
0) +15)|| ++ j<9 &&w (
i)D ( r )*p? *p -4?
* p -6 ?
y(*p <9 + 2?__[
* p
]: * p+ 7 +79):o( j+1) : o (26+j),&q ( -!
* p ++ + i )D(x)i? a=x ( ( -- i)), ++ p )
D( t ) i, | C((j=i*
T(i-4 )) +R
(3 ) + 4 )
D(J) !j --E( 0 D ( K )!-!N, || i &,
_( R ) :i* c== (O
[ j ] ) &&n==f (j+ 6 + 5 * 4)?O
[j]= !i * c-_ ( L) :J(i )
D ( N ) j=9, & d(0 )? j= 6 | ! i , J(i )D
( o)(*S = p , ++ S,p = M , r (q (i) ),-- S, p = *S))
( (l (_ (Q )),n =s,i ^5 ) ) ;, E(j ,
sign , v ,ed ( b ) ;;
int c =1 ,O[9])
;int( s
)=
E (n ;char, 1 ,a,6 ,o ())* Z[
E(M [37 * 9 *3 ] ,0,L [ 99] ,3] , * *S=Z ) ;
E (*p=+1 ,char( m)[6 , co , 4 ],ol)
+,
V ( v=*O = k( j= 9 )) ;
return ! c&& - ~ ~ - -! printf
( ( "%d \n") , F (P ( 0) +6) *50 + ! ! b*
( +b - (int)time ( 0 )) )
;, ( b= 60 + time ( 0)+ 60 * 4) ;, n =Y
(u (s =Y (i) ) )
: (exit( 0)
,i)D( g )x ( _(N) ^ 9)? !( a =0) : _ ( P )D (T)! i|,
(2); s=35; Q(3);
s=59; Q(6);
a=1;
)
You are probably better off downloading it from the IOCC site, as formatting is, apparently, important.
The file is called jason.c, and can be compiled like this:
gcc jason.c -o jason
Then you execute it, and see the results ...
$ ./jason
you are in a maze of twisty little passages
caves lead: left forward
you see
a lamp
a harp
> get lamp
done
> get harp
done
> f
you climb...
you are in a maze of twisty little passages
caves lead: forward right back
> i
you have
a lamp
a harp
> f
you climb...
you are in a maze of twisty little passages
caves lead: left forward right back
you see
a chime
> get chime
done
> i
you have
a lamp
a harp
a chime
> l
you climb...
you are in a maze of twisty little passages
caves lead: left forward right back
you see
a talisman
a zither
> get talisman
done
> get zither
done
> i
you have
a lamp
a harp
a chime
a talisman
a zither
> l
you climb...
you are in a maze of twisty little passages
caves lead: left forward right back
> f
you climb...
you are in a maze of twisty little passages
caves lead: left forward right back
>
However if you look at the source you will see none of the above messages. That is the interesting bit.
This particular entry is the "Jason" entry for the 2001 competition.
It was judged:
Best Of Show:
Jason Orendorff
5 Buchanan St.
Nashua, NH 03060
USA
http://www.jorendorff.com/
Copyright © Landon Curt Noll, Simon Cooper, Peter Seebach and Leonid A. Broukhis, 2004.
All Rights Reserved.
Permission for personal, education or non-profit use is granted provided this copyright and notice are included in its entirety and remains unaltered. All other uses must receive prior permission in writing from the contest judges. (http://www.au.ioccc.org/judges.html)
|
- Nick Gammon
www.gammon.com.au, www.mushclient.com | | Top |
|