Don't give special treatement to nethackify either
[filters.git] / nethackify.c
diff --git a/nethackify.c b/nethackify.c
new file mode 100644 (file)
index 0000000..1f6cb6c
--- /dev/null
@@ -0,0 +1,87 @@
+
+/*
+nethackify
+tries to write text ala nethack
+
+cat /etc/motd/ | nethackify
+/exec -o nethackify "good morning :)"
+
+gurkan@linuks.mine.nu
+*/
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <sys/time.h>
+
+char *normal  ="ABCDEFGHIKLMNOPQRTUVWZbdeghjklmnoqwy:;01678";
+char *nethack1="^P(|||C||||||CFCP|J/V/|cccni||nrccvv.,C|o/3";
+char *nethack2="?b?)F-(-?<_??(?(F???/??|??????r???????(???o";
+char *nethack3=" [ [L       \\                              ";
+char *nethack4="    [              \\                       ";
+char *nethack5="    _               \\                      ";
+
+int myrandom(float max)
+{
+   return ((int)(max*rand()/(RAND_MAX+1.0)));
+}
+
+void nethackify(char* str)
+{
+    int i,c;
+    for(i=0; i<strlen(str); i++) {
+       for(c=0; c<strlen(normal); c++) {
+           if(normal[c]==str[i]) {
+               if (myrandom(3)>0) {
+               switch(myrandom(5)) {
+                   case 4: if(nethack5[c]!=' ') str[i]=nethack5[c];
+                   case 3: if(nethack4[c]!=' ') str[i]=nethack4[c];
+                   case 2: if(nethack3[c]!=' ') str[i]=nethack3[c]; break;
+                   case 1: if(nethack2[c]!=' ') str[i]=nethack2[c]; break;
+                   case 0: str[i]=nethack1[c]; break;
+                   default: break;
+               }
+               }
+           }
+       }
+       printf("%c",str[i]);
+    }
+    
+    printf(" ");
+}
+
+int main(int argc, char **argv)
+{
+    int i,c;
+    struct timeval tv;
+    FILE *f;
+    char ch[1];
+
+    srand((gettimeofday(&tv,NULL),tv.tv_usec));
+    if (argc==1) {
+       f=stdin;
+       while(fread(ch,1,1,f)) {
+           for(c=0; c<strlen(normal); c++) {
+               if(normal[c]==ch[0]) {
+                   switch(myrandom(5)) {
+                       case 4: if(nethack5[c]!=' ') ch[0]=nethack5[c];
+                       case 3: if(nethack4[c]!=' ') ch[0]=nethack4[c];
+                       case 2: if(nethack3[c]!=' ') ch[0]=nethack3[c]; break;
+                       case 1: if(nethack2[c]!=' ') ch[0]=nethack2[c]; break;
+                       case 0: ch[0]=nethack1[c]; break;
+                       default: break;
+                   }
+               }
+           }
+           printf("%c",ch[0]);
+       }
+       fclose(f);
+    } else {
+       for(i=1; i<argc; i++) {
+           nethackify(argv[i]);
+       }
+       printf("\n");
+    }
+    
+    return 0;
+}
This page took 0.0105 seconds and 4 git commands to generate.