Added HangmanGame class, but does not work yet

Dependencies:   SDFileSystem app epson mbed msp430 pl tests

Committer:
markpsymonds
Date:
Mon Dec 04 20:15:18 2017 +0000
Revision:
1:a5ec6f9dcf0d
Parent:
0:fa7450a43b99
Fixed most compile issues in hangman.cpp/.h.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
group-FlexBook 0:fa7450a43b99 1 //
group-FlexBook 0:fa7450a43b99 2 // Filename: main.cpp
group-FlexBook 0:fa7450a43b99 3 //
group-FlexBook 0:fa7450a43b99 4 // Flexbook startup.
group-FlexBook 0:fa7450a43b99 5 //
group-FlexBook 0:fa7450a43b99 6
group-FlexBook 0:fa7450a43b99 7 #include "book.h"
group-FlexBook 0:fa7450a43b99 8 #include "bookmonitor.h"
group-FlexBook 0:fa7450a43b99 9 #include "eink.h"
group-FlexBook 0:fa7450a43b99 10 #include "hal.h"
group-FlexBook 0:fa7450a43b99 11 #include "log.h"
group-FlexBook 0:fa7450a43b99 12 #include "pagefactory.h"
group-FlexBook 0:fa7450a43b99 13 #include <string>
group-FlexBook 0:fa7450a43b99 14
group-FlexBook 0:fa7450a43b99 15 using namespace Flexbook;
group-FlexBook 0:fa7450a43b99 16
group-FlexBook 0:fa7450a43b99 17 #include "mbed.h"
group-FlexBook 0:fa7450a43b99 18 #include "SDFileSystem.h"
group-FlexBook 0:fa7450a43b99 19
group-FlexBook 0:fa7450a43b99 20 DigitalOut led1(LED1);
group-FlexBook 0:fa7450a43b99 21 DigitalOut led2(LED2);
group-FlexBook 0:fa7450a43b99 22 DigitalOut led3(LED3);
group-FlexBook 0:fa7450a43b99 23 DigitalOut led4(LED4);
group-FlexBook 0:fa7450a43b99 24 DigitalOut buzz(p21, 0);
group-FlexBook 0:fa7450a43b99 25 //define all pins connected to companion PCBs as DigitalIn (high impedence)
group-FlexBook 0:fa7450a43b99 26 DigitalIn pin9(p9);
group-FlexBook 0:fa7450a43b99 27 DigitalIn pin10(p10);
group-FlexBook 0:fa7450a43b99 28 DigitalIn pin11(p11);
group-FlexBook 0:fa7450a43b99 29 DigitalIn pin12(p12);
group-FlexBook 0:fa7450a43b99 30 DigitalIn pin13(p13);
group-FlexBook 0:fa7450a43b99 31 DigitalIn pin14(p14);
group-FlexBook 0:fa7450a43b99 32 DigitalIn pin15(p15);
group-FlexBook 0:fa7450a43b99 33 DigitalIn pin16(p16);
group-FlexBook 0:fa7450a43b99 34 DigitalIn pin17(p17);
group-FlexBook 0:fa7450a43b99 35 DigitalIn pin18(p18);
group-FlexBook 0:fa7450a43b99 36 DigitalIn pin23(p23);
group-FlexBook 0:fa7450a43b99 37 DigitalIn pin24(p24);
group-FlexBook 0:fa7450a43b99 38 DigitalIn pin25(p25);
group-FlexBook 0:fa7450a43b99 39 DigitalIn pin26(p26);
group-FlexBook 0:fa7450a43b99 40 DigitalIn pin27(p27);
group-FlexBook 0:fa7450a43b99 41 DigitalIn pin28(p28);
group-FlexBook 0:fa7450a43b99 42 DigitalIn pin29(p29);
group-FlexBook 0:fa7450a43b99 43 DigitalIn pin30(p30);
group-FlexBook 0:fa7450a43b99 44
group-FlexBook 0:fa7450a43b99 45 // MicroSD mbed
group-FlexBook 0:fa7450a43b99 46 // CS o-------------o 8 (DigitalOut cs)
group-FlexBook 0:fa7450a43b99 47 // DI o-------------o 5 (SPI mosi)
group-FlexBook 0:fa7450a43b99 48 // VCC o-------------o VOUT
group-FlexBook 0:fa7450a43b99 49 // SCK o-------------o 7 (SPI sclk)
group-FlexBook 0:fa7450a43b99 50 // GND o-------------o GND
group-FlexBook 0:fa7450a43b99 51 // DO o-------------o 6 (SPI miso)
group-FlexBook 0:fa7450a43b99 52 // CD o
group-FlexBook 0:fa7450a43b99 53
group-FlexBook 0:fa7450a43b99 54
group-FlexBook 0:fa7450a43b99 55
group-FlexBook 0:fa7450a43b99 56 SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the Flexboard board
group-FlexBook 0:fa7450a43b99 57
group-FlexBook 0:fa7450a43b99 58 void SDtest()
group-FlexBook 0:fa7450a43b99 59 {
group-FlexBook 0:fa7450a43b99 60 printf("\nSD card: ");
group-FlexBook 0:fa7450a43b99 61
group-FlexBook 0:fa7450a43b99 62 FILE *fp1 = fopen("/sd/sdtest.txt", "w");
group-FlexBook 0:fa7450a43b99 63 if(fp1 == NULL) {
group-FlexBook 0:fa7450a43b99 64 error("Could not open file for write\n");
group-FlexBook 0:fa7450a43b99 65 }
group-FlexBook 0:fa7450a43b99 66 if(fprintf(fp1, "Hello SD Card\n") != 14)
group-FlexBook 0:fa7450a43b99 67 error("Could not write data\n");
group-FlexBook 0:fa7450a43b99 68 fclose(fp1);
group-FlexBook 0:fa7450a43b99 69
group-FlexBook 0:fa7450a43b99 70 FILE *fp2 = fopen("/sd/sdtest.txt", "r");
group-FlexBook 0:fa7450a43b99 71 if(fp2 == NULL) {
group-FlexBook 0:fa7450a43b99 72 error("Could not open file for read\n");
group-FlexBook 0:fa7450a43b99 73 }
group-FlexBook 0:fa7450a43b99 74 char data[64];
group-FlexBook 0:fa7450a43b99 75 data[0] = 0;
group-FlexBook 0:fa7450a43b99 76 if(fgets(data, sizeof(data), fp2) == NULL)
group-FlexBook 0:fa7450a43b99 77 error("Could not read data\n");
group-FlexBook 0:fa7450a43b99 78 fclose(fp2);
group-FlexBook 0:fa7450a43b99 79
group-FlexBook 0:fa7450a43b99 80 printf("Ok\n");
group-FlexBook 0:fa7450a43b99 81 }
group-FlexBook 0:fa7450a43b99 82 /*
group-FlexBook 0:fa7450a43b99 83 //function to count number of eligible words in the dictionary file
group-FlexBook 0:fa7450a43b99 84 int NumDictWords()
group-FlexBook 0:fa7450a43b99 85 {
group-FlexBook 0:fa7450a43b99 86 FILE *fp1 = fopen("/sd/hangdict.txt", "r");
group-FlexBook 0:fa7450a43b99 87 if (fp1 == NULL) {
group-FlexBook 0:fa7450a43b99 88 printf("Could not open hangdict.txt\n");
group-FlexBook 0:fa7450a43b99 89 }
group-FlexBook 0:fa7450a43b99 90 else {
group-FlexBook 0:fa7450a43b99 91 printf("hangdict.txt opened\n");
group-FlexBook 0:fa7450a43b99 92 }
group-FlexBook 0:fa7450a43b99 93 int wordcount = 0;
group-FlexBook 0:fa7450a43b99 94 int wordlength = 0;
group-FlexBook 0:fa7450a43b99 95 int ch;
group-FlexBook 0:fa7450a43b99 96 while (EOF != (ch = getc(fp1))) {
group-FlexBook 0:fa7450a43b99 97 // check if character is an LF. It the word on that line is the right length, increment word counter
group-FlexBook 0:fa7450a43b99 98 if (ch == 10) {
group-FlexBook 0:fa7450a43b99 99 if ((wordlength > 7) && (wordlength < 15)) {
group-FlexBook 0:fa7450a43b99 100 wordcount = wordcount + 1;
group-FlexBook 0:fa7450a43b99 101 }
group-FlexBook 0:fa7450a43b99 102 wordlength = 0;
group-FlexBook 0:fa7450a43b99 103 }
group-FlexBook 0:fa7450a43b99 104 else {
group-FlexBook 0:fa7450a43b99 105 // if the character is not an LF, increment character count
group-FlexBook 0:fa7450a43b99 106 wordlength = wordlength + 1;
group-FlexBook 0:fa7450a43b99 107 }
group-FlexBook 0:fa7450a43b99 108 }
group-FlexBook 0:fa7450a43b99 109 fclose(fp1);
group-FlexBook 0:fa7450a43b99 110 printf("Word count: %u\n", wordcount);
group-FlexBook 0:fa7450a43b99 111 return wordcount;
group-FlexBook 0:fa7450a43b99 112 }
group-FlexBook 0:fa7450a43b99 113
group-FlexBook 0:fa7450a43b99 114 // ReturnWord is used to pick an indexed word from the hangdict.txt file
group-FlexBook 0:fa7450a43b99 115 int ReturnWord(int wordindex, char* word2guess)
group-FlexBook 0:fa7450a43b99 116 {
group-FlexBook 0:fa7450a43b99 117 FILE *fp1 = fopen("/sd/hangdict.txt", "r");
group-FlexBook 0:fa7450a43b99 118 printf("Returning word %u: ", wordindex);
group-FlexBook 0:fa7450a43b99 119 for (int i = 0; i < wordindex; i++) {
group-FlexBook 0:fa7450a43b99 120 fgets(word2guess, 24, fp1);
group-FlexBook 0:fa7450a43b99 121 while ((strlen(word2guess) < 6) || (strlen(word2guess) > 12)) {
group-FlexBook 0:fa7450a43b99 122 fgets(word2guess, 24, fp1);
group-FlexBook 0:fa7450a43b99 123 }
group-FlexBook 0:fa7450a43b99 124 }
group-FlexBook 0:fa7450a43b99 125 printf("%s", word2guess);
group-FlexBook 0:fa7450a43b99 126 fclose(fp1);
group-FlexBook 0:fa7450a43b99 127 return (strlen(word2guess)-2);
group-FlexBook 0:fa7450a43b99 128 }
group-FlexBook 0:fa7450a43b99 129 */
group-FlexBook 0:fa7450a43b99 130
group-FlexBook 0:fa7450a43b99 131 int main()
group-FlexBook 0:fa7450a43b99 132 {
group-FlexBook 0:fa7450a43b99 133 HAL::Initialise();
group-FlexBook 0:fa7450a43b99 134 Flexbook::PageFactory factory; // Page creator
group-FlexBook 0:fa7450a43b99 135 Flexbook::Book book(factory); // Page container
group-FlexBook 0:fa7450a43b99 136 Flexbook::BookMonitor monitor(book); // Page turn monitor
group-FlexBook 0:fa7450a43b99 137
group-FlexBook 0:fa7450a43b99 138 //This section to test individual pages:
group-FlexBook 0:fa7450a43b99 139 book.PageChange(Flexbook::PageType_PageFlexEnable);
group-FlexBook 0:fa7450a43b99 140 //book.PageChange(Flexbook::PageType_PageSensor);
group-FlexBook 0:fa7450a43b99 141 //book.PageChange(Flexbook::PageType_PageTouch);
group-FlexBook 0:fa7450a43b99 142 //etc...
group-FlexBook 0:fa7450a43b99 143
group-FlexBook 0:fa7450a43b99 144 DisplayHardwareSettings();
group-FlexBook 0:fa7450a43b99 145
group-FlexBook 0:fa7450a43b99 146 //Log("White screen in main");
group-FlexBook 0:fa7450a43b99 147 //WriteColour(Get_epdc(), 0xff);//PL_WHITE);
group-FlexBook 0:fa7450a43b99 148
group-FlexBook 0:fa7450a43b99 149 wait(4);
group-FlexBook 0:fa7450a43b99 150 Log("Write partial image in main");
group-FlexBook 0:fa7450a43b99 151 WritePartImage("/myfile.pgm", 60, 30, 60, 30, 100, 100);
group-FlexBook 0:fa7450a43b99 152
group-FlexBook 0:fa7450a43b99 153 wait(4);
group-FlexBook 0:fa7450a43b99 154 Log("Update display in main");
group-FlexBook 0:fa7450a43b99 155 UpdateDisplay();
group-FlexBook 0:fa7450a43b99 156
group-FlexBook 0:fa7450a43b99 157 Log("Write partial image 2");
group-FlexBook 0:fa7450a43b99 158 WritePartImage("/myfile.pgm", 160, 100, 160, 100, 50, 200);
group-FlexBook 0:fa7450a43b99 159
group-FlexBook 0:fa7450a43b99 160 wait(4);
group-FlexBook 0:fa7450a43b99 161 UpdateDisplay();
group-FlexBook 0:fa7450a43b99 162
group-FlexBook 0:fa7450a43b99 163 while(true) // Main loop
group-FlexBook 0:fa7450a43b99 164 {
group-FlexBook 0:fa7450a43b99 165 monitor.CheckForPageChange(); // Creates/destructs pages based on sensor touches
group-FlexBook 0:fa7450a43b99 166 // In this version only PageSensor or PageTouch can be active
group-FlexBook 0:fa7450a43b99 167 // Other pages are created as dependents
group-FlexBook 0:fa7450a43b99 168 book.HandleActions(); // Performs actions for the currently active page
group-FlexBook 0:fa7450a43b99 169 }
group-FlexBook 0:fa7450a43b99 170 }