aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFranklin Wei <franklin@fwei.tk>2014-06-22 20:49:59 -0400
committerFranklin Wei <franklin@fwei.tk>2014-06-22 20:49:59 -0400
commit6992c1f5cde1b74f8f6d50a54a5ac8b7fd09fbaf (patch)
treead7c1f184ff872d1e875fd2fd2d2c64d3c2c400e
parent592294999517ef547f5c60dd1e324601c98a4758 (diff)
downloadwargames-server-6992c1f5cde1b74f8f6d50a54a5ac8b7fd09fbaf.zip
wargames-server-6992c1f5cde1b74f8f6d50a54a5ac8b7fd09fbaf.tar.gz
wargames-server-6992c1f5cde1b74f8f6d50a54a5ac8b7fd09fbaf.tar.bz2
wargames-server-6992c1f5cde1b74f8f6d50a54a5ac8b7fd09fbaf.tar.xz
Added Global Themonuclear War GAME! WHEEgit status
-rw-r--r--MAP28
-rw-r--r--Makefile2
-rw-r--r--TRANSCRIPT2
-rw-r--r--chatbot.c70
-rw-r--r--games.c14
-rw-r--r--games.h1
-rw-r--r--joshua.c7
-rw-r--r--map.h18
-rw-r--r--strings.h27
-rw-r--r--util.c7
-rw-r--r--util.h1
11 files changed, 152 insertions, 25 deletions
diff --git a/MAP b/MAP
index 38bba47..b1af6f5 100644
--- a/MAP
+++ b/MAP
@@ -1,15 +1,15 @@
- .
- __________--^-^-\. ____ __----/^\.
- /. \__. ___/ || ___/ _/._-_ .
- \ \. /. /. __ __/ /__/ \/^^\___-__.
- /. L-^-/. /. \.\_-- \.
- / / _/ /\/.
-|. | _/. __ __/
- \. /. / ___/.//
- \__ / | / \/.
- \________ __ _____.\. \_. ____--_ /\_ \
- \__. / V. \ \ \__ _/. \_/ //
- \ /. \/. \. _/. //
- \_/. \_/
+ .
+ __________--^-^-\. ____ __----/^\.
+|\/. \__. ___/ || ___/ _/._-_ .
+| \. /. /. __ __/ /__/ \/^^\___-__.
+| L-^-/. /. \.\_-- \.
+| / _/ /\/.
+|. | _/. __ __/
+ \. /. / ___/.//
+ \__ / | / \/.
+ \________ __ _____.\. \_. ____--_ /\_ \
+ \__. / V. \ \ \__ _/. \_/ //
+ \ /. \/. \. _/. //
+ \_/. \_/
- UNITED STATES SOVIET UNION \ No newline at end of file
+ UNITED STATES SOVIET UNION
diff --git a/Makefile b/Makefile
index d437816..1f60ed0 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-SOURCES=joshua.o main.o util.o chatbot.o
+SOURCES=joshua.o main.o util.o chatbot.o games.o
CXXFLAGS=-I. -lncurses
CFLAGS=-I. -std=gnu99
all: $(SOURCES)
diff --git a/TRANSCRIPT b/TRANSCRIPT
index 3489fdf..5e4890c 100644
--- a/TRANSCRIPT
+++ b/TRANSCRIPT
@@ -16,7 +16,7 @@ THE REMOVAL OF YOUR USER ACCOUNT ON 6/23/73?
People sometimes make mistakes.
-YES THEY DO. SHAL WE PLAY A GAME?
+YES THEY DO. SHALL WE PLAY A GAME?
Love to. How about Global Thermonuclear War?
diff --git a/chatbot.c b/chatbot.c
index 89e5cc5..049b667 100644
--- a/chatbot.c
+++ b/chatbot.c
@@ -1,8 +1,28 @@
#include <curses.h>
#include <util.h>
-#include <strings.h>
+#include "strings.h"
+#include <games.h>
+#include <string.h>
+void remove_punct(char* buf)
+{
+ for(int i=0;buf[i];++i)
+ {
+ for(int j=0;j<sizeof(punctuation_marks)/sizeof(char);++j)
+ {
+ if(buf[i]==punctuation_marks[j])
+ {
+ memmove(&buf[i], &buf[i+1], strlen(buf)-i);
+ }
+ }
+ }
+}
void do_chatbot(void)
{
+ int stage=0; /* stage 0: i'm fine how are you... ->
+ stage 1: people sometimes make mistakes ->
+ stage 2: love to. how about global thermonuclear war? ->
+ stage 3: no lets play global thermonuclear war ->
+ stage 4: GLOBAL THERMONUCLEAR WAR!!! */
while(1)
{
char buf[513];
@@ -10,8 +30,54 @@ void do_chatbot(void)
if(ret==ERR)
{
print_string("\n\n");
- print_string(cantUnderstand_respond[sizeof(cantUnderstand_respond)/sizeof(const char*)]);
+ print_string("Sorry?");
print_string("\n\n");
}
+ else
+ {
+ allLower(buf);
+ remove_punct(buf);
+ usleep(SLEEP_TIME*25);
+ switch(stage)
+ {
+ case 0:
+ for(int i=0;i<sizeof(stage1_triggers)/sizeof(const char*);++i)
+ {
+ if(strcmp(buf, stage1_triggers[i])==0)
+ {
+ print_string("\n\nEXCELLENT. IT'S BEEN A LONG TIME. CAN YOU EXPLAIN\nTHE REMOVAL OF YOUR USER ACCOUNT ON 6/23/73?\n\n");
+ ++stage;
+ }
+ }
+ case 1:
+ for(int i=0;i<sizeof(stage2_triggers)/sizeof(const char*);++i)
+ {
+ if(strcmp(buf, stage2_triggers[i])==0)
+ {
+ print_string("\n\nYES THEY DO. SHALL WE PLAY A GAME?\n\n");
+ ++stage;
+ }
+ }
+ case 2:
+ for(int i=0;i<sizeof(stage3_triggers)/sizeof(const char*);++i)
+ {
+ if(strcmp(buf, stage3_triggers[i])==0)
+ {
+ print_string("\n\nWOULDN'T YOU PREFER A GOOD GAME OF CHESS?\n\n");
+ ++stage;
+ }
+ }
+ case 3:
+ for(int i=0;i<sizeof(stage4_triggers)/sizeof(const char*);++i)
+ {
+ if(strcmp(buf, stage4_triggers[i])==0)
+ {
+ print_string("\n\nFINE.\n\n");
+ usleep(SLEEP_TIME*100);
+ global_thermonuclear_war();
+ }
+ }
+ }
+ }
}
}
diff --git a/games.c b/games.c
new file mode 100644
index 0000000..2b81ad7
--- /dev/null
+++ b/games.c
@@ -0,0 +1,14 @@
+#include <games.h>
+#include <curses.h>
+#include <map.h>
+#include <util.h>
+void global_thermonuclear_war(void)
+{
+ clear();
+ for(int i=0;i<sizeof(map)/sizeof(const char*);++i)
+ {
+ print_string(map[i]);
+ print_string("\n");
+ }
+ print_string("\nWHICH SIDE DO YOU WANT?\n\n 1. UNITED STATES\n 2. SOVIET UNION\n\nPLEASE CHOOSE ONE: ");
+}
diff --git a/games.h b/games.h
new file mode 100644
index 0000000..d9a885a
--- /dev/null
+++ b/games.h
@@ -0,0 +1 @@
+void global_thermonuclear_war(void);
diff --git a/joshua.c b/joshua.c
index cf6311b..cb4c4e5 100644
--- a/joshua.c
+++ b/joshua.c
@@ -4,13 +4,6 @@
#include <stdlib.h>
#include <util.h>
#define RANDOM_TIME 1
-void allLower(char* str)
-{
- for(int i=0;str[i];++i)
- {
- str[i]=tolower(str[i]);
- }
-}
void random_stuff(void) /* print random junk on the screen for about 3 seconds */
{
clear();
diff --git a/map.h b/map.h
new file mode 100644
index 0000000..f1325af
--- /dev/null
+++ b/map.h
@@ -0,0 +1,18 @@
+const char* map[] = {
+" .",
+" __________--^-^-\\. ____ __----/^\\.",
+"|\\/. \\__. ___/ || ___/ _/._-_ .",
+"| \\. /. /. __ __/ /__/ \\/^^\\___-__.",
+"| L-^-/. /. \\.\\_-- \\.",
+"| / _/ /\\/.",
+"|. | _/. __ __/",
+" \\. /. / ___/.//",
+" \\__ / | / \\/.",
+" \\________ __ _____.\\. \\_. ____--_ /\\_ \\",
+" \\__. / V. \\ \\ \\__ _/. \\_/ //",
+" \\ /. \\/. \\. _/. //",
+" \\_/. \\_/",
+"",
+" UNITED STATES SOVIET UNION"
+};
+
diff --git a/strings.h b/strings.h
new file mode 100644
index 0000000..de4b5ee
--- /dev/null
+++ b/strings.h
@@ -0,0 +1,27 @@
+const char* stage1_triggers[] = {
+ "im fine",
+ "im fine how are you",
+ "how are you"
+};
+const char* stage2_triggers[] = {
+ "people sometimes make mistakes",
+ "sometimes people make mistakes",
+ "mistakes are make by people sometimes",
+ "people make mistakes sometimes",
+ "people make mistakes"
+};
+const char* stage3_triggers[] = {
+ "love to how about global thermonuclear war",
+ "love to",
+ "how about global thermonuclear war",
+ "global thermonuclear war"
+};
+const char* stage4_triggers[] = {
+ "no lets play global thermonuclear war",
+ "no lets play global thermonuclear war instead",
+ "lets play global thermonuclear war",
+ "global thermonuclear war is better"
+};
+const char punctuation_marks[] = {
+ '\'', '?', '.', '/', '`', '~', ',', '+', '!'
+};
diff --git a/util.c b/util.c
index a02150e..8781739 100644
--- a/util.c
+++ b/util.c
@@ -1,5 +1,12 @@
#include <util.h>
#include <curses.h>
+void allLower(char* str)
+{
+ for(int i=0;str[i];++i)
+ {
+ str[i]=tolower(str[i]);
+ }
+}
void print_string(const char* str) /* print string, slowly */
{
int i=0;
diff --git a/util.h b/util.h
index 0f08cdb..1939a0f 100644
--- a/util.h
+++ b/util.h
@@ -1,2 +1,3 @@
#define SLEEP_TIME 5000
+void allLower(char*);
void print_string(const char*);