Four Letter Word generator based on an associative word dictionary.

Dependencies:   _24LCXXX

Dependents:   vfd_modular_clock_mbed

Four Letter Word generator based on an associative word dictionary.

Needs an EEPROM to function (can be programmed onto a 24LC512 I2C EEPROM, or available as a pre-programmed add-on board)

Comes with a censored mode that removes expletives as well as a fully uncensored mode.

For details see:

Committer:
Backstrom
Date:
Tue Feb 10 09:53:03 2015 +0000
Revision:
0:4d3dec05a4b7
Child:
2:ff0163bc298d
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Backstrom 0:4d3dec05a4b7 1 /*
Backstrom 0:4d3dec05a4b7 2 * Four Letter Word Generator
Backstrom 0:4d3dec05a4b7 3 * (C) 2015 Akafugu Corporation
Backstrom 0:4d3dec05a4b7 4 *
Backstrom 0:4d3dec05a4b7 5 * This program is free software; you can redistribute it and/or modify it under the
Backstrom 0:4d3dec05a4b7 6 * terms of the GNU General Public License as published by the Free Software
Backstrom 0:4d3dec05a4b7 7 * Foundation; either version 2 of the License, or (at your option) any later
Backstrom 0:4d3dec05a4b7 8 * version.
Backstrom 0:4d3dec05a4b7 9 *
Backstrom 0:4d3dec05a4b7 10 * This program is distributed in the hope that it will be useful, but WITHOUT ANY
Backstrom 0:4d3dec05a4b7 11 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
Backstrom 0:4d3dec05a4b7 12 * PARTICULAR PURPOSE. See the GNU General Public License for more details.
Backstrom 0:4d3dec05a4b7 13 *
Backstrom 0:4d3dec05a4b7 14 */
Backstrom 0:4d3dec05a4b7 15
Backstrom 0:4d3dec05a4b7 16 #ifndef FLW_H__
Backstrom 0:4d3dec05a4b7 17 #define FLW_H__
Backstrom 0:4d3dec05a4b7 18
Backstrom 0:4d3dec05a4b7 19 #include <inttypes.h>
Backstrom 0:4d3dec05a4b7 20 #include <stdbool.h>
Backstrom 0:4d3dec05a4b7 21
Backstrom 0:4d3dec05a4b7 22
Backstrom 0:4d3dec05a4b7 23 #include "_24LCXXX.h"
Backstrom 0:4d3dec05a4b7 24
Backstrom 0:4d3dec05a4b7 25 class FourLetterWord
Backstrom 0:4d3dec05a4b7 26 {
Backstrom 0:4d3dec05a4b7 27 private:
Backstrom 0:4d3dec05a4b7 28 _24LCXXX _24lc;
Backstrom 0:4d3dec05a4b7 29 bool m_censored;
Backstrom 0:4d3dec05a4b7 30 unsigned long m_offset;
Backstrom 0:4d3dec05a4b7 31 char m_current_word[6];
Backstrom 0:4d3dec05a4b7 32 uint32_t m_lfsr;
Backstrom 0:4d3dec05a4b7 33
Backstrom 0:4d3dec05a4b7 34 uint32_t randomize();
Backstrom 0:4d3dec05a4b7 35
Backstrom 0:4d3dec05a4b7 36 void rot13(char* w);
Backstrom 0:4d3dec05a4b7 37 bool binary_search(const char *key, int imin, int imax);
Backstrom 0:4d3dec05a4b7 38 uint8_t read_byte(unsigned int addr);
Backstrom 0:4d3dec05a4b7 39 void read_buffer(unsigned int addr, uint8_t *buffer, int length);
Backstrom 0:4d3dec05a4b7 40
Backstrom 0:4d3dec05a4b7 41 char* get_word_censored();
Backstrom 0:4d3dec05a4b7 42 char* get_word_uncensored();
Backstrom 0:4d3dec05a4b7 43
Backstrom 0:4d3dec05a4b7 44 public:
Backstrom 0:4d3dec05a4b7 45 FourLetterWord(I2C *i2c, uint8_t addr = 0x50) :
Backstrom 0:4d3dec05a4b7 46 _24lc(i2c, addr),
Backstrom 0:4d3dec05a4b7 47 m_censored(true),
Backstrom 0:4d3dec05a4b7 48 m_offset(0),
Backstrom 0:4d3dec05a4b7 49 m_lfsr(0xbeefcace) {}
Backstrom 0:4d3dec05a4b7 50
Backstrom 0:4d3dec05a4b7 51 void begin(uint32_t seed = 0xbeefcace, bool censored = true);
Backstrom 0:4d3dec05a4b7 52
Backstrom 0:4d3dec05a4b7 53 void setCensored(bool c) { m_censored = c; }
Backstrom 0:4d3dec05a4b7 54
Backstrom 0:4d3dec05a4b7 55 bool hasEeprom();
Backstrom 0:4d3dec05a4b7 56 char* getWord();
Backstrom 0:4d3dec05a4b7 57 };
Backstrom 0:4d3dec05a4b7 58
Backstrom 0:4d3dec05a4b7 59 #endif