Added HangmanGame class, but does not work yet

Dependencies:   SDFileSystem app epson mbed msp430 pl tests

Revision:
0:fa7450a43b99
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Dec 04 09:32:20 2017 +0000
@@ -0,0 +1,170 @@
+//
+// Filename: main.cpp
+//
+// Flexbook startup.
+//
+
+#include "book.h"
+#include "bookmonitor.h"
+#include "eink.h"
+#include "hal.h"
+#include "log.h"
+#include "pagefactory.h"
+#include <string>
+
+using namespace Flexbook;
+
+#include "mbed.h"
+#include "SDFileSystem.h"
+
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+DigitalOut led3(LED3);
+DigitalOut led4(LED4);
+DigitalOut buzz(p21, 0);
+//define all pins connected to companion PCBs as DigitalIn (high impedence)
+DigitalIn pin9(p9);
+DigitalIn pin10(p10);
+DigitalIn pin11(p11);
+DigitalIn pin12(p12);
+DigitalIn pin13(p13);
+DigitalIn pin14(p14);
+DigitalIn pin15(p15);
+DigitalIn pin16(p16);
+DigitalIn pin17(p17);
+DigitalIn pin18(p18);
+DigitalIn pin23(p23);
+DigitalIn pin24(p24);
+DigitalIn pin25(p25);
+DigitalIn pin26(p26);
+DigitalIn pin27(p27);
+DigitalIn pin28(p28);
+DigitalIn pin29(p29);
+DigitalIn pin30(p30);
+
+// MicroSD            mbed
+//   CS  o-------------o 8    (DigitalOut cs)
+//   DI  o-------------o 5    (SPI mosi)
+//   VCC o-------------o VOUT
+//   SCK o-------------o 7    (SPI sclk)
+//   GND o-------------o GND  
+//   DO  o-------------o 6    (SPI miso)
+//   CD  o
+
+
+
+SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the Flexboard board
+
+void SDtest()
+{
+    printf("\nSD card: ");
+
+    FILE *fp1 = fopen("/sd/sdtest.txt", "w");
+    if(fp1 == NULL) {
+        error("Could not open file for write\n");
+    }
+    if(fprintf(fp1, "Hello SD Card\n") != 14)
+        error("Could not write data\n");
+    fclose(fp1);
+
+    FILE *fp2 = fopen("/sd/sdtest.txt", "r");
+    if(fp2 == NULL) {
+        error("Could not open file for read\n");
+    }
+    char data[64];
+    data[0] = 0;
+    if(fgets(data, sizeof(data), fp2) == NULL)
+        error("Could not read data\n");
+    fclose(fp2);
+
+    printf("Ok\n");
+}
+/*
+//function to count number of eligible words in the dictionary file
+int NumDictWords()
+{
+    FILE *fp1 = fopen("/sd/hangdict.txt", "r");
+    if (fp1 == NULL) {
+        printf("Could not open hangdict.txt\n");
+        }
+        else {
+            printf("hangdict.txt opened\n");
+            }
+    int wordcount = 0;
+    int wordlength = 0;
+    int ch;
+    while (EOF != (ch = getc(fp1))) {
+        // check if character is an LF. It the word on that line is the right length, increment word counter
+        if (ch == 10) {
+            if ((wordlength > 7) && (wordlength < 15)) {
+                wordcount = wordcount + 1;
+                }
+                wordlength = 0;
+            }
+        else {
+            // if the character is not an LF, increment character count
+            wordlength = wordlength + 1;
+            }
+        }
+    fclose(fp1);
+    printf("Word count: %u\n", wordcount);
+    return wordcount;
+}
+
+// ReturnWord is used to pick an indexed word from the hangdict.txt file 
+int ReturnWord(int wordindex, char* word2guess)
+{
+    FILE *fp1 = fopen("/sd/hangdict.txt", "r");
+    printf("Returning word %u: ", wordindex);
+    for (int i = 0; i < wordindex; i++) {
+        fgets(word2guess, 24, fp1);
+        while ((strlen(word2guess) < 6) || (strlen(word2guess) > 12)) {
+            fgets(word2guess, 24, fp1);
+        }
+    }
+    printf("%s", word2guess);
+    fclose(fp1);
+    return (strlen(word2guess)-2);
+}
+*/
+
+int main()
+{
+    HAL::Initialise();
+    Flexbook::PageFactory factory;                              // Page creator
+    Flexbook::Book book(factory);                               // Page container
+    Flexbook::BookMonitor monitor(book);                        // Page turn monitor
+   
+    //This section to test individual pages:
+    book.PageChange(Flexbook::PageType_PageFlexEnable);
+    //book.PageChange(Flexbook::PageType_PageSensor);
+    //book.PageChange(Flexbook::PageType_PageTouch);
+    //etc...
+
+    DisplayHardwareSettings();
+
+    //Log("White screen in main");
+    //WriteColour(Get_epdc(), 0xff);//PL_WHITE);
+
+    wait(4);
+    Log("Write partial image in main");
+    WritePartImage("/myfile.pgm", 60, 30, 60, 30, 100, 100);
+
+    wait(4);
+    Log("Update display in main");
+    UpdateDisplay();
+
+    Log("Write partial image 2");
+    WritePartImage("/myfile.pgm", 160, 100, 160, 100, 50, 200);
+
+    wait(4);
+    UpdateDisplay();
+
+    while(true)                                                 // Main loop
+    {
+        monitor.CheckForPageChange();                           // Creates/destructs pages based on sensor touches
+                                                                // In this version only PageSensor or PageTouch can be active
+                                                                // Other pages are created as dependents
+        book.HandleActions();                                   // Performs actions for the currently active page
+    }
+}