From: Pat Thoyts Date: Tue, 15 Jun 2010 19:47:54 +0000 (+0100) Subject: Imported anagramarama-src-01.tar.gz X-Git-Tag: v0.1 X-Git-Url: http://privyetmir.co.uk/gitweb?a=commitdiff_plain;h=534cc9c02aa6aa776abd6c6716f77a977333bc23;p=anagramarama Imported anagramarama-src-01.tar.gz --- 534cc9c02aa6aa776abd6c6716f77a977333bc23 diff --git a/audio/badword.wav b/audio/badword.wav new file mode 100755 index 0000000..6797b3a Binary files /dev/null and b/audio/badword.wav differ diff --git a/audio/clearword.wav b/audio/clearword.wav new file mode 100755 index 0000000..87ece75 Binary files /dev/null and b/audio/clearword.wav differ diff --git a/audio/click-answer.wav b/audio/click-answer.wav new file mode 100755 index 0000000..c5ab537 Binary files /dev/null and b/audio/click-answer.wav differ diff --git a/audio/click-shuffle.wav b/audio/click-shuffle.wav new file mode 100755 index 0000000..26b982b Binary files /dev/null and b/audio/click-shuffle.wav differ diff --git a/audio/clock-tick.wav b/audio/clock-tick.wav new file mode 100755 index 0000000..37afcd7 Binary files /dev/null and b/audio/clock-tick.wav differ diff --git a/audio/duplicate.wav b/audio/duplicate.wav new file mode 100755 index 0000000..6797b3a Binary files /dev/null and b/audio/duplicate.wav differ diff --git a/audio/found.wav b/audio/found.wav new file mode 100755 index 0000000..7334d18 Binary files /dev/null and b/audio/found.wav differ diff --git a/audio/foundbig.wav b/audio/foundbig.wav new file mode 100755 index 0000000..f388a0f Binary files /dev/null and b/audio/foundbig.wav differ diff --git a/audio/shuffle.wav b/audio/shuffle.wav new file mode 100755 index 0000000..25bc499 Binary files /dev/null and b/audio/shuffle.wav differ diff --git a/gpl.txt b/gpl.txt new file mode 100755 index 0000000..5b6e7c6 --- /dev/null +++ b/gpl.txt @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/images/.xvpics/background.bmp b/images/.xvpics/background.bmp new file mode 100755 index 0000000..24ea5c6 --- /dev/null +++ b/images/.xvpics/background.bmp @@ -0,0 +1,5 @@ +P7 332 +#IMGINFO:800x600 RGB (1440054 bytes) +#END_OF_COMMENTS +80 60 255 +ooooooooosksossooRRoooooonoumrrnqonsmonNnoSO3VsVRVu{{vzvwzvi)ڎsmoRO2RSvwrq~nqm{rjnnoR7sԱq3vRvvqRrsovԖWRQrzۿ޻ߺsooQrRSRRwwrrԱVVvzݚsuRyV޾߻ڿ߻ڛoooosm޽ݾ޽ݽܾݾݽٽooooݺ޽ݾݽٽڼپݽݾ۾ۻڿoowmNiLjrlr޾پݽټݽݹپݽ޽߻ڿosےIn޽ٽؾٽݼؽؽ޽ݽٽޞs׻ڿڿߺڿ޺׻ڻ߻߻ۿ߻۾׻ڿ߻ۿۿ޻׻޻ߺۿۿݻ׻޻ߺۿۿ޺׻޻ߺۿۿ޺׺ۿۺ߾ֽ׾߻޻۾ھ׾߻ۻ۾޵ݽۿۻۿٽݺsݽݹݾ԰nlٽsrr޹ݽݽLlmٽޞsmqܾݽؾܾܺsljHmNmvuаЬ̬Ǫ̬̬̬̬̃̄Ȭ̬̬Дٽ޾پsֽTߙs0wuw֞Pwwpwwlwwrrwwپݾٽ޽پwrnMrnr޽޽޹޽ؽݹݺ޾wqn޹ݾݾ޽ݾܺ޽ݾwMnnmOqvݾ޽޽ݾ޽ټپݾ޽swwwݾݾݽݾھݾsksss޽پݾ޽ݾwkkksrݾ޾ݾwkkkowwݾ޾skkkokjsswkkkokjkssskkkokjkksswvswkkkokjkkwssw{zwskkkokjkkkosrvwwkkkokjkkkOsvswwwwvvkkkokjkkkOjsoswvwwwwokkkokjkkkOjkoossswwwwwookkkokjkkkOjkkkssssswwswwoooskkkokjkkkOjkkkoksssosswz{wooosookkkokjkkkOjkkkokosssssswwvwssoossookkkokjkkkOjkkkokkjssssssosssoossoookkkokjkkkOjkkkokkjkssssososssssssooossookkkkokjkkkOjkkkokkjkkosssossssssosooossossooonGgkgkjKKkjkkkkkjkkkKjkosssosossssoooosoossoosskfkGjkgkjKKkjkgkjkgkkJkgkkjgkoknososssssooosoosooossokfGkfkgkgkjKKkjkgkjkgkkJkgkkjgkkjkgKJgkkkjgkkkjoosooossossnoosoGjgkGfkgj \ No newline at end of file diff --git a/images/background-al.bmp b/images/background-al.bmp new file mode 100755 index 0000000..3d21942 Binary files /dev/null and b/images/background-al.bmp differ diff --git a/images/background-old.bmp b/images/background-old.bmp new file mode 100755 index 0000000..bd0d0b9 Binary files /dev/null and b/images/background-old.bmp differ diff --git a/images/background.bmp b/images/background.bmp new file mode 100755 index 0000000..4f97ff8 Binary files /dev/null and b/images/background.bmp differ diff --git a/images/letterBank.bmp b/images/letterBank.bmp new file mode 100755 index 0000000..069210f Binary files /dev/null and b/images/letterBank.bmp differ diff --git a/images/numberBank.bmp b/images/numberBank.bmp new file mode 100755 index 0000000..4720148 Binary files /dev/null and b/images/numberBank.bmp differ diff --git a/images/smallLetterBank.bmp b/images/smallLetterBank.bmp new file mode 100755 index 0000000..f9ad926 Binary files /dev/null and b/images/smallLetterBank.bmp differ diff --git a/makefile b/makefile new file mode 100755 index 0000000..a473217 --- /dev/null +++ b/makefile @@ -0,0 +1,26 @@ +CFLAGS=-Wall `sdl-config --libs --cflags` -lSDL_mixer +CFLAGS2=-Wall +CC=cc + +LIBS= + +C_FILES=src/dlb.c src/linked.c src/sprite.c src/ag.c +OBJ_FILES=src/dlb.o src/linked.o src/sprite.o src/ag.o +OUT_FILE=ag + +all:ag + +ag: $(OBJ_FILES) + $(CC) $(CFLAGS) -o $(OUT_FILE) $(OBJ_FILES) + +src/dlb.o: src/dlb.c + $(CC) $(CFLAGS2) -c -o $@ $^ + +src/linked.o: src/linked.c + $(CC) $(CFLAGS2) -c -o $@ $^ + +src/sprite.o: src/sprite.c + $(CC) $(CFLAGS2) -c -o $@ $^ + +src/ag.o: src/ag.c + $(CC) $(CFLAGS2) -c -o $@ $^ diff --git a/makefile.WIN32 b/makefile.WIN32 new file mode 100755 index 0000000..c7047a2 --- /dev/null +++ b/makefile.WIN32 @@ -0,0 +1,28 @@ +SDL_FLAGS = -Wall -O2 -I/usr/local/include -Dmain=SDL_main -I/usr/include/mingw -DWIN32 -Uunix -mno-cygwin -DHAVE_OPENGL +SDL_LIBS = -L/usr/local/lib -lmingw32 -lSDLmain -lSDL -mwindows -mno-cygwin -lSDL_mixer + +CFLAGS2=-Wall -O2 -I. -I/usr/local/include -Dmain=SDL_main -I/usr/include/mingw -DWIN32 -Uunix -mno-cygwin -DHAVE_OPENGL -c +CC=gcc + +LIBS= + +C_FILES=src/dlb.c src/linked.c src/sprite.c src/ag.c +OBJ_FILES=src/dlb.o src/linked.o src/sprite.o src/ag.o +OUT_FILE=ag + +all:ag + +ag: $(OBJ_FILES) + $(CC) $(SDL_FLAGS) -o $(OUT_FILE) $(OBJ_FILES) $(SDL_LIBS) + +src/dlb.o: src/dlb.c + $(CC) $(CFLAGS2) -c -o $@ $^ + +src/linked.o: src/linked.c + $(CC) $(CFLAGS2) -c -o $@ $^ + +src/sprite.o: src/sprite.c + $(CC) $(CFLAGS) -c -o $@ $^ + +src/ag.o: src/ag.c + $(CC) $(CFLAGS2) -c -o $@ $^ diff --git a/readme b/readme new file mode 100644 index 0000000..62d0050 --- /dev/null +++ b/readme @@ -0,0 +1,15 @@ +Anagramarama 0.1 +(c) 2003 Colm Gallagher - under the terms of the GPL - see gpl.txt for details. + +Version 0.1 - still needs a high score table and some + informational messages, but you can play a game. + +Need to do a major code clean up too and document some stuff... + +I'll get round to it for the v1 release + +in the meantime have fun and let me know if you find any problems + + +-- +colm@coralquest.com diff --git a/src/ag.c b/src/ag.c new file mode 100755 index 0000000..ca5f943 --- /dev/null +++ b/src/ag.c @@ -0,0 +1,1435 @@ +/* +Anagramarama - A word game. Like anagrams? You'll love anagramarama! +Copyright (C) 2003 Colm Gallagher + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Contact Details: colm@coralquest.com + 12 Weston Terrace, West Kilbride, KA23 9JX. Scotland. +*/ + +#include +#include +#include +#include +#include +#include +//#include + +#include "dlb.h" +#include "linked.h" +#include "sprite.h" +#include "ag.h" + +//module level variables for game control +char shuffle[] = ""; +char answer[] = ""; + +char* rootWord; +int updateAnswers = 0; +int startNewGame = 0; +int solvePuzzle = 0; +int shuffleRemaining = 0; +int clearGuess = 0; +//int winGame = 0; + +int gameStart = 0; +int gameTime = 0; +int stopTheClock = 0; + +int totalScore = 0; +int score = 0; +int answersSought = 0; +int answersGot = 0; +int gotBigWord = 0; +int bigWordLen = 0; +int updateTheScore = 0; +int gamePaused = 0; +int foundDuplicate = 0; +int quitGame = 0; +int winGame = 0; + +int letterSpeed = LETTER_FAST; + +// Graphics cache +SDL_Surface* letterBank = NULL; +SDL_Surface* smallLetterBank = NULL; +SDL_Surface* numberBank = NULL; +struct sprite* clockSprite = NULL; +struct sprite* scoreSprite = NULL; + +// audio vars +Uint32 audio_len; +Uint8 *audio_pos; + +struct sound{ + char* name; + Mix_Chunk *audio_chunk; + struct sound* next; +}; + +struct sound* soundCache = NULL; +/*******************************************************************************/ +Mix_Chunk* getSound(char* name){ + +struct sound* currentSound = soundCache; + + while (currentSound!=NULL){ + + if(!strcmp(currentSound->name, name)){ + return currentSound->audio_chunk; + break; + } + currentSound = currentSound->next; + } + + return NULL; +} + +/*******************************************************************************/ +void pushSound(struct sound** soundCache, char* name, char* filename){ + +struct sound* thisSound = NULL; + + thisSound = malloc(sizeof(struct sound)); + thisSound->name = malloc(sizeof(name)*strlen(name)); + strcpy(thisSound->name, name); + thisSound->next = *soundCache; + + // Attempt to load a sample + thisSound->audio_chunk = Mix_LoadWAV(filename); + + *soundCache = thisSound; +} + +/*******************************************************************************/ +void bufferSounds(struct sound** soundCache){ + + pushSound(&(*soundCache),"click-answer", "audio/click-answer.wav"); + pushSound(&(*soundCache),"click-shuffle", "audio/click-shuffle.wav"); + pushSound(&(*soundCache),"foundbig", "audio/foundbig.wav"); + pushSound(&(*soundCache),"found", "audio/found.wav"); + pushSound(&(*soundCache),"clear", "audio/clearword.wav"); + pushSound(&(*soundCache),"duplicate", "audio/duplicate.wav"); + pushSound(&(*soundCache),"badword", "audio/badword.wav"); + pushSound(&(*soundCache),"shuffle", "audio/shuffle.wav"); + pushSound(&(*soundCache),"clock-tick", "audio/clock-tick.wav"); + +} + +/*******************************************************************************/ +void clearSoundBuffer(){ + +struct sound* currentSound = soundCache, *previousSound = NULL; + + while (currentSound!=NULL){ + + Mix_FreeChunk(currentSound->audio_chunk); + free(currentSound->name); + previousSound = currentSound; + currentSound = currentSound->next; + free(previousSound); + } +} + +/***********************************************************/ +int nextBlank(char* string){ +// determine the next blank space in a string - blanks are indicated by pound not space + +int i; +int found=0; + + for(i=0;i<7;i++){ + if (string[i]==SPACE_CHAR){ + found = 1; + break; + } + } + if (found){ + return i+1; + } + else{ + return 0; + } +} + +/***********************************************************/ +char* shiftLeftKill(char* string){ +// shift a string of characters 1 character to the left + +int i; +char start; +char* newString; +int len; + + len = strlen(string); + + newString = malloc(sizeof(char) * (len)); + + start = string[0]; + + for (i=1;i 3){ + if (dlb_lookup(dlbHead,shiftLeftKill(newGuess))){ + push(&(*head), shiftLeftKill(newGuess)); + } + } + + if (strlen(newRemain)){ + ag(&(*head), dlbHead, &newGuess, &newRemain); + + for (i=totalLen-1;i>0;i--){ + if(strlen(newRemain) > i){ + strcpy(newRemain, shiftLeft(newRemain)); + ag(&(*head), dlbHead, &newGuess, &newRemain); + } + } + } + // free the space + free(newGuess); + free(newRemain); +} + +/***********************************************************/ +void solveIt(struct node* head){ + +struct node* current = head; + + while (current != NULL){ + current->found = 1; + current = current->next; + } +} + +/***********************************************************/ +void ShowBMP(char *file, SDL_Surface *screen, int x, int y){ + SDL_Surface *image; + SDL_Rect dest; + + /* Load the BMP file into a surface */ + image = SDL_LoadBMP(file); + if ( image == NULL ) { + fprintf(stderr, "Couldn't load %s: %s\n", file, SDL_GetError()); + return; + } + + /* Blit onto the screen surface. + * The surfaces should not be locked at this point. + */ + dest.x = x; + dest.y = y; + dest.w = 50; + dest.h = 50; + + SDL_SetColorKey(image, SDL_SRCCOLORKEY, SDL_MapRGB(image->format,255,0,255)); + + SDL_BlitSurface(image, NULL, screen, &dest); + + /* Update the changed portion of the screen */ + //SDL_UpdateRects(screen, 1, &dest); + SDL_FreeSurface(image); +} + +/***********************************************************/ +/*void displayAnswerBoxes(struct node* head, SDL_Surface* screen){ +// for each letter to each answer in the nodelist, +// display a neat little box to fill in later + +struct node* current = head; +SDL_Rect outerrect, innerrect; +int i; + +char imagePath[] = "images/small-.bmp"; +int twoOnALine = 0; + + // width and height are always the same + outerrect.w = 17; + outerrect.h = 17; + outerrect.x = 70; + outerrect.y = 380; + + while (current != NULL){ + + // update the x for each letter + for (i=0;ilength;i++){ + SDL_FillRect(screen, &outerrect,0); + innerrect.w = outerrect.w - 2; + innerrect.h = outerrect.h - 2; + innerrect.x = outerrect.x + 1; + innerrect.y = outerrect.y + 1; + + if (current->guessed){ + SDL_FillRect(screen, &innerrect,SDL_MapRGB(screen->format,255,255,255)); + } + else{ + SDL_FillRect(screen, &innerrect,SDL_MapRGB(screen->format,217,220,255)); + } + + if (current->found){ + imagePath[13] = current->anagram[i]; + ShowBMP(imagePath, screen, innerrect.x+2, innerrect.y ); + } + + outerrect.x += 18; + } + + if ( twoOnALine<4 ){ + // shift x along to show the next word + outerrect.x += (8-current->length) * 18; + twoOnALine++; + } + else{ + // reset the x, ready for the next line + outerrect.x = 70; + twoOnALine = 0; + // update the y for each word + outerrect.y += 19; + } + current=current->next; + } + SDL_Flip(screen); +} +*/ +/***********************************************************/ +void displayAnswerBoxes(struct node* head, SDL_Surface* screen){ +// for each letter to each answer in the nodelist, +// display a neat little box to fill in later + +struct node* current = head; +SDL_Rect outerrect, innerrect, letterBankRect; +int i; +int numWords = 0; +int acrossOffset = 70; +int numLetters = 0; +int listLetters = 0; +//char imagePath[] = "images/small-.bmp"; + + // width and height are always the same + outerrect.w = 16; + outerrect.h = 16; + outerrect.x = acrossOffset; + outerrect.y = 380; + + letterBankRect.w = 10; + letterBankRect.h = 16; + letterBankRect.y = 0; + letterBankRect.x = 0; // letter is chosen by 10*letter where a is 0 + + while (current != NULL){ + + // new word + numWords++; + numLetters =0; + + // update the x for each letter + for (i=0;ilength;i++){ + + numLetters++; + + SDL_FillRect(screen, &outerrect,0); + innerrect.w = outerrect.w - 1; + innerrect.h = outerrect.h - 1; + innerrect.x = outerrect.x + 1; + innerrect.y = outerrect.y + 1; + + if (current->guessed){ + SDL_FillRect(screen, &innerrect,SDL_MapRGB(screen->format,255,255,255)); + } + else{ + SDL_FillRect(screen, &innerrect,SDL_MapRGB(screen->format,217,220,255)); + } + + if (current->found){ + innerrect.x+=2; +// innerrect.y-=1; + letterBankRect.x = 10 * ((int)current->anagram[i] - 97); + //imagePath[13] = current->anagram[i]; + //ShowBMP(imagePath, screen, innerrect.x+2, innerrect.y ); + SDL_SetColorKey(smallLetterBank, SDL_SRCCOLORKEY, SDL_MapRGB(smallLetterBank->format,255,0,255)); + SDL_BlitSurface(smallLetterBank, &letterBankRect, screen, &innerrect); + } + + outerrect.x += 18; + + } + + if (numLetters > listLetters){ + listLetters = numLetters; + } + + if (numWords == 11){ + numWords = 0; + acrossOffset += (listLetters * 18) + 9; + outerrect.y = 380; + outerrect.x = acrossOffset; + } + else{ + outerrect.x = acrossOffset; + outerrect.y += 19; + } + + current=current->next; + } +// SDL_Flip(screen); +} + +/***********************************************************/ +void checkGuess(char* answer, struct node* head){ +// check the guess against the answers +struct node* current = head; +int i, len; +int foundWord = 0; + + len = nextBlank(answer) -1; + if (len<0) len=7; + char test[len]; + for (i=0; ianagram, test)){ + foundWord = 1; + if (!current->found){ + score+=current->length; + totalScore+=current->length; + answersGot++; + if (len==bigWordLen){ + gotBigWord = 1; + Mix_PlayChannel(-1, getSound("foundbig"), 0); + } + else{ + // just a normal word + Mix_PlayChannel(-1, getSound("found"),0); + } + if (answersSought==answersGot){ + // getting all answers gives us the game score again!! + totalScore+=score; + winGame = 1; + } + current->found = 1; + current->guessed=1; + updateTheScore = 1; + + } + else{ + foundDuplicate = 1; + Mix_PlayChannel(-1, getSound("duplicate"),0); + } + updateAnswers = 1; + break; + } + + current=current->next; + } + + if (!foundWord){ + Mix_PlayChannel(-1, getSound("badword"),0); + } +} + +/***********************************************************/ +int nextBlankPosition(int box, int* index){ +// determine the next blank space in a string - blanks are indicated by pound not space + +int i; + + switch(box){ + case ANSWER: + for(i=0;i<7;i++){ + if (answer[i]==SPACE_CHAR){ + break; + } + } + answer[i] = shuffle[*index]; + shuffle[*index] = SPACE_CHAR; + break; + case SHUFFLE: + for(i=0;i<7;i++){ + if (shuffle[i]==SPACE_CHAR){ + break; + } + } + shuffle[i] = answer[*index]; + answer[*index] = SPACE_CHAR; + break; + default: + break; + + } + + *index = i; + + return i * (GAME_LETTER_WIDTH+GAME_LETTER_SPACE)+BOX_START_X; +} +/***********************************************************/ +void clickDetect(int button, int x, int y, SDL_Surface *screen, struct node* head, struct sprite** letters){ + +struct sprite* current = *letters; + + if (!gamePaused) { + + while (current!=NULL&¤t->box!=CONTROLS){ + if (x>= current->x && x<= current->x+current->w && y>= current->y && y<=current->y + current->h){ + if (current->box == SHUFFLE){ + current->toX = nextBlankPosition(ANSWER, ¤t->index); + current->toY = ANSWER_BOX_Y; + current->box = ANSWER; + Mix_PlayChannel(-1, getSound("click-shuffle"), 0); + } + else{ + current->toX = nextBlankPosition(SHUFFLE, ¤t->index); + current->toY = SHUFFLE_BOX_Y; + current->box = SHUFFLE; + Mix_PlayChannel(-1, getSound("click-answer"), 0); + } + + break; + } + current=current->next; + } + + if (x > CLEARBOXSTARTX && x < CLEARBOXLENGTH+CLEARBOXSTARTX && y > CLEARBOXSTARTY && y < CLEARBOXSTARTY+CLEARBOXHEIGHT){ + // clear has been pressed + clearGuess = 1; + } + + // check the other hotspots + if (x > ENTERBOXSTARTX && x < ENTERBOXLENGTH+ENTERBOXSTARTX && y > ENTERBOXSTARTY && y < ENTERBOXSTARTY+ENTERBOXHEIGHT){ + // enter has been pressed + checkGuess(answer, head); + } + + if (x > SOLVEBOXSTARTX && x < SOLVEBOXLENGTH+SOLVEBOXSTARTX && y > SOLVEBOXSTARTY && y < SOLVEBOXSTARTY+SOLVEBOXHEIGHT){ + // solve has been pressed + solvePuzzle = 1; + } + + if (x > SHUFFLEBOXSTARTX && x < SHUFFLEBOXLENGTH+SHUFFLEBOXSTARTX && y > SHUFFLEBOXSTARTY && y < SHUFFLEBOXSTARTY+SHUFFLEBOXHEIGHT){ + // shuffle has been pressed + shuffleRemaining = 1; + Mix_PlayChannel(-1, getSound("shuffle"),0); + } + } + + if (x > NEWBOXSTARTX && x < NEWBOXLENGTH+NEWBOXSTARTX && y > NEWBOXSTARTY && y < NEWBOXSTARTY+NEWBOXHEIGHT){ + // new has been pressed + startNewGame = 1; + } + + if (x > QUITBOXSTARTX && x < QUITBOXLENGTH+QUITBOXSTARTX && y > QUITBOXSTARTY && y < QUITBOXSTARTY+QUITBOXHEIGHT){ + // new has been pressed + quitGame = 1; + } +} + +/***********************************************************/ +int clearWord(struct sprite** letters){ + +struct sprite* current = *letters; +struct sprite* orderedLetters[7]; +int i; +int count = 0; + + for (i=0;i<=7;i++){ + orderedLetters[i] = NULL; + } + + // move the letters back up + while(current != NULL){ + if(current->box == ANSWER){ + count ++; + orderedLetters[current->index] = current; + current->toY = SHUFFLE_BOX_Y; + current->box = SHUFFLE; + } + current=current->next; + } + + for (i=0;i<=7;i++){ + if(orderedLetters[i] != NULL) + orderedLetters[i]->toX = nextBlankPosition(SHUFFLE, &orderedLetters[i]->index); + } + + return count; +} +/***********************************************************/ +void updateScore(SDL_Surface* screen){ +// we'll display the total Score, this is the game score + +char buffer [256]; +int i; +SDL_Rect fromrect, torect, blankRect; + + blankRect.x = SCORE_WIDTH * 11; + blankRect.y = 0; + blankRect.w = SCORE_WIDTH; + blankRect.h = SCORE_HEIGHT; + + fromrect.x = 0; + fromrect.y = 0; + fromrect.w = SCORE_WIDTH; + fromrect.h = SCORE_HEIGHT; + + torect.y = 0; + torect.w = SCORE_WIDTH; + torect.h = SCORE_HEIGHT; + + // move the totalScore into a string + snprintf (buffer, sizeof (buffer), "%i", totalScore); + + for (i = 0; i < strlen(buffer); i++){ + fromrect.x = SCORE_WIDTH * ((int)buffer[i]-48); + torect.x = SCORE_WIDTH * i; + SDL_BlitSurface(numberBank, &fromrect, scoreSprite->sprite, &torect); + } +} +/***********************************************************/ +void updateTime(SDL_Surface* screen){ + +// the time is x seconds minus the number of seconds of game time +int thisTime; +int seconds; +int minutes; +int minute_units; +int minute_tens; +int second_units; +int second_tens; + +SDL_Rect fromrect, torect, blankRect; + + blankRect.x = CLOCK_WIDTH * 11; + blankRect.y = 0; + blankRect.w = CLOCK_WIDTH; + blankRect.h = CLOCK_HEIGHT; + + fromrect.x = 0; + fromrect.y = 0; + fromrect.w = CLOCK_WIDTH; + fromrect.h = CLOCK_HEIGHT; + + torect.y = 0; + torect.w = CLOCK_WIDTH; + torect.h = CLOCK_HEIGHT; + + thisTime = AVAILABLE_TIME-gameTime; + minutes = thisTime/60; + seconds = thisTime-(minutes*60); + minute_tens = minutes/10; + minute_units = minutes-(minute_tens*10); + second_tens = seconds/10; + second_units = seconds-(second_tens*10); + + fromrect.x = CLOCK_WIDTH * minute_tens; + torect.x = CLOCK_WIDTH * 0; + SDL_BlitSurface(numberBank, &fromrect, clockSprite->sprite, &torect); + fromrect.x = CLOCK_WIDTH * minute_units; + torect.x = CLOCK_WIDTH * 1; + SDL_BlitSurface(numberBank, &fromrect, clockSprite->sprite, &torect); + fromrect.x = CLOCK_WIDTH * second_tens; + torect.x = CLOCK_WIDTH * 3; + SDL_BlitSurface(numberBank, &fromrect, clockSprite->sprite, &torect); + fromrect.x = CLOCK_WIDTH * second_units; + torect.x = CLOCK_WIDTH * 4; + SDL_BlitSurface(numberBank, &fromrect, clockSprite->sprite, &torect); + + // tick out the last 10 seconds + if (thisTime<=10 && thisTime>0){ + Mix_PlayChannel(-1, getSound("clock-tick"), 0); + } +} +/***********************************************************/ +char* getRandomWord(){ +// spin the word file to a random location and then +// loop until a 7 or 8 letter word is found + +FILE* wordlist; +int filelocation; +int i; +char* wordFromList = malloc(sizeof(char) * 50); +int len; +int done = 0; + + filelocation = rand()%10000; + wordlist=fopen("wordlist.txt","r"); + + for (i=0;i<=filelocation;i++){ + + if(fscanf(wordlist, "%s", wordFromList) != EOF){ + // spin on + } + else{ + // go back to the start of the file + fclose(wordlist); + fopen("wordlist.txt", "r"); + } + } + + // ok random location reached + while (!done){ + + len = strlen(wordFromList); + if ((len==7)){//||(len==6)||(len==5)){ + done = 1; + } + else{ + + if(fscanf(wordlist, "%s", wordFromList) != EOF){ + // spin on + } + else{ + // go back to the start of the file + fclose(wordlist); + fopen("wordlist.txt", "r"); + fscanf(wordlist, "%s", wordFromList); + } + } + } + + + fclose(wordlist); + + // add in our space character + wordFromList[len] = ' '; + wordFromList[len+1] = '\0'; + + return wordFromList; + free(wordFromList); +} + +/***********************************************************/ +char* swapChars(int from, int to, char* string){ +// swap 2 characters in a string + +char swap; + + swap = string[from]; + string[from] = string[to]; + string[to] = swap; + + return string; + +} + +/***********************************************************/ +int revFirstNonSpace(char* thisWord){ +// working backwards in the string, +// find the first non space character +int i; + + for (i = strlen(thisWord) ; i>0; i--){ + if (thisWord[i-1] != SPACE_CHAR){ + return i; + } + } + + return 0; +} + +/***********************************************************/ +void shuffleWord(char** thisWord){ +// replace characters randomly + +int numSwaps; +int from, to; +int i; +int len; + + len = 7; + + numSwaps = (rand()%len)+20; + + for (i=0;ibox == SHUFFLE){ + thisLetter->toX = (whereinstr(shufflePos, thisLetter->index+1) * (GAME_LETTER_WIDTH + GAME_LETTER_SPACE)) + BOX_START_X; + thisLetter->index = whereinstr(shufflePos, thisLetter->index+1); + } + + thisLetter = thisLetter->next; + } + + strcpy(*thisWord, shuffleChars); + + free(shuffleChars); + free(shufflePos); +} +/***********************************************************/ +/*void* updateClock(void *arg){ + +int timeNow; + while((gameTime < AVAILABLE_TIME) && !stopTheClock){ + timeNow = time(0) - gameStart; + if (timeNow!=gameTime){ + gameTime = timeNow; + updateTimeDisplay = 1; + //sleep(1); + } + } + stopTheClock = 1; + solvePuzzle = 1; + return NULL; +} +*/ +/********************************************************************/ +void buildLetters(struct sprite** letters, SDL_Surface* screen){ +// build letter string into linked list of letter graphics + +struct sprite *thisLetter = NULL, *previousLetter = NULL; +int i; +int len; +SDL_Rect rect, blankRect; +Uint32 flags = SDL_SRCCOLORKEY; +Uint8 bpp; +Uint32 rmask, gmask, bmask, amask; +int index = 0; + + + blankRect.x = 27 * GAME_LETTER_WIDTH; + blankRect.y = 0; + blankRect.w = GAME_LETTER_WIDTH; + blankRect.h = GAME_LETTER_HEIGHT; + + rect.y = 0; + rect.w = GAME_LETTER_WIDTH; + rect.h = GAME_LETTER_HEIGHT; + + len = strlen(shuffle); + + if(screen->flags & SDL_SWSURFACE) + flags |= SDL_SWSURFACE; + if(screen->flags & SDL_HWSURFACE) + flags |= SDL_HWSURFACE; + + bpp = screen->format->BitsPerPixel; + rmask = screen->format->Rmask; + gmask = screen->format->Gmask; + bmask = screen->format->Bmask; + amask = screen->format->Amask; + + for (i=0;isprite = SDL_CreateRGBSurface(flags, GAME_LETTER_WIDTH, GAME_LETTER_HEIGHT, bpp, rmask, gmask, bmask, amask); + thisLetter->replace = SDL_CreateRGBSurface(flags, GAME_LETTER_WIDTH, GAME_LETTER_HEIGHT, bpp, rmask, gmask, bmask, amask); + + SDL_BlitSurface(letterBank, &rect, thisLetter->sprite, NULL); + SDL_BlitSurface(letterBank, &blankRect, thisLetter->replace, NULL); + thisLetter->x = rand()%799;//i * (GAME_LETTER_WIDTH + GAME_LETTER_SPACE) + BOX_START_X; + thisLetter->y = rand()%599;//SHUFFLE_BOX_Y; + thisLetter->h = thisLetter->sprite->h; + thisLetter->w = thisLetter->sprite->w; + thisLetter->toX = i * (GAME_LETTER_WIDTH + GAME_LETTER_SPACE) + BOX_START_X; + thisLetter->toY = SHUFFLE_BOX_Y; + thisLetter->next = previousLetter; + thisLetter->box = SHUFFLE; + thisLetter->index = index++; + + previousLetter = thisLetter; + + *letters = thisLetter; + + thisLetter = NULL; + } + else{ + shuffle[i] = ''; + // rect.x = 26 * GAME_LETTER_WIDTH; + } + + } +} + +/***********************************************************/ +void addClock(struct sprite** letters, SDL_Surface* screen){ +// add the clock to the sprites +// keep a module reference to it for quick and easy update + +struct sprite *thisLetter = NULL, *previousLetter = NULL, *current = *letters; +int i; +SDL_Rect fromrect, torect, blankRect; +Uint32 flags = SDL_SRCCOLORKEY; +Uint8 bpp; +Uint32 rmask, gmask, bmask, amask; +int index = 0; + + blankRect.x = CLOCK_WIDTH * 11; + blankRect.y = 0; + blankRect.w = CLOCK_WIDTH; + blankRect.h = CLOCK_HEIGHT; + + fromrect.x = 0; + fromrect.y = 0; + fromrect.w = CLOCK_WIDTH; + fromrect.h = CLOCK_HEIGHT; + + torect.y = 0; + torect.w = CLOCK_WIDTH; + torect.h = CLOCK_HEIGHT; + + if(screen->flags & SDL_SWSURFACE) + flags |= SDL_SWSURFACE; + if(screen->flags & SDL_HWSURFACE) + flags |= SDL_HWSURFACE; + + bpp = screen->format->BitsPerPixel; + rmask = screen->format->Rmask; + gmask = screen->format->Gmask; + bmask = screen->format->Bmask; + amask = screen->format->Amask; + + // add the clock onto the end - so we don't slow letter processing any + while (current != NULL){ + previousLetter = current; + current =current->next; + } + + thisLetter=malloc(sizeof(struct sprite)); + + thisLetter->sprite = SDL_CreateRGBSurface(flags, CLOCK_WIDTH*5, CLOCK_HEIGHT, bpp, rmask, gmask, bmask, amask); + thisLetter->replace = SDL_CreateRGBSurface(flags, CLOCK_WIDTH*5, CLOCK_HEIGHT, bpp, rmask, gmask, bmask, amask); + + // initialise with 05:00 + for (i=0;i<5;i++){ + +// printf("i:%i\n", CLOCK_WIDTH * i); + + torect.x = CLOCK_WIDTH * i; + switch(i){ + + case 1: + fromrect.x = 5 * CLOCK_WIDTH; + break; + case 2: + fromrect.x = CLOCK_WIDTH * 10; // the colon + break; + case 0: + case 3: + case 4: + fromrect.x = 0; + break; + default: + break; + } + //if(i!=2) + // fromrect.x = 0; + //else + // fromrect.x = CLOCK_WIDTH * 10; //the colon + + SDL_BlitSurface(numberBank, &fromrect, thisLetter->sprite, &torect); + + SDL_BlitSurface(numberBank, &blankRect, thisLetter->replace, &torect); + } + + thisLetter->x = CLOCK_X; + thisLetter->y = CLOCK_Y; + thisLetter->h = thisLetter->sprite->h; + thisLetter->w = thisLetter->sprite->w; + thisLetter->toX = thisLetter->x; + thisLetter->toY = thisLetter->y; + thisLetter->next = NULL; + thisLetter->box = CONTROLS; + thisLetter->index = index++; + + previousLetter->next = thisLetter; + clockSprite = thisLetter; +} + +/***********************************************************/ +void addScore(struct sprite** letters, SDL_Surface* screen){ +// add the Score to the sprites +// keep a module reference to it for quick and easy update + +struct sprite *thisLetter = NULL, *previousLetter = NULL, *current = *letters; +SDL_Rect fromrect, torect, blankRect; +Uint32 flags = SDL_SRCCOLORKEY; +Uint8 bpp; +Uint32 rmask, gmask, bmask, amask; +int index = 0; +int i; + + blankRect.x = SCORE_WIDTH * 11; + blankRect.y = 0; + blankRect.w = SCORE_WIDTH; + blankRect.h = SCORE_HEIGHT; + + fromrect.x = 0; + fromrect.y = 0; + fromrect.w = SCORE_WIDTH; + fromrect.h = SCORE_HEIGHT; + + torect.y = 0; + torect.w = SCORE_WIDTH; + torect.h = SCORE_HEIGHT; + + if(screen->flags & SDL_SWSURFACE) + flags |= SDL_SWSURFACE; + if(screen->flags & SDL_HWSURFACE) + flags |= SDL_HWSURFACE; + + bpp = screen->format->BitsPerPixel; + rmask = screen->format->Rmask; + gmask = screen->format->Gmask; + bmask = screen->format->Bmask; + amask = screen->format->Amask; + + // add the score onto the end - so we don't slow letter processing any + while (current != NULL){ + previousLetter = current; + current =current->next; + } + + //previousLetter = clockSprite; + + thisLetter=malloc(sizeof(struct sprite)); + + thisLetter->sprite = SDL_CreateRGBSurface(flags, SCORE_WIDTH*5, SCORE_HEIGHT, bpp, rmask, gmask, bmask, amask); + thisLetter->replace = SDL_CreateRGBSurface(flags, SCORE_WIDTH*5, SCORE_HEIGHT, bpp, rmask, gmask, bmask, amask); + + for (i=0;i<5;i++){ + if (i==0) + fromrect.x = 0; + else + fromrect.x = SCORE_WIDTH*11; + torect.x = i * SCORE_WIDTH; + SDL_BlitSurface(numberBank, &fromrect, thisLetter->sprite, &torect); + SDL_BlitSurface(numberBank, &blankRect, thisLetter->replace, &torect); + } + + thisLetter->x = SCORE_X; + thisLetter->y = SCORE_Y; + thisLetter->h = thisLetter->sprite->h; + thisLetter->w = thisLetter->sprite->w; + thisLetter->toX = thisLetter->x; + thisLetter->toY = thisLetter->y; + thisLetter->next = NULL; + thisLetter->box = CONTROLS; + thisLetter->index = index++; + + previousLetter->next = thisLetter; + scoreSprite = thisLetter; +} +/***********************************************************/ +void newGame(struct node** head, struct dlb_node* dlbHead, SDL_Surface* screen, struct sprite** letters){ + +char* guess; +char* remain; +//pthread_t clock; +int happy = 0; // we don't want any more than ones with 66 answers - that's all we can show... +int i; + + // show background + ShowBMP("images/background.bmp",screen, 0,0); + + destroyLetters(&(*letters)); + + guess = malloc(sizeof(char)*50); + remain = malloc(sizeof(char)*50); + + while (!happy){ + strcpy(guess,""); + strcpy(rootWord, getRandomWord()); + bigWordLen = strlen(rootWord)-1; + strcpy(remain,rootWord); + + rootWord[bigWordLen] = '\0'; + + // destroy answers list + destroyAnswers(&(*head)); + + // generate anagrams from random word + ag(&(*head), dlbHead, &guess, &remain); + + sort(&(*head)); + answersSought = Length(*head); + happy = ((answersSought <= 77) && (answersSought >= 6)); + + if(!happy){ + printf("Too Many Answers! word: %s, answers: %i\n", rootWord, answersSought); + } + } + + for (i=bigWordLen;i<7;i++){ + remain[i]=''; + } + + remain[7] = '\0'; + +// printf("%s,%i\n", remain, bigWordLen); + remain[bigWordLen]='\0'; + + shuffleWord(&remain); + strcpy(shuffle, remain); + +// printf("shuffle:%s\n", shuffle); + free(guess); + free(remain); + + strcpy(answer, ""); + + //build up the letter sprites + buildLetters(&(*letters), screen); + addClock(&(*letters), screen); + addScore(&(*letters), screen); + + // display all answer boxes + displayAnswerBoxes(*head, screen); + + gotBigWord = 0; + score = 0; + updateTheScore = 1; + gamePaused = 0; + winGame = 0; + answersGot = 0; + + gameStart = time(0); + gameTime = 0; + stopTheClock = 0; + + // create the clock loop on a new thread + //pthread_create(&clock, NULL, updateClock, NULL); +} +/***********************************************************/ +void gameLoop(struct node** head, struct dlb_node* dlbHead, SDL_Surface* screen, struct sprite** letters){ + +int done=0; +SDL_Event event; +int timeNow; + + // main game loop + while (!done){ + + if(winGame){ + + stopTheClock = 1; + solvePuzzle = 1; + } + + if((gameTime < AVAILABLE_TIME) && !stopTheClock){ + timeNow = time(0) - gameStart; + if (timeNow!=gameTime){ + gameTime = timeNow; + updateTime(screen); + } + } + else{ + if (!stopTheClock){ + stopTheClock = 1; + solvePuzzle = 1; + } + } + + // check messages + if(solvePuzzle){ + // walk the list, setting everything to found + solveIt(*head); + clearWord(&(*letters)); + strcpy(shuffle, ""); + strcpy(answer, rootWord); + //displayLetters(screen); + displayAnswerBoxes(*head, screen); + gamePaused = 1; + if (!stopTheClock){ + stopTheClock = 1; + } + + solvePuzzle = 0; + } + + if (updateAnswers){ + //move letters back down again + clearWord(&(*letters)); + //displayLetters(screen); + displayAnswerBoxes(*head, screen); + + updateAnswers = 0; + } + + if(startNewGame){ + //move letters back down again + if (!gotBigWord){ + totalScore = 0; + } + newGame(&(*head), dlbHead, screen, &(*letters)); + + startNewGame = 0; + } + + if(updateTheScore){ + updateScore(screen); + + updateTheScore = 0; + } + + if (shuffleRemaining){ + // shuffle up the shuffle box + char* shuffler; + shuffler = malloc(sizeof(char)*8); + strcpy(shuffler, shuffle); + shuffleAvailableLetters(&shuffler, &(*letters)); + strcpy(shuffle, shuffler); + free(shuffler); + //clearLetters(screen); + //displayLetters(screen); + + shuffleRemaining = 0; + + + } + + if (clearGuess){ + // clear the guess; + if (clearWord(&(*letters)) > 0) + Mix_PlayChannel(-1, getSound("clear"),0); + + clearGuess = 0; + } + + if (quitGame){ + done=1; + } + + while (SDL_PollEvent(&event)) + { + switch (event.type) { + case SDL_MOUSEBUTTONDOWN: +// printf("shuffle: %s\n", shuffle); +// printf("guess: %s\n", answer); + clickDetect(event.button.button, event.button.x, event.button.y, screen, *head, &(*letters)); + break; + case SDL_QUIT: + done=1; + } + } + moveSprites(&screen, &(*letters), letterSpeed); + } +} + +/***********************************************************/ +int main(int argc, char *argv[]){ + +struct node* head = NULL; +struct dlb_node* dlbHead = NULL; +SDL_Surface *screen; +struct sprite* letters = NULL; +//pthread_t audio; + + // seed the random generator + srand(time(NULL)); + + if (SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0){ + fprintf(stderr, "Unable to init SDL: %s\n", SDL_GetError()); + exit(1); + } + + atexit(SDL_Quit); + + screen=SDL_SetVideoMode(800,600,16,SDL_HWSURFACE|SDL_DOUBLEBUF);//|SDL_FULLSCREEN); + if (screen == NULL) + { + printf("Unable to set 800x600 video: %s\n", SDL_GetError()); + exit(1); + } + + SDL_WM_SetCaption("Anagramarama", "ANAGRAMARAMA"); + + // buffer sounds + int audio_rate = MIX_DEFAULT_FREQUENCY; + Uint16 audio_format = AUDIO_S16; + int audio_channels = 1; + int audio_buffers = 256; + + if(Mix_OpenAudio(audio_rate, audio_format, audio_channels, audio_buffers)){ + printf("unable to open audio!\n"); + exit(1); + } + + bufferSounds(&soundCache); + + // create the audio handler on a new thread + //pthread_create(&audio, NULL, handleSounds, NULL); + + // create dictionary + createDLBTree(&dlbHead); + + // cache in-game graphics + letterBank = SDL_LoadBMP("images/letterBank.bmp"); + smallLetterBank = SDL_LoadBMP("images/smallLetterBank.bmp"); + numberBank = SDL_LoadBMP("images/numberBank.bmp"); + + rootWord = malloc(sizeof(char)*9); + newGame(&head, dlbHead, screen, &letters); + + gameLoop(&head, dlbHead, screen, &letters); + + // tidy up and exit + free(rootWord); + Mix_CloseAudio(); + clearSoundBuffer(&soundCache); + //trashDLBTree(); + destroyLetters(&letters); + SDL_FreeSurface(screen); + SDL_FreeSurface(letterBank); + SDL_FreeSurface(smallLetterBank); + SDL_FreeSurface(numberBank); + //SDL_Quit(); - no need to call this directly - we do it with the atexit() command + return 0; +} diff --git a/src/ag.h b/src/ag.h new file mode 100755 index 0000000..71ef861 --- /dev/null +++ b/src/ag.h @@ -0,0 +1,93 @@ +/* +Anagramarama - A word game. Like anagrams? You'll love anagramarama! +Copyright (C) 2003 Colm Gallagher + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Contact Details: colm@coralquest.com + 12 Weston Terrace, West Kilbride, KA23 9JX. Scotland. +*/ + +// ASCII OFFSET to convert a number to it's character equivalent +#define NUM_TO_CHAR 48 + +// pixel locations of boxes +#define SHUFFLEBOX 110 +#define ANSWERBOX 245 +#define BOX_START 30 +#define BOX_LENGTH 644 + +#define LETTERSTARTPOS 80 +#define LETTERWIDTH 80 +#define LETTERHEIGHT 65 +#define LETTERSPACING 5 + +// which box are we working with +#define ANSWER 1 +#define SHUFFLE 2 +#define CONTROLS 3 + +// enter button size and position +#define ENTERBOXSTARTX 690 +#define ENTERBOXLENGTH 40 +#define ENTERBOXSTARTY 254 +#define ENTERBOXHEIGHT 35 + +// clear button size and position +#define CLEARBOXSTARTX 690 +#define CLEARBOXLENGTH 40 +#define CLEARBOXSTARTY 304 +#define CLEARBOXHEIGHT 40 + +// shuffle button size and position +#define SHUFFLEBOXSTARTX 618 +#define SHUFFLEBOXLENGTH 66 +#define SHUFFLEBOXSTARTY 206 +#define SHUFFLEBOXHEIGHT 16 + +// solve button size and position +#define SOLVEBOXSTARTX 612 +#define SOLVEBOXLENGTH 66 +#define SOLVEBOXSTARTY 0 +#define SOLVEBOXHEIGHT 30 + +// new button size and position +#define NEWBOXSTARTX 686 +#define NEWBOXLENGTH 46 +#define NEWBOXSTARTY 0 +#define NEWBOXHEIGHT 30 + +// quit button size and position +#define QUITBOXSTARTX 742 +#define QUITBOXLENGTH 58 +#define QUITBOXSTARTY 0 +#define QUITBOXHEIGHT 30 + +// define the clock position and character width +#define CLOCK_X 690 +#define CLOCK_Y 35 +#define CLOCK_WIDTH 18 +#define CLOCK_HEIGHT 32 + +// define the clock position and character width +#define SCORE_X 690 +#define SCORE_Y 67 +#define SCORE_WIDTH 18 +#define SCORE_HEIGHT 32 + +#define SPACE_CHAR '' +#define ASCII_SPACE 32 + +#define AVAILABLE_TIME 300 diff --git a/src/dlb.c b/src/dlb.c new file mode 100755 index 0000000..029aacf --- /dev/null +++ b/src/dlb.c @@ -0,0 +1,154 @@ +/* +Anagramarama - A word game. Like anagrams? You'll love anagramarama! +Copyright (C) 2003 Colm Gallagher + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Contact Details: colm@coralquest.com + 12 Weston Terrace, West Kilbride, KA23 9JX. Scotland. +*/ + +#include +#include +#include +#include "dlb.h" + +/***************************************************************/ +struct dlb_node* dlb_insertLetter(char thisLetter){ +// create and return a new letter node +struct dlb_node* newNode = malloc(sizeof(struct dlb_node)); + +// printf("dbl_insertLetter %c\n", thisLetter); + + newNode->letter = thisLetter; + newNode->valid = 0; + newNode->sibling = NULL; + newNode->child = NULL; + + return newNode; +} + +/***************************************************************/ +void dlb_push(struct dlb_node** dlbHead, char* thisWord){ +// add a new word to the dictionary +struct dlb_node* current = *dlbHead; +struct dlb_node* previous = NULL; +int i=0; +char letter; +int child = 0; +int sibling = 0; +int newHead = (*dlbHead==NULL); + +// printf("dbl_push %s\n", thisWord); +// printf("head : %i\n", newHead); + + while (i<=strlen(thisWord)-1){ + + letter = thisWord[i]; + + if (current == NULL){ + current = dlb_insertLetter(letter); + if (newHead){ + *dlbHead = current; + newHead = 0; + } + if (child){ + previous->child = current; + } + if (sibling){ + previous->sibling = current; + } + } + + child = 0; + sibling = 0; + + previous = current; + + if (letter == previous->letter){ + i++; + child = 1; + current = previous->child; + } + else{ + sibling = 1; + current = previous->sibling; + } + } + previous->valid = 1; +} + +/***************************************************************/ +void createDLBTree(struct dlb_node** dlbHead){ +// open the wordlist file and push all words onto the dictionary + +FILE* wordlist; +char wordFromList[50]; + + //printf("createDLBTree\n"); + + // open wordlist file + wordlist = fopen("wordlist.txt", "r"); + + // get each word from the list + while (fscanf(wordlist, "%s", wordFromList) != EOF){ + dlb_push(&(*dlbHead),wordFromList); + } + + // close wordlist file + fclose(wordlist); +} + +/***************************************************************/ +int dlb_lookup(struct dlb_node* dlbHead, char* thisWord){ +// determine if a given word is in the dictionary +// essentially the same as a push, but doesn't add +// any of the new letters + +struct dlb_node* current = dlbHead; +struct dlb_node* previous = NULL; +int i=0; +char letter; +int retval = 0; + + //printf("dlb_lookup %s\n", thisWord); + + while (i<=strlen(thisWord)-1){ + + if (current == NULL) { + retval = 0; + break; + } + + //printf("%c",current->letter); + + letter = thisWord[i]; + + previous = current; + + if (letter == previous->letter){ + i++; + current = previous->child; + //printf(".%c., %i\n",previous->letter,previous->valid); + retval = previous->valid; + } + else{ + current = previous->sibling; + retval = 0; + } + } + + return retval; +} diff --git a/src/dlb.h b/src/dlb.h new file mode 100755 index 0000000..8cebd20 --- /dev/null +++ b/src/dlb.h @@ -0,0 +1,36 @@ +/* +Anagramarama - A word game. Like anagrams? You'll love anagramarama! +Copyright (C) 2003 Colm Gallagher + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Contact Details: colm@coralquest.com + 12 Weston Terrace, West Kilbride, KA23 9JX. Scotland. +*/ + +#include + +struct dlb_node{ + + char letter; + int valid; + struct dlb_node* sibling; + struct dlb_node* child; +}; + +struct dlb_node* dlb_insertLetter(char thisLetter); +void dlb_push(struct dlb_node** dlbHead, char* thisWord); +void createDLBTree(struct dlb_node** dlbHead); +int dlb_lookup(struct dlb_node* dlbHead, char* thisWord); diff --git a/src/linked.c b/src/linked.c new file mode 100755 index 0000000..3bb0204 --- /dev/null +++ b/src/linked.c @@ -0,0 +1,167 @@ +/* +Anagramarama - A word game. Like anagrams? You'll love anagramarama! +Copyright (C) 2003 Colm Gallagher + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Contact Details: colm@coralquest.com + 12 Weston Terrace, West Kilbride, KA23 9JX. Scotland. +*/ + +#include +#include +#include "linked.h" + +/***********************************************************/ +int Length(struct node* head){ + +struct node* current = head; +int count = 0; + + while (current != NULL){ + //printf("%s\n", current->anagram); + count++; + current = current->next; + } + + return count; +} + +/***********************************************************/ +void swap(struct node** from, struct node** to){ +// swaps the contents of 2 linked list nodes +// doesn't disturb the pointers + +char* swap; + + swap = malloc(sizeof((*from)->anagram)); + strcpy(swap, (*from)->anagram); + (*from)->anagram = (*to)->anagram; + (*from)->length = (*to)->length; + (*to)->anagram = swap; + (*to)->length = strlen(swap); + +} + +/***********************************************************/ +void sort(struct node** headRef){ +// sort the linked list alpha/num of chars +struct node* current = *headRef; +struct node* next = malloc(sizeof(struct node)); +int done = 0; +int swaps = 0; + + // walk the list + while (!done){ + while (current !=NULL){ + next = current->next; + if (next != NULL){ + //printf("%s, %s - %i\n", next->anagram, current->anagram, strcmp(next->anagram, current->anagram)); + if (strcmp(next->anagram, current->anagram)<0){ + swap(&next, ¤t); + swaps++; + } + } + current = current->next; + } + if (!swaps){ + done = 1; + } + else{ + swaps = 0; + current = *headRef; + } + } + + done = 0; + current = *headRef; + swaps = 0; + + // walk the list + while (!done){ + while (current !=NULL){ + next = current->next; + if (next != NULL){ + //printf("%s, %s \n", next->anagram, current->anagram); + if (strlen(next->anagram) < strlen(current->anagram)){ + swap(&next, ¤t); + swaps++; + } + } + current = current->next; + } + if (!swaps){ + done = 1; + } + else{ + swaps = 0; + current = *headRef; + } + } + + free(next); +} + +/***********************************************************/ +void destroyAnswers(struct node** headRef){ +// destroy the whole answers list + +struct node* current = *headRef; +struct node* previous = *headRef; + + while (current != NULL){ + free(current->anagram); + previous = current; + current = current->next; + free(previous); + previous = NULL; + } + + *headRef = NULL; +} + + + +/***********************************************************/ +void push(struct node** headRef, char* anagram){ + +struct node* newNode = malloc(sizeof(struct node)); +int len; +struct node* current = *headRef; +int duplicate = 0; + + // walk the list first, so we can ignore duplicates... + // this is probably slower than clearing duplicates at the end + // but simpler to write in the first instance + while (current != NULL){ + if (!strcmp(anagram, current->anagram)){ + duplicate = 1; + break; + } + current = current->next; + } + + if (!duplicate){ + len = strlen(anagram+1); + newNode->anagram = malloc(sizeof(char)*len); + strcpy(newNode->anagram, anagram); + newNode->length = len + 1; + newNode->found = 0; + newNode->guessed = 0; + newNode->next = *headRef; // dereference back the the real head pointer + + *headRef = newNode; // ditto when replacing it with the new one + } +} diff --git a/src/linked.h b/src/linked.h new file mode 100755 index 0000000..4c6d772 --- /dev/null +++ b/src/linked.h @@ -0,0 +1,35 @@ +/* +Anagramarama - A word game. Like anagrams? You'll love anagramarama! +Copyright (C) 2003 Colm Gallagher + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Contact Details: colm@coralquest.com + 12 Weston Terrace, West Kilbride, KA23 9JX. Scotland. +*/ + +struct node { + char* anagram; + int found; + int guessed; + int length; + struct node* next; +}; + +int Length(struct node* head); +void swap(struct node** from, struct node** to); +void sort(struct node** headRef); +void destroyAnswers(struct node** headRef); +void push(struct node** headRef, char* anagram); diff --git a/src/sound.c b/src/sound.c new file mode 100755 index 0000000..01d9bad --- /dev/null +++ b/src/sound.c @@ -0,0 +1,289 @@ +/* +Anagramarama - A word game. Like anagrams? You'll love anagramarama! +Copyright (C) 2003 Colm Gallagher + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Contact Details: colm@coralquest.com + 12 Weston Terrace, West Kilbride, KA23 9JX. Scotland. +*/ + +#include +#include +#include +#include +#include + +struct sound{ + char* name; + SDL_AudioSpec spec; + Uint8 *audio_chunk; + Uint32 audio_len; + Uint8 *audio_pos; + struct sound* next; +}; + +struct soundQueue{ + char* name; + struct soundQueue* next; +}; + +//Uint32 audio_len; +//Uint8 *audio_pos; + +//struct sound* soundCache = NULL; +//struct soundQueue* sounds = NULL; + +/*******************************************************************************/ +//void fill_audio(void *udata, Uint8 *stream, int len){ +// The audio function callback takes the following parameters: +// stream: A pointer to the audio buffer to be filled +// len: The length (in bytes) of the audio buffer + + /* Only play if we have data left */ +// if ( audio_len == 0 ) +// return; + + /* Mix as much data as possible */ +// len = ( len > audio_len ? audio_len : len ); +// SDL_MixAudio(stream, audio_pos, len, SDL_MIX_MAXVOLUME); +// audio_pos += len; +// audio_len -= len; +//} + +/*******************************************************************************/ +void pushSound(struct sound** soundCache, char* name, char* filename){ + +struct sound* thisSound = NULL; + + thisSound = malloc(sizeof(struct sound)); + thisSound->name = malloc(sizeof(name)*strlen(name)); + strcpy(thisSound->name, name); + /* Set the audio format */ + thisSound->spec.freq = 22050; + thisSound->spec.format = AUDIO_S16; + thisSound->spec.channels = 2; /* 1 = mono, 2 = stereo */ + thisSound->spec.samples = 1024; /* Good low-latency value for callback */ + thisSound->spec.callback = NULL; // null for now - we'll set the local ref in the play routine + thisSound->spec.userdata = NULL; + thisSound->next = *soundCache; + + if (!strcmp(name, "playArea")){ + // create a big area to mix and play the audio in +// thisSound->audio_len = malloc(sizeof(Uint32)); + thisSound->audio_len = 8152; + thisSound->audio_chunk = malloc(sizeof(Uint8)*thisSound->audio_len); + } + else{ + // Attempt to load a sample + if (!SDL_LoadWAV(filename, &thisSound->spec, &thisSound->audio_chunk, &thisSound->audio_len)){ + SDL_CloseAudio(); + fprintf(stderr, "Error: %s", SDL_GetError()); + return; + } + } + + *soundCache = thisSound; +} + +/*******************************************************************************/ +void bufferSounds(struct sound** soundCache){ + + pushSound(&(*soundCache),"click", "audio/click.wav"); + pushSound(&(*soundCache),"click2", "audio/click2.wav"); + pushSound(&(*soundCache),"found", "audio/found.wav"); + pushSound(&(*soundCache),"playArea", ""); +} + +/*******************************************************************************/ +void clearSoundBuffer(struct sound** soundCache){ + +struct sound* currentSound = *soundCache, *previousSound = NULL; + + printf("top\n"); + + while (currentSound!=NULL){ + + printf("in top\n"); + + SDL_FreeWAV(currentSound->audio_chunk); + free(currentSound->name); + previousSound = currentSound; + currentSound = currentSound->next; + free(previousSound); + + printf("in botton\n"); + } + + printf("bottom\n"); +} + +/*******************************************************************************/ +//void playSound(struct sound* soundCache, char* name){ + +//struct sound* currentSound = soundCache; + +// while (currentSound!=NULL){ +// if (!strcmp(currentSound->name, name)){ +// printf("current sound is : %s\n", currentSound->name); +// audio_pos = currentSound->audio_chunk; +// audio_len = currentSound->audio_len; + /* Open the audio device, forcing the desired format */ +// currentSound->spec.callback = fill_audio; +// if ( SDL_OpenAudio(¤tSound->spec, NULL) < 0 ) { +// fprintf(stderr, "Couldn't open audio: %s\n", SDL_GetError()); +// return; +// } + + // Unpause the audio +// SDL_PauseAudio(0); + + /* Wait for sound to complete */ +// while ( audio_len > 0 ) { +// SDL_Delay(100); /* Sleep 1/10 second */ +// } + +// SDL_CloseAudio(); +// break; + +// } +// currentSound = currentSound->next; +// } +//} + +/*******************************************************************************/ +void pushSoundQueue(struct soundQueue** sounds, char* name){ + +struct soundQueue* current = *sounds; +struct soundQueue* previous = NULL; + + + // get the tail - won't ever be very many, so not too lossy + // and saves handling a tail pointer + while (current != NULL){ + previous = current; + current = current->next; + } + + current = NULL; + // OK a bit nasty - i'm reusing current here, i only + // used it above for running through the list + + current = malloc(sizeof(struct soundQueue)); + current->name = malloc(sizeof(char)*strlen(name)); + strcpy(current->name,name); + current->next = NULL; + + + // join up the queue + if (previous == NULL) + // first time only, the head is previous + *sounds = current; + else + previous->next = current; + +} + +/*******************************************************************************/ +void popSoundQueue(struct soundQueue** sounds, char* name){ + +struct soundQueue* oldHead = *sounds; + + *sounds = oldHead->next; + + free(oldHead->name); + free(oldHead); +} + +/*******************************************************************************/ +//int doneSounds = 0; +//int audioThreadOpen = 0; +//void* handleSounds(void *arg){ + +//char* name; + +// audioThreadOpen = 1; + + // if we're currently playing a sound or have none to handle - just leave +// while(!doneSounds){ + +// if(SDL_GetAudioStatus() == SDL_AUDIO_STOPPED && sounds != NULL){ + // get next sound off the queue and then pop it +// name = malloc(sizeof(char)*strlen(sounds->name)); +// strcpy(name, sounds->name); +// popSoundQueue(&sounds, name); +// printf("sound: %s\n", name); +// playSound(soundCache, name); + +// free(name); +// } +// } +// audioThreadOpen = 0; +// return 0; +//} + +/*******************************************************************************/ +/*int main(int argc, char** argv){ + +SDL_Surface* screen = NULL; +SDL_Event event; +Uint8* key; + +pthread_t audio; + + if (SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0){ + fprintf(stderr, "Unable to init SDL: %s\n", SDL_GetError()); + exit(1); + } + + screen=SDL_SetVideoMode(640,480,8,0); + + atexit(SDL_Quit); + + soundCache=NULL; + soundCache = malloc(sizeof(struct sound)); + bufferSounds(&soundCache); + + //sounds = malloc(sizeof(struct soundQueue)); + pushSoundQueue(&sounds, "click"); + pushSoundQueue(&sounds, "click2"); + pushSoundQueue(&sounds, "click"); + pushSoundQueue(&sounds, "click2"); + pushSoundQueue(&sounds, "click2"); + pushSoundQueue(&sounds, "found"); + + // create the audio handler on a new thread + pthread_create(&audio, NULL, handleSounds, NULL); + +// playSound(soundCache, "click"); +// playSound(soundCache, "click2"); +// playSound(soundCache, "found"); + + do{ + key = SDL_GetKeyState(NULL); + if(SDL_PollEvent(&event)) + if(event.type == SDL_QUIT) + break; + } + while (!key[SDLK_ESCAPE]); + + doneSounds=1; + while (audioThreadOpen){ + SDL_Delay(500); + } + + clearSoundBuffer(&soundCache); + return 0; +}*/ diff --git a/src/sound.h b/src/sound.h new file mode 100755 index 0000000..6c700f5 --- /dev/null +++ b/src/sound.h @@ -0,0 +1,44 @@ +/* +Anagramarama - A word game. Like anagrams? You'll love anagramarama! +Copyright (C) 2003 Colm Gallagher + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Contact Details: colm@coralquest.com + 12 Weston Terrace, West Kilbride, KA23 9JX. Scotland. +*/ + +struct sound{ + char* name; + SDL_AudioSpec spec; + Uint8 *audio_chunk; + Uint32 audio_len; + Uint8 *audio_pos; + struct sound* next; +}; + +struct soundQueue{ + char* name; + struct soundQueue* next; +}; + +//void fill_audio(void *udata, Uint8 *stream, int len); +void pushSound(struct sound** soundCache, char* name, char* filename); +void bufferSounds(struct sound** soundCache); +void clearSoundBuffer(); +void playSound(struct sound* soundCache, char* name); +void pushSoundQueue(struct soundQueue** sounds, char* name); +void popSoundQueue(struct soundQueue** sounds, char* name); +void* handleSounds(void *arg); diff --git a/src/sprite.c b/src/sprite.c new file mode 100755 index 0000000..051703a --- /dev/null +++ b/src/sprite.c @@ -0,0 +1,153 @@ +/* +Anagramarama - A word game. Like anagrams? You'll love anagramarama! +Copyright (C) 2003 Colm Gallagher + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Contact Details: colm@coralquest.com + 12 Weston Terrace, West Kilbride, KA23 9JX. Scotland. +*/ + +#include +#include +#include +#include "sprite.h" + +/********************************************************************/ +void setBackground(SDL_Surface** screen, struct sprite** movie){ + +SDL_Rect rect; + + rect.x = (*movie)->x; + rect.y = (*movie)->y; + rect.w = (*movie)->w; + rect.h = (*movie)->h; + + // copy the background into the replace buffer + SDL_BlitSurface(*screen, &rect, (*movie)->replace, NULL); +} + +/********************************************************************/ +void showSprite(SDL_Surface** screen, struct sprite** movie){ + +SDL_Rect rect; + + rect.x = (*movie)->x; + rect.y = (*movie)->y; + rect.w = (*movie)->w; + rect.h = (*movie)->h; + + // display the image in new location + SDL_SetColorKey((*movie)->sprite, SDL_SRCCOLORKEY, SDL_MapRGB((*movie)->sprite->format,255,0,255)); + SDL_BlitSurface((*movie)->sprite, NULL, *screen, &rect); +} + +/********************************************************************/ +void resetBackground(SDL_Surface** screen, struct sprite** movie){ + +SDL_Rect rect; + + rect.x = (*movie)->x; + rect.y = (*movie)->y; + rect.w = (*movie)->w; + rect.h = (*movie)->h; + + // put the screen back the way it was + SDL_SetColorKey((*movie)->replace, SDL_SRCCOLORKEY, SDL_MapRGB((*movie)->replace->format,255,0,255)); + SDL_BlitSurface((*movie)->replace, NULL, *screen, &rect); +} + +/********************************************************************/ +void moveSprite(SDL_Surface** screen, struct sprite** movie, int letterSpeed){ + +int i; +int x, y; +int Xsteps; + + // move a sprite from it's curent location to the new location + if( ( (*movie)->y != (*movie)->toY ) || ( (*movie)->x != (*movie)->toX ) ){ + + x = (*movie)->toX - (*movie)->x; + y = (*movie)->toY - (*movie)->y; + if (y){ + if (x<0) x *= -1; + if (y<0) y *= -1; + Xsteps = (x / y) * letterSpeed; + } + else{ + Xsteps = letterSpeed; + } + + for (i = 0; ix < (*movie)->toX){ + (*movie)->x++; + } + if((*movie)->x > (*movie)->toX){ + (*movie)->x--; + } + } + + for (i=0;iy < (*movie)->toY){ + (*movie)->y++; + } + if((*movie)->y > (*movie)->toY){ + (*movie)->y--; + } + } + } + + setBackground(&(*screen), &(*movie)); +} + +/********************************************************************/ +void moveSprites(SDL_Surface** screen, struct sprite** letters, int letterSpeed){ + +struct sprite* current; + + current= *letters; + while(current!=NULL){ + moveSprite(&(*screen), ¤t, letterSpeed); + current = current->next; + } + current = *letters; + while(current!=NULL){ + showSprite(&(*screen), ¤t); + current=current->next; + } + SDL_Flip(*screen); + current = *letters; + while(current!=NULL){ + resetBackground(&(*screen), ¤t); + current= current->next; + } +} + +/********************************************************************/ +void destroyLetters(struct sprite** letters){ +struct sprite* current = *letters; +struct sprite* previous = NULL; + + while(current!=NULL){ + SDL_FreeSurface(current->sprite); + SDL_FreeSurface(current->replace); + previous = current; + current = current->next; + free(previous); + } + + (*letters)=NULL; + +} diff --git a/src/sprite.h b/src/sprite.h new file mode 100755 index 0000000..e72d64d --- /dev/null +++ b/src/sprite.h @@ -0,0 +1,50 @@ +/* +Anagramarama - A word game. Like anagrams? You'll love anagramarama! +Copyright (C) 2003 Colm Gallagher + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Contact Details: colm@coralquest.com + 12 Weston Terrace, West Kilbride, KA23 9JX. Scotland. +*/ + +#define LETTER_FAST 15 +#define LETTER_SLOW 1 +#define GAME_LETTER_HEIGHT 90 +#define GAME_LETTER_WIDTH 80 +#define GAME_LETTER_SPACE 2 +#define SHUFFLE_BOX_Y 107 +#define BOX_START_X 80 +#define ANSWER_BOX_Y 243 + +struct sprite{ + SDL_Surface* sprite; + SDL_Surface* replace; + int x,y,w,h; + int toX, toY; + struct sprite* next; + int index; + int box; +}; + +void setBackground(SDL_Surface** screen, struct sprite** movie); +void showSprite(SDL_Surface** screen, struct sprite** movie); +void resetBackground(SDL_Surface** screen, struct sprite** movie); +void moveSprite(SDL_Surface** screen, struct sprite** movie, int letterSpeed); +void moveSprites(SDL_Surface** screen, struct sprite** letters, int LetterSpeed); +int nextBlankPosition(int box, int* index); +//void clickDetect(int button, int x, int y, SDL_Surface *screen, struct sprite** letters); +void destroyLetters(struct sprite** letters); +//void buildLetters(struct sprite** letters, SDL_Surface* screen); diff --git a/wordlist.txt b/wordlist.txt new file mode 100755 index 0000000..b8980f0 --- /dev/null +++ b/wordlist.txt @@ -0,0 +1,17454 @@ +aback +abaft +abandon +abase +abased +abaser +abases +abash +abashed +abashes +abasing +abate +abated +abater +abates +abating +abbe +abbey +abbeys +abbot +abbots +abdomen +abduct +abducts +abed +abet +abets +abetted +abetter +abettor +abhor +abhors +abide +abided +abider +abides +abiding +ability +abject +abjure +abjured +abjurer +abjures +ablate +ablated +ablates +ablaze +able +abler +ablest +ably +aboard +abode +abodes +abolish +abort +aborted +aborter +aborts +abound +abounds +about +above +abrade +abraded +abrader +abrades +abreast +abridge +abroad +abrupt +abscess +abscond +absence +absent +absents +absolve +absorb +absorbs +abstain +absurd +abuse +abused +abuser +abusers +abuses +abusing +abusive +abut +abuts +abutted +abutter +abysmal +abyss +abysses +acacia +academy +accede +acceded +accedes +accent +accents +accept +accepts +access +acclaim +accord +accords +accost +accosts +account +accrue +accrued +accrues +accusal +accuse +accused +accuser +accuses +ace +aced +acer +aces +acetate +acetone +ache +ached +aches +achieve +aching +acid +acidic +acidity +acidly +acids +acing +acme +acne +acned +acolyte +acorn +acorns +acquire +acquit +acquits +acre +acreage +acres +acrid +acridly +acrobat +acronym +across +acrylic +act +acted +acting +action +actions +active +actor +actors +actress +acts +actual +actuals +actuate +acuity +acumen +acute +acutely +acuter +acutest +acyclic +ad +adage +adages +adagio +adagios +adamant +adapt +adapted +adapter +adaptor +adapts +add +added +addenda +adder +adders +addict +addicts +adding +address +adds +adduce +adduced +adducer +adduces +adduct +adducts +adept +adeptly +adepts +adhere +adhered +adherer +adheres +adieu +adjoin +adjoins +adjourn +adjudge +adjunct +adjure +adjured +adjures +adjust +adjusts +admiral +admire +admired +admirer +admires +admit +admits +admix +admixed +admixes +ado +adobe +adopt +adopted +adopter +adopts +adore +adored +adorer +adores +adoring +adorn +adorned +adorns +adrenal +adrift +adroit +ads +adsorb +adsorbs +adulate +adult +adultly +adults +advance +advent +adverb +adverbs +adverse +advice +advise +advised +advisee +adviser +advises +advisor +aegis +aerate +aerated +aerates +aerator +aerial +aerials +aerobic +aerosol +afar +afars +affable +affair +affairs +affect +affects +affirm +affirms +affix +affixed +affixes +afflict +afford +affords +affront +afghan +afghans +afield +afire +aflame +afloat +afoot +afore +afoul +afraid +afresh +aft +after +afters +again +against +agape +agar +agate +agates +age +aged +agedly +ageless +agency +agenda +agendas +agent +agents +ager +agers +ages +aghast +agile +agilely +agility +aging +agitate +agleam +aglow +ago +agog +agonies +agony +agree +agreed +agreer +agreers +agrees +ague +ah +ahead +aid +aide +aided +aider +aides +aiding +aids +ail +ailed +aileron +ailing +ailment +ails +aim +aimed +aimer +aimers +aiming +aimless +aims +air +airbag +airbags +airdrop +aired +airer +airers +airflow +airhead +airier +airiest +airily +airing +airings +airless +airlift +airline +airlock +airmail +airman +airmen +airport +airs +airship +airway +airways +airy +aisle +aisles +ajar +akimbo +akin +alarm +alarmed +alarms +alas +alba +albeit +album +albumen +albumin +albums +alchemy +alcohol +alcove +alcoved +alcoves +alder +ale +alee +alert +alerted +alerter +alertly +alerts +alfalfa +alga +algae +algebra +alias +aliased +aliases +alibi +alibis +alien +aliens +alight +align +aligned +aligner +aligns +alike +aliment +alimony +alive +alkali +alkalis +alkyl +all +allay +allayed +allays +allege +alleged +alleges +allegro +allele +alleles +allergy +alley +alleys +allied +allier +allies +allot +alloted +allots +allow +allowed +allows +alloy +alloyed +alloys +allude +alluded +alludes +allure +allured +allures +ally +allying +alma +almanac +almond +almonds +almoner +almost +alms +almsman +alnico +aloe +aloes +aloft +aloha +alone +along +aloof +aloofly +aloud +alpha +alpine +alps +already +also +altar +altars +alter +altered +alterer +alters +alto +altos +alum +alumna +alumnae +alumni +alumnus +alundum +alveoli +always +am +amain +amalgam +amass +amassed +amasser +amasses +amateur +amatory +amaze +amazed +amazer +amazers +amazes +amazing +amazon +amazons +amber +ambient +amble +ambled +ambler +ambles +ambling +ambush +amen +amend +amended +amender +amends +amenity +amiable +amid +amide +amidst +amigo +amino +amiss +amity +ammo +ammonia +amnesty +amoeba +amoebas +amok +among +amongst +amoral +amorous +amount +amounts +amour +amours +amp +ampere +amperes +ample +ampler +amplest +amplify +amply +ampoule +amps +ams +amulet +amulets +amuse +amused +amuser +amusers +amuses +amusing +amusive +amyl +an +anagram +anal +analogy +analyst +anarchy +anatomy +anchor +anchors +anchovy +ancient +and +anded +anders +anding +ands +anemone +anew +angel +angelic +angels +anger +angered +angers +angle +angled +angler +anglers +angles +angling +angrier +angrily +angry +angst +anguish +angular +aniline +animal +animals +animate +animism +anion +anionic +anions +anise +ankle +ankles +annal +annalen +annals +annex +annexed +annexes +annoy +annoyed +annoyer +annoys +annual +annuals +annul +annuls +annum +anode +anodes +anoint +anoints +anomaly +anomic +anomie +anon +another +answer +answers +ant +ante +anted +antenna +anthem +anthems +anther +anti +antic +antics +antigen +anting +antique +antler +ants +anus +anvil +anvils +anxiety +anxious +any +anybody +anyhow +anymore +anyone +anyones +anyway +anyways +aorta +apace +apart +apathy +ape +aped +aper +apes +apex +apexes +aphasia +aphasic +aphid +aphids +aphonic +apiary +apical +apiece +aping +apish +apishly +aplenty +aplomb +apogee +apogees +apology +apostle +apparel +appeal +appeals +appear +appears +appease +append +appends +applaud +apple +apples +applied +applier +applies +apply +appoint +apprise +apprize +approve +apricot +apron +aprons +apropos +apse +apses +apsis +apt +aptly +aptness +aqua +aquaria +aquas +aquatic +aqueous +aquifer +arable +arbiter +arc +arcade +arcaded +arcades +arcane +arced +arch +archaic +arched +archer +archers +archery +arches +arching +archive +archly +arcing +arclike +arcs +arctic +ardent +arduous +are +area +areas +arena +arenas +ares +argon +argot +argue +argued +arguer +arguers +argues +arguing +arid +aridity +aright +arise +arisen +ariser +arises +arising +ark +arm +armed +armer +armers +armful +armfuls +armhole +armies +arming +armload +armpit +armpits +arms +army +aroma +aromas +arose +around +arousal +arouse +aroused +arouses +arrack +arraign +arrange +arrant +array +arrayed +arrayer +arrays +arrears +arrest +arrests +arrival +arrive +arrived +arriver +arrives +arrow +arrowed +arrows +arroyo +arroyos +arsenal +arsenic +arsine +arsines +arson +art +artery +artful +article +artisan +artist +artists +artless +arts +artwork +as +ascend +ascends +ascent +ascetic +ascot +ascribe +aseptic +ash +ashamed +ashen +asher +ashes +ashman +ashore +ashtray +aside +asides +asinine +ask +askance +asked +asker +askers +askew +asking +asks +asleep +asocial +asp +aspect +aspects +aspen +asper +asphalt +aspic +aspire +aspired +aspirer +aspires +aspirin +ass +assail +assails +assault +assay +assayed +assayer +assen +assent +assents +assert +asserts +asses +assess +asset +assets +assign +assigns +assist +assists +assort +assorts +assuage +assume +assumed +assumer +assumes +assure +assured +assurer +assures +aster +asters +asthma +astound +astral +astray +astride +astute +asunder +asylum +asylums +at +ate +atheism +atheist +athlete +atlas +atoll +atolls +atom +atomic +atomics +atoms +atonal +atone +atoned +atones +atoning +atop +atrophy +attach +attache +attack +attacks +attain +attains +attempt +attend +attends +attest +attests +attic +attics +attire +attired +attires +attract +attune +attuned +attunes +auburn +auction +audible +audibly +audio +audit +audited +auditor +audits +auger +augers +aught +augment +augur +augurs +august +aunt +auntly +aunts +aura +aural +aurally +auras +aureole +aurora +auspice +austere +author +authors +autism +auto +autopsy +autos +autumn +autumns +avail +availed +availer +avails +avant +avarice +avenge +avenged +avenger +avenges +avenue +avenues +aver +average +averred +averrer +avers +averse +avert +averted +averts +avian +aviary +aviator +avid +avidity +avidly +avionic +avocado +avoid +avoided +avoider +avoids +avouch +avow +avowed +avower +avows +await +awaited +awaits +awake +awaked +awaken +awakens +awakes +awaking +award +awarded +awarder +awards +aware +awash +away +awe +awed +awesome +awful +awfully +awhile +awhiles +awing +awkward +awl +awls +awning +awnings +awoke +awry +ax +axe +axed +axer +axers +axes +axial +axially +axing +axiom +axioms +axion +axions +axis +axle +axles +axolotl +axon +axons +aye +ayer +ayers +ayes +azalea +azaleas +azimuth +azure +babble +babbled +babbler +babbles +babe +babes +babied +babies +baby +babying +babyish +babysit +bacilli +back +backed +backer +backers +backing +backlog +backs +backup +backups +bacon +baconer +bad +bade +baden +badge +badged +badger +badgers +badges +badging +badly +badness +bads +baffle +baffled +baffler +baffles +bag +bagel +bagels +baggage +bagged +bagger +baggers +baggier +baggies +bagging +baggy +bagpipe +bags +bah +bail +bailer +bailiff +bailing +bailly +bait +baited +baiter +baiting +baits +bake +baked +baker +bakers +bakery +bakes +baking +bakings +baklava +balance +balcony +bald +balder +balding +baldly +bale +baled +baleful +baler +balers +bales +baling +balk +balked +balker +balkier +balking +balks +balky +ball +ballad +ballads +ballast +balled +baller +ballers +ballet +ballets +balling +balloon +ballot +ballots +balls +balm +balmier +balms +balmy +balsa +balsam +balsams +bamboo +bamboos +ban +banal +banally +banana +bananas +band +bandage +banded +bander +bandied +bandies +banding +bandit +bandits +bands +bandy +bane +baneful +bang +banged +banger +banging +bangle +bangles +bangs +baning +banish +banjo +banjos +bank +banked +banker +bankers +banking +banks +banned +banner +banners +banning +banquet +bans +banshee +bantam +banter +banters +baptism +baptist +bar +barb +barbed +barbell +barber +barbers +barbs +bard +bards +bare +bared +barely +barer +bares +barest +barfly +bargain +barge +barged +barges +barging +baring +barium +bark +barked +barker +barkers +barking +barks +barley +barn +barns +baron +barons +barony +baroque +barrack +barrage +barred +barrel +barrels +barren +barrens +barrier +barring +barrow +barrows +bars +barter +barters +bas +basal +basally +basalt +base +based +basely +baseman +baser +bases +basest +bash +bashed +basher +bashes +bashful +bashing +basic +basics +basil +basin +basined +basing +basins +basis +bask +basked +basket +baskets +basking +bass +basses +basset +basso +bastard +baste +basted +baster +bastes +basting +bastion +bat +batch +batched +batcher +batches +bated +bater +bath +bathe +bathed +bather +bathers +bathes +bathing +bathos +baths +bathtub +bating +baton +batons +bats +batted +batten +battens +batter +batters +battery +batting +battle +battled +battler +battles +bauble +baubles +baud +bauds +bauxite +bawdier +bawdy +bawl +bawled +bawler +bawling +bawls +bay +bayed +baying +bayly +bayonet +bayou +bayous +bays +bazaar +bazaars +be +beach +beached +beaches +beacon +beacons +bead +beaded +beading +beadle +beadles +beads +beady +beagle +beagles +beak +beaked +beaker +beakers +beaks +beam +beamed +beamer +beamers +beaming +beams +bean +beanbag +beaned +beaner +beaners +beaning +beans +bear +beard +bearded +beards +bearer +bearers +bearing +bearish +bears +beast +beastly +beasts +beat +beaten +beater +beaters +beatify +beating +beatnik +beats +beau +beaus +beauty +beaver +beavers +becalm +becalms +became +because +beck +beckon +beckons +become +becomes +bed +bedbug +bedbugs +bedded +bedder +bedders +bedding +bedevil +bedfast +bedlam +bedpost +bedrock +bedroom +beds +bedside +bedtime +bee +beech +beechen +beecher +beef +beefed +beefer +beefers +beefier +beefing +beefs +beefy +beehive +been +beens +beep +beeped +beeper +beeping +beeps +beer +beers +bees +beet +beetle +beetled +beetles +beets +befall +befalls +befell +befit +befits +befog +befogs +before +befoul +befouls +beg +began +beget +begets +beggar +beggars +beggary +begged +begging +begin +begins +begot +begs +beguile +begun +behalf +behave +behaved +behaver +behaves +behead +beheld +behest +behind +behold +beholds +beige +being +beings +belated +belay +belayed +belays +belch +belched +belches +belfry +belie +belied +belief +beliefs +belier +belies +believe +bell +bellboy +belle +belles +bellhop +bellied +bellies +bellman +bellmen +bellow +bellows +bells +belly +belong +belongs +beloved +below +belt +belted +belting +belts +bely +belying +bemoan +bemoans +bench +benched +bencher +benches +bend +bended +bender +benders +bending +bends +beneath +benefit +benign +bent +bents +benzene +bequest +berate +berated +berates +bereave +bereft +beret +berets +berried +berries +berry +berth +berthed +berths +beryl +bes +beseech +beset +besets +beside +besides +besiege +bespeak +best +bested +bester +bestial +besting +bestow +bests +bet +beta +betas +beth +betide +betray +betrays +betroth +bets +better +betters +betting +between +betwixt +bevel +bevels +bevies +bevy +bewail +bewails +beware +bewitch +beyond +bias +biased +biases +biasing +bib +bibbed +bibbing +bible +bibles +bibs +biceps +bicker +bickers +bicycle +bid +bidden +bidder +bidders +biddies +bidding +biddy +bide +bided +bider +bides +biding +bids +bier +bifocal +big +bigger +biggest +bight +bights +bigly +bigness +bigot +bigoted +bigotry +bigots +bike +biked +biker +bikers +bikes +biking +bikini +bikinis +bile +bilge +bilged +bilges +bilging +bilk +bilked +bilker +bilking +bilks +bill +billed +biller +billers +billet +billets +billing +billion +billow +billows +bills +bimodal +bin +binary +bind +binded +binder +binders +binding +binds +bing +binge +bingen +binges +bingo +bingos +bins +biology +biopsy +biped +bipeds +biplane +bipolar +birch +birchen +bircher +birches +bird +birder +birdie +birdied +birdies +birds +birth +birthed +births +biscuit +bisect +bisects +bishop +bishops +bismuth +bison +bisons +bisque +bisques +bit +bitblt +bitblts +bitch +bitches +bite +biter +biters +bites +biting +bitmap +bitmaps +bits +bitser +bitten +bitter +bitters +bitwise +bivalve +bivouac +bizarre +blab +blabbed +blabs +black +blacked +blacken +blacker +blackly +blacks +bladder +blade +bladed +blades +blame +blamed +blamer +blamers +blames +blaming +blanch +bland +blandly +blank +blanked +blanker +blanket +blankly +blanks +blare +blared +blares +blaring +blase +blast +blasted +blaster +blasts +blatant +blaze +blazed +blazer +blazers +blazes +blazing +bleach +bleak +bleakly +blear +bleary +bleat +bleater +bleats +bled +bleed +bleeder +bleeds +blemish +blend +blended +blender +blends +bless +blessed +blesses +blew +blight +blimp +blimps +blind +blinded +blinder +blindly +blinds +blink +blinked +blinker +blinks +blip +blips +bliss +blister +blithe +blither +blitz +blitzes +bloat +bloated +bloater +bloats +blob +blobs +bloc +block +blocked +blocker +blocks +blocs +bloke +blokes +blond +blonde +blondes +blonds +blood +blooded +bloods +bloody +bloom +bloomed +bloomer +blooms +blossom +blot +blots +blotted +blouse +blouses +blow +blowed +blower +blowers +blowing +blown +blows +blowup +blubber +blue +blued +bluely +bluer +blues +bluest +bluff +bluffed +bluffer +bluffly +bluffs +bluing +bluish +blunder +blunt +blunted +blunter +bluntly +blunts +blur +blurb +blurred +blurry +blurs +blurt +blurted +blurter +blurts +blush +blushed +blusher +blushes +bluster +boar +board +boarded +boarder +boards +boast +boasted +boaster +boasts +boat +boated +boater +boaters +boating +boatman +boatmen +boats +bob +bobbed +bobbies +bobbin +bobbing +bobbins +bobby +bobs +bode +boded +bodes +bodice +bodied +bodies +bodily +boding +body +bodying +bog +bogged +boggle +boggled +boggles +bogs +bogus +boil +boiled +boiler +boilers +boiling +boils +bold +bolder +boldest +boldly +boll +bolster +bolt +bolted +bolter +bolting +bolts +bomb +bombard +bombast +bombed +bomber +bombers +bombing +bombs +bonanza +bond +bondage +bonded +bonder +bonders +bonding +bonds +bone +boned +boner +boners +bones +bonfire +bong +bonier +boning +bonnet +bonnets +bonnier +bonny +bonus +bonuses +bony +boo +boob +boobies +booboo +booby +book +booked +booker +bookers +bookie +bookies +booking +bookish +booklet +books +boolean +boom +boomed +boomer +booming +booms +boon +boor +boorish +boors +boos +boost +boosted +booster +boosts +boot +booted +booth +booths +booties +booting +bootleg +boots +booty +booze +boozer +boozing +borate +borated +borates +borax +border +borders +bore +bored +boredom +borer +borers +bores +boric +boring +born +borne +boron +borough +borrow +borrows +bosom +bosoms +boss +bossed +bosses +bosun +botany +botch +botched +botcher +botches +both +bother +bothers +bottle +bottled +bottler +bottles +bottom +bottoms +bough +boughed +boughs +bought +boulder +bounce +bounced +bouncer +bounces +bouncy +bound +bounded +bounden +bounder +bounds +bounty +bouquet +bourbon +bout +bouts +bovine +bovines +bow +bowed +bowel +bowels +bowen +bower +bowers +bowing +bowl +bowled +bowler +bowlers +bowline +bowling +bowls +bowman +bows +bowser +box +boxcar +boxcars +boxed +boxer +boxers +boxes +boxing +boxwood +boy +boycott +boyer +boyhood +boyish +boys +bra +brace +braced +bracer +braces +bracing +bracket +brae +braes +brag +bragged +bragger +brags +braid +braided +braider +braids +braille +brain +brained +brains +brainy +brake +braked +brakes +braking +bramble +brambly +bran +branch +brand +branded +brander +brands +brandy +bras +brash +brashly +brass +brassed +brasses +brassy +brat +brats +bravado +brave +braved +bravely +braver +bravery +braves +bravest +braving +bravo +bravoed +bravos +bravura +brawl +brawled +brawler +brawls +brawn +bray +brayed +brayer +braying +brays +braze +brazed +brazen +brazer +brazes +brazier +brazing +breach +bread +breaded +breads +breadth +break +breaker +breaks +breakup +breast +breasts +breath +breathe +breaths +breathy +bred +breech +breed +breeder +breeds +breeze +breezed +breezes +breezy +breve +breves +brevet +brevets +brevity +brew +brewed +brewer +brewers +brewery +brewing +brews +briar +briars +bribe +bribed +briber +bribers +bribes +bribing +brick +bricked +bricker +bricks +bridal +bride +brides +bridge +bridged +bridges +bridle +bridled +bridles +brief +briefed +briefer +briefly +briefs +brier +brig +brigade +bright +brights +brigs +brim +brimful +brimmed +brindle +brine +briner +bring +bringer +brings +brining +brink +brisk +brisker +briskly +bristle +brittle +broach +broad +broaden +broader +broadly +broads +brocade +broil +broiled +broiler +broils +broke +broken +broker +brokers +bromide +bromine +bronchi +bronze +bronzed +bronzer +bronzes +brooch +brood +brooder +broods +brook +brooked +brooks +broom +broomed +brooms +broth +brothel +brother +brought +brow +brown +browned +browner +brownie +brownly +browns +brows +browse +browsed +browser +browses +bruise +bruised +bruiser +bruises +brunch +brunt +brush +brushed +brusher +brushes +brushy +brusque +brutal +brute +brutes +brutish +bubble +bubbled +bubbler +bubbles +bubbly +buck +bucked +bucker +bucket +buckets +bucking +buckle +buckled +buckler +buckles +bucks +bucolic +bud +budded +buddies +budding +buddy +budge +budged +budges +budget +budgets +budging +buds +buff +buffalo +buffer +buffers +buffet +buffets +buffing +buffoon +buffs +bug +bugged +bugger +buggers +buggies +bugging +buggy +bugle +bugled +bugler +bugles +bugling +bugs +build +builded +builder +builds +buildup +built +bulb +bulbed +bulbs +bulge +bulged +bulges +bulging +bulk +bulked +bulkier +bulks +bulky +bull +bulldog +bulled +bullet +bullets +bullied +bullies +bulling +bullion +bullish +bulls +bully +bulwark +bum +bumble +bumbled +bumbler +bumbles +bummed +bummer +bummers +bumming +bump +bumped +bumper +bumpers +bumping +bumps +bums +bun +bunch +bunched +bunches +bundle +bundled +bundler +bundles +bungle +bungled +bungler +bungles +bunion +bunions +bunk +bunked +bunker +bunkers +bunking +bunks +bunnies +bunny +buns +bunt +bunted +bunter +bunters +bunting +bunts +buoy +buoyant +buoyed +buoying +buoys +burden +burdens +bureau +bureaus +burgeon +burger +burgess +burgher +burglar +burgle +burgled +burgles +burial +buried +burier +buries +burl +burled +burler +burlier +burly +burn +burned +burner +burners +burning +burnish +burns +burnt +burntly +burp +burped +burping +burps +burr +burred +burrer +burro +burros +burrow +burrows +burrs +bursa +bursas +burst +bursted +burster +bursts +bury +burying +bus +busboy +busboys +bused +buses +bush +bushed +bushel +bushels +bushes +bushier +bushing +bushy +busied +busier +busies +busiest +busily +busing +buss +bussed +busses +bussing +bust +bustard +busted +buster +busting +bustle +bustled +busts +busy +busying +but +butane +butcher +butler +butlers +butt +butte +butted +butter +butters +buttes +butting +buttock +button +buttons +butts +butyl +buxom +buxomly +buy +buyer +buyers +buying +buys +buzz +buzzard +buzzed +buzzer +buzzes +buzzing +buzzy +by +bye +byers +byes +bygone +bygones +bylaw +bylaws +byline +byliner +bylines +bypass +byte +bytes +byway +byways +byword +bywords +cab +cabbage +caber +cabin +cabinet +cabins +cable +cabled +cables +cabling +cabs +cache +cached +cacher +caches +caching +cackle +cackled +cackler +cackles +cacti +cactus +cad +cadence +cafe +cafes +cage +caged +cager +cagers +cages +caging +cajole +cajoled +cajoler +cajoles +cake +caked +cakes +caking +calcium +calf +calfs +calico +caliph +caliphs +call +called +caller +callers +calling +callous +calls +calm +calmed +calmer +calmest +calming +calmly +calms +calorie +calves +came +camel +camels +camera +cameras +camion +camp +camped +camper +campers +camping +camps +campus +can +canal +canals +canary +cancel +cancels +cancer +cancers +candid +candied +candies +candle +candled +candler +candles +candy +cane +caned +caner +canes +caning +canker +canned +canner +canners +canning +cannon +cannons +cannot +canoe +canoed +canoes +canon +canons +canopy +cans +canto +canton +cantons +cantor +cantors +cantos +canvas +canvass +canyon +canyons +cap +capable +capably +cape +caper +capered +capers +capes +capita +capital +capitol +capped +capping +caps +captain +caption +captive +captor +captors +capture +car +caravan +carbon +carbons +carcass +card +carded +carder +cardiac +carding +cards +care +cared +career +careers +careful +carer +carers +cares +caress +caret +carets +cargo +cargoes +cargos +caribou +caring +carol +carols +carpet +carpets +carried +carrier +carries +carrot +carrots +carry +cars +cart +carted +carter +carters +carting +carton +cartons +cartoon +carts +carve +carved +carver +carvers +carves +carving +cascade +case +cased +cases +cash +cashed +casher +cashers +cashes +cashier +cashing +casing +casings +cask +casket +caskets +casks +cast +caste +casted +caster +casters +castes +casteth +casting +castle +castled +castles +casts +casual +casuals +cat +catch +catcher +catches +cater +catered +caterer +caters +cathode +cats +catsup +cattle +caught +causal +cause +caused +causer +causes +causing +caustic +caution +cavalry +cave +caveat +caveats +caved +caver +cavern +caverns +caves +caving +cavity +caw +cawed +cawing +caws +cease +ceased +ceases +ceasing +cedar +ceiling +celery +cell +cellar +cellars +celled +cellist +cells +cement +cements +censor +censors +censure +census +cent +central +cents +century +cereal +cereals +certain +certify +chafe +chafer +chaff +chaffer +chafing +chagrin +chain +chained +chains +chair +chaired +chairs +chalice +chalk +chalked +chalks +chamber +chance +chanced +chances +change +changed +changer +changes +channel +chant +chanted +chanter +chants +chaos +chaotic +chap +chapel +chapels +chaps +chapter +char +charge +charged +charger +charges +charing +chariot +charity +charm +charmed +charmer +charms +chars +chart +charted +charter +charts +chase +chased +chaser +chasers +chases +chasing +chasm +chasms +chaste +chaster +chat +chateau +chats +chatter +cheap +cheapen +cheaper +cheaply +cheat +cheated +cheater +cheats +check +checked +checker +checks +cheek +cheeks +cheer +cheered +cheerer +cheerly +cheers +cheery +cheese +cheesed +cheeses +chef +chefs +chemise +chemist +cherish +cherry +cherub +cherubs +chess +chest +chester +chests +chew +chewed +chewer +chewers +chewing +chews +chick +chicken +chicks +chide +chided +chides +chiding +chief +chiefly +chiefs +chiffon +child +childly +chill +chilled +chiller +chills +chilly +chime +chimed +chimer +chimes +chiming +chimney +chin +chink +chinked +chinks +chinned +chinner +chins +chintz +chip +chips +chirp +chirped +chirps +chisel +chisels +chock +chocked +chocker +chocks +choice +choicer +choices +choir +choirs +choke +choked +choker +chokers +chokes +choking +cholera +choose +chooser +chooses +chop +chopped +chopper +chops +choral +chord +chorded +chords +chore +chores +choring +chorion +chorus +chose +chosen +chronic +chubby +chuck +chucked +chuckle +chucks +chum +chump +chumps +chums +chunk +chunks +church +churn +churned +churner +churns +chute +chuted +chutes +chuting +cider +ciders +cigar +cigars +cinder +cinders +cipher +ciphers +circle +circled +circler +circles +circuit +circus +cistern +citadel +cite +cited +cites +citied +cities +citing +citizen +city +civic +civics +civil +civilly +clad +clads +claim +claimed +claimer +claims +clam +clamber +clamp +clamped +clamper +clamps +clams +clan +clang +clanged +clanger +clangs +clans +clap +claps +clarify +clarity +clash +clashed +clasher +clashes +clasp +clasped +clasper +clasps +class +classed +classer +classes +classic +clatter +clause +clauses +claw +clawed +clawer +clawing +claws +clay +clayed +claying +clays +clean +cleaned +cleaner +cleanly +cleans +cleanse +cleanup +clear +cleared +clearer +clearly +clears +cleave +cleaved +cleaver +cleaves +cleft +clefts +clench +clergy +clerk +clerked +clerkly +clerks +clever +cliche +cliches +click +clicked +clicker +clicks +client +clients +cliff +cliffs +climate +climax +climb +climbed +climber +climbs +clime +climes +clinch +cling +clings +clinic +clinics +clink +clinked +clinker +clip +clipped +clipper +clips +clique +cliques +cloak +cloaked +cloaks +clobber +clock +clocked +clocker +clocks +clod +clods +clog +clogged +clogs +clone +cloned +cloner +cloners +clones +cloning +close +closed +closely +closer +closers +closes +closest +closet +closets +closing +closure +cloth +clothe +clothed +clothes +cloud +clouded +clouds +cloudy +clout +clove +clover +cloves +clown +clowns +club +clubbed +clubs +cluck +clucked +clucks +clue +clues +cluing +clump +clumped +clumps +clumsy +clung +cluster +clutch +clutter +coach +coached +coacher +coaches +coal +coaled +coaler +coaling +coals +coarse +coarsen +coarser +coast +coastal +coasted +coaster +coasts +coat +coated +coater +coaters +coating +coats +coax +coaxed +coaxer +coaxes +coaxial +coaxing +cobbler +cobweb +cobwebs +cock +cocked +cocker +cocking +cocks +cocoa +coconut +cocoon +cocoons +cod +code +coded +coder +coders +codes +codify +coding +codings +cods +coerce +coerced +coerces +coexist +coffee +coffees +coffer +coffers +coffin +coffins +cogent +cohabit +cohere +cohered +coherer +coheres +coil +coiled +coiling +coils +coin +coinage +coined +coiner +coining +coins +coke +cokes +coking +cold +colder +coldest +coldly +colds +collar +collars +collate +collect +college +collide +collie +collied +collier +collies +cologne +colon +colonel +colons +colony +colt +colter +colts +column +columns +comb +combat +combats +combed +comber +combers +combine +combing +combs +come +comedic +comedy +comely +comer +comers +comes +comest +comet +cometh +comets +comfort +comic +comical +comics +coming +comings +comma +command +commas +commend +comment +commit +commits +common +commons +commune +commute +compact +company +compare +compass +compel +compels +compete +compile +complex +comply +compose +compute +comrade +conceal +concede +conceit +concept +concern +concert +concise +concord +concur +concurs +condemn +condone +conduct +conduit +cone +coned +cones +confer +confers +confess +confide +confine +confirm +conform +confuse +coning +conjure +connect +connote +conquer +cons +consent +consign +consist +console +consort +consul +consuls +consult +consume +contact +contain +contend +content +contest +context +contour +control +convene +convent +convert +convex +convey +conveys +convict +convoy +convoys +coo +cooing +cook +cooked +cooker +cookers +cookery +cookie +cookies +cooking +cooks +cooky +cool +cooled +cooler +coolers +coolest +coolie +coolies +cooling +coolly +cools +coon +coons +coop +cooped +cooper +coopers +coops +cop +cope +coped +coper +copes +copied +copier +copiers +copies +coping +copings +copious +copper +coppers +cops +copse +copses +copy +copying +coral +cord +corded +corder +cordial +cording +cords +core +cored +corer +corers +cores +coring +cork +corked +corker +corkers +corking +corks +corn +corned +corner +corners +corning +corns +coronet +corps +corpse +corpses +corpus +correct +corrupt +corset +corsets +cosine +cosines +cost +costed +costing +costive +costly +costs +costume +cot +cots +cottage +cotton +cottons +couch +couched +couches +cough +coughed +cougher +coughs +could +council +counsel +count +counted +counter +country +counts +county +couple +coupled +coupler +couples +coupon +coupons +courage +courier +course +coursed +courser +courses +court +courted +courter +courtly +courts +cousin +cousins +cove +cover +covered +coverer +covers +covert +coves +covet +coveted +coveter +covets +coving +cow +coward +cowards +cowboy +cowboys +cowed +cowedly +cower +cowered +cowerer +cowers +cowgirl +cowing +cowl +cowled +cowling +cowls +cows +cowslip +coyote +coyotes +cozier +cozies +cozy +crab +crabs +crack +cracked +cracker +crackle +crackly +cracks +cradle +cradled +cradler +cradles +craft +crafted +crafter +crafts +crafty +crag +crags +cram +cramp +cramped +cramper +cramps +crams +crane +craned +cranes +craning +crank +cranked +cranks +cranky +crap +craping +craps +crash +crashed +crasher +crashes +crate +crater +craters +crates +crating +cravat +cravats +crave +craved +craven +craver +craves +craving +crawl +crawled +crawler +crawls +craze +crazed +crazes +crazier +crazily +crazing +crazy +creak +creaked +creaks +cream +creamed +creamer +creams +creamy +crease +creased +creaser +creases +create +created +creates +creator +credit +credits +creed +creeds +creek +creeks +creep +creeper +creeps +cremate +crepe +crept +crest +crested +crests +cretin +cretins +crevice +crew +crewed +crewing +crews +crib +cribs +cricket +cried +crier +criers +cries +crime +crimes +crimson +cringe +cringed +cringer +cringes +cripple +crises +crisis +crisp +crisper +crisply +crisps +critic +critics +critter +croak +croaked +croaker +croaks +crochet +crook +crooked +crooks +crop +cropped +cropper +crops +cross +crossed +crosser +crosses +crossly +crouch +crow +crowd +crowded +crowder +crowds +crowed +crowing +crown +crowned +crowner +crowns +crows +crucial +crucify +crude +crudely +cruder +crudest +cruel +crueler +cruelly +cruelty +cruise +cruised +cruiser +cruises +crumb +crumble +crumbly +crumbs +crumple +crunch +crunchy +crusade +crush +crushed +crusher +crushes +crust +crusted +crusts +crutch +crux +cruxes +cry +crying +cryptic +crystal +cub +cube +cubed +cuber +cubes +cubic +cubicly +cubics +cubing +cubs +cuckoo +cuckoos +cuddle +cuddled +cuddles +cudgel +cudgels +cue +cued +cues +cuff +cuffed +cuffing +cuffs +cuing +cull +culled +culler +culling +culls +culprit +cult +cults +culture +cunning +cup +cupful +cupfuls +cupped +cupping +cups +cur +curable +curably +curb +curbed +curbing +curbs +curds +cure +cured +curer +cures +curfew +curfews +curing +curious +curl +curled +curler +curlers +curlier +curling +curls +curly +currant +current +curried +currier +curries +curry +curs +curse +cursed +curses +cursing +cursive +cursor +cursors +cursory +curt +curtail +curtain +curtly +curtsy +curve +curved +curves +curving +cushion +cusp +cusps +cuss +cussed +cusser +cusses +custard +custody +custom +customs +cut +cute +cutely +cuter +cutes +cutest +cutoff +cutoffs +cuts +cutter +cutters +cutting +cycle +cycled +cycler +cycles +cyclic +cycling +cycloid +cyclone +cymbal +cymbals +cynical +cypress +cyst +cysts +czar +dabble +dabbled +dabbler +dabbles +dad +daddies +daddy +dads +daemon +daemons +dagger +daggers +dailies +daily +dainty +dairies +dairy +daisies +daisy +dale +dales +daleth +dam +damage +damaged +damager +damages +damask +dame +damed +damn +damned +damning +damns +damp +damped +dampen +dampens +damper +dampers +damping +damply +damps +dams +damsel +damsels +dance +danced +dancer +dancers +dances +dancing +dandier +dandies +dandy +danger +dangers +dangle +dangled +dangler +dangles +dare +dared +darer +darers +dares +daring +dark +darken +darker +darkest +darkly +darks +darling +darn +darned +darner +darning +darns +dart +darted +darter +darting +darts +dash +dashed +dasher +dashers +dashes +dashing +data +date +dated +datedly +dater +dates +dating +dative +datum +datums +daunt +daunted +daunts +dawn +dawned +dawning +dawns +day +days +daytime +daze +dazed +dazes +dazing +dazzle +dazzled +dazzler +dazzles +deacon +deacons +dead +deaden +deadens +deadly +deaf +deafen +deafens +deafer +deafest +deafly +deal +dealer +dealers +dealing +deals +dealt +dean +deans +dear +dearer +dearest +dearly +dears +dearth +dearths +death +deathly +deaths +debate +debated +debater +debates +debris +debt +debtor +debtors +debts +debug +debugs +decade +decades +decay +decayed +decayer +decays +decease +deceit +deceive +decency +decent +decide +decided +decider +decides +decimal +deck +decked +decker +decking +decks +declare +decline +decode +decoded +decoder +decodes +decorum +decoy +decoys +decree +decreed +decreer +decrees +deduce +deduced +deducer +deduces +deduct +deducts +deed +deeded +deeding +deeds +deem +deemed +deeming +deems +deep +deepen +deepens +deeper +deepest +deeply +deeps +deer +deers +default +defeat +defeats +defect +defects +defend +defends +defer +defers +defiant +deficit +defied +defier +defies +defile +defiled +defiler +defiles +define +defined +definer +defines +deftly +defy +defying +degrade +degree +degreed +degrees +deign +deigned +deigns +deities +deity +delay +delayed +delayer +delays +delete +deleted +deleter +deletes +delight +delimit +deliver +dell +dells +delta +deltas +delude +deluded +deluder +deludes +deluge +deluged +deluges +delve +delved +delver +delves +delving +demand +demands +demise +demised +demises +demo +demon +demons +demos +demur +demurs +den +denial +denials +denied +denier +denies +denizen +denote +denoted +denotes +dens +dense +densely +denser +densest +density +dent +dental +dentals +dented +denting +dentist +dents +deny +denying +depart +departs +depend +depends +depict +depicts +deplete +deplore +deploy +deploys +deport +deports +depose +deposed +deposes +deposit +depot +depots +deprave +depress +deprive +depth +depths +deputy +dequeue +derail +derails +derbies +derby +deride +derided +derider +derides +derive +derived +deriver +derives +descend +descent +descry +desert +deserts +deserve +design +designs +desire +desired +desirer +desires +desk +desks +desktop +despair +despise +despite +despot +despots +dessert +destine +destiny +destroy +detach +detail +details +detain +detains +detect +detects +detest +detests +detract +develop +deviant +deviate +device +devices +devil +devils +devise +devised +deviser +devises +devoid +devote +devoted +devotee +devotes +devour +devours +devout +dew +dewdrop +dewed +dewier +dewing +dews +dewy +diadem +diagram +dial +dialect +dialog +dialogs +dials +diamond +diaper +diapers +diaries +diary +dice +dicer +dices +dicing +dickens +dicky +dictate +diction +dictum +dictums +did +die +died +dies +diet +dieter +dieters +diets +differ +differs +diffuse +dig +digest +digests +digger +diggers +digging +digit +digital +digits +dignify +dignity +digress +digs +dike +diker +dikes +diking +dilate +dilated +dilates +dilemma +dilute +diluted +diluter +dilutes +dim +dime +dimer +dimers +dimes +dimly +dimmed +dimmer +dimmers +dimmest +dimming +dimness +dimple +dimpled +dimples +dims +din +dine +dined +diner +diners +dines +dingier +dingy +dining +dinner +dinners +dint +diode +diodes +dioxide +dip +diploma +dipped +dipper +dippers +dipping +dips +dire +direct +directs +direly +direr +direst +dirge +dirged +dirges +dirging +dirt +dirtied +dirtier +dirties +dirtily +dirts +dirty +disable +disarm +disarms +disband +disc +discard +discern +discord +discs +discuss +disdain +disease +disgust +dish +dished +dishes +dishing +disk +disked +disking +disks +dislike +dismal +dismay +dismays +dismiss +disobey +disown +disowns +dispel +dispels +display +dispose +dispute +disrupt +dissent +distal +distant +distill +distort +disturb +ditch +ditched +ditcher +ditches +divan +divans +dive +dived +diver +diverge +divers +diverse +divert +diverts +dives +divest +divests +divide +divided +divider +divides +divine +divined +diviner +divines +diving +divisor +divorce +divulge +dizzied +dizzier +dizzy +do +dock +docked +docker +docking +docks +doctor +doctors +dodge +dodged +dodger +dodgers +dodges +dodging +doer +doers +does +dog +dogged +dogging +dogma +dogmas +dogs +doing +doings +dole +doled +doleful +doles +doling +doll +dollar +dollars +dollied +dollies +dolls +dolly +dolphin +domain +domains +dome +domed +domes +doming +don +donate +donated +donates +done +donkey +donkeys +dons +doom +doomed +dooming +dooms +door +doors +doorway +dope +doped +doper +dopers +dopes +doping +dormant +dorsal +dose +dosed +doses +dosing +dot +dote +doted +doter +dotes +doth +doting +dots +dotted +dotting +double +doubled +doubler +doubles +doublet +doubly +doubt +doubted +doubter +doubts +dough +douse +doused +douser +douses +dousing +dove +dover +doves +down +downed +downer +downers +downier +downing +downs +downy +doze +dozed +dozen +dozens +dozenth +dozer +dozes +dozing +drab +drably +drabs +draft +drafted +drafter +drafts +drag +dragged +dragon +dragons +dragoon +drags +drain +drained +drainer +drains +drake +drama +dramas +drank +drape +draped +draper +drapers +drapery +drapes +draping +drastic +draw +drawer +drawers +drawing +drawl +drawled +drawler +drawls +drawly +drawn +drawnly +draws +dread +dreaded +dreads +dream +dreamed +dreamer +dreams +dreamy +dreary +dredge +dredged +dredger +dredges +dregs +drench +dress +dressed +dresser +dresses +drew +dried +drier +driers +dries +driest +drift +drifted +drifter +drifts +drill +drilled +driller +drills +drily +drink +drinker +drinks +drip +drips +drive +driven +driver +drivers +drives +driving +drone +droner +drones +droning +drool +drooled +drooler +drools +droop +drooped +droops +drop +dropped +dropper +drops +drought +drove +drover +drovers +droves +drown +drowned +drowner +drowns +drowsy +drug +drugs +drum +drummed +drummer +drums +drunk +drunken +drunker +drunkly +drunks +dry +drying +dryly +dual +duality +dually +duals +dub +dubious +dubs +duchess +duchies +duchy +duck +ducked +ducker +ducking +ducks +dude +due +duel +duels +dueness +dues +dug +duke +dukes +dull +dulled +duller +dullest +dulling +dulls +dully +duly +dumb +dumber +dumbest +dumbly +dummied +dummies +dummy +dump +dumped +dumper +dumpers +dumping +dumps +dunce +dunces +dune +dunes +dungeon +durable +durably +during +dusk +duskier +dusky +dust +dusted +duster +dusters +dustier +dusting +dusts +dusty +duties +dutiful +duty +dwarf +dwarfed +dwarfs +dwell +dwelled +dweller +dwells +dwindle +dye +dyed +dyeing +dyer +dyers +dyes +dying +dynamic +dynasty +each +eager +eagerly +eagle +eagles +ear +eared +earing +earl +earlier +earls +early +earmark +earn +earned +earner +earners +earnest +earning +earns +earring +ears +earshot +earth +earthed +earthen +earthly +earths +ease +eased +easer +eases +easier +easiest +easily +easing +east +easter +eastern +easting +easts +easy +eat +eaten +eater +eaters +eating +eatings +eats +eaves +ebb +ebbed +ebbing +ebbs +ebony +echo +echoed +echoes +echoing +echos +eclipse +ecology +economy +ecstasy +eddied +eddies +eddy +eddying +edge +edged +edger +edges +edging +edible +edibles +edict +edicts +edifice +edit +edited +editing +edition +editor +editors +edits +educate +eel +eels +eerie +eerier +effect +effects +effigy +effort +efforts +egg +egged +egger +egging +eggs +ego +egos +eight +eighth +eights +eighty +either +eject +ejected +ejects +eke +eked +ekes +eking +el +elapse +elapsed +elapses +elastic +elate +elated +elater +elates +elating +elation +elbow +elbowed +elbows +elder +elderly +elders +eldest +elect +elected +elector +elects +elegant +element +elevate +eleven +elevens +elf +elicit +elicits +elk +elks +ellipse +elm +elmer +elms +els +else +elude +eluded +eludes +eluding +elusive +elves +emacs +email +embark +embarks +embassy +embed +embeds +ember +embers +emblem +emblems +embody +embrace +embryo +embryos +emerald +emerge +emerged +emerges +emeries +emery +eminent +emit +emits +emitted +emotion +empathy +emperor +empire +empires +employ +employs +empower +empress +emptied +emptier +empties +emptily +empty +emulate +enable +enabled +enabler +enables +enact +enacted +enacts +enamel +enamels +encamp +encamps +enchant +enclose +encode +encoded +encoder +encodes +encrypt +end +endear +endears +ended +endemic +ender +enders +ending +endings +endive +endless +endorse +endow +endowed +endows +ends +endure +endured +endures +enema +enemas +enemies +enemy +energy +enforce +engage +engaged +engages +engine +engined +engines +england +engrave +engross +enhance +enjoin +enjoins +enjoy +enjoyed +enjoys +enlarge +enlist +enlists +enliven +enmity +ennoble +ennui +enough +enqueue +enquire +enrage +enraged +enrages +enrich +ensign +ensigns +enslave +ensnare +ensue +ensued +ensues +ensuing +ensure +ensured +ensurer +ensures +entail +entails +enter +entered +enterer +enters +entice +enticed +enticer +entices +entire +entitle +entity +entreat +entries +entropy +entrust +entry +envelop +envied +envier +envies +envious +environ +envoy +envoys +envy +envying +epaulet +epic +epics +episode +epistle +epitaph +epithet +epoch +epochs +epsilon +equal +equally +equals +equate +equated +equates +equator +equip +equips +equity +era +eras +erase +erased +eraser +erasers +erases +erasing +erasion +erasure +ere +erect +erected +erectly +erector +erects +ergo +ermine +ermined +ermines +err +errand +errands +erratic +erred +erring +error +errors +errs +escape +escaped +escapee +escaper +escapes +eschew +eschews +escort +escorts +espied +espies +espouse +esprit +esprits +espy +espying +esquire +essay +essayed +essayer +essays +essence +estate +estates +esteem +esteems +etc +eternal +ethic +ethical +ethics +ethnic +eunuch +eunuchs +evade +evaded +evader +evades +evading +eve +even +evened +evener +evening +evenly +evens +event +events +ever +everest +every +eves +evict +evicted +evicts +evident +evil +evilly +evils +evince +evinced +evinces +evoke +evoked +evokes +evoking +evolute +evolve +evolved +evolves +ewe +ewer +ewes +exact +exacted +exacter +exactly +exacts +exalt +exalted +exalter +exalts +exam +examen +examine +example +exams +exceed +exceeds +excel +excels +except +excepts +excerpt +excess +excise +excised +excises +excite +excited +exciter +excites +exclaim +exclude +excrete +excuse +excused +excuser +excuses +execute +exempt +exempts +exert +exerted +exerts +exhale +exhaled +exhales +exhaust +exhibit +exile +exiled +exiles +exiling +exist +existed +exists +exit +exited +exiting +exits +exotic +expand +expands +expanse +expect +expects +expel +expels +expend +expends +expense +expert +experts +expire +expired +expires +explain +explode +exploit +explore +export +exports +expose +exposed +exposer +exposes +expound +express +expunge +extant +extend +extends +extent +extents +extinct +extol +extols +extra +extract +extras +extreme +exult +exulted +exults +eye +eyeball +eyebrow +eyed +eyeing +eyelid +eyelids +eyer +eyers +eyes +eying +fable +fabled +fabler +fables +fabling +fabric +fabrics +facade +facaded +facades +face +faced +facer +faces +facet +faceted +facets +facial +facile +facing +facings +fact +faction +factor +factors +factory +facts +factual +faculty +fade +faded +fadedly +fader +faders +fades +fading +fag +fags +fail +failed +failing +fails +failure +fain +faint +fainted +fainter +faintly +faints +fair +faired +fairer +fairest +fairies +fairing +fairly +fairs +fairy +faith +faiths +fake +faked +faker +fakes +faking +falcon +falcons +fall +fallacy +fallen +faller +falling +falls +false +falsely +falser +falsest +falsify +falsity +falter +falters +fame +famed +fames +family +famine +famines +faming +famish +famous +fan +fanatic +fancied +fancier +fancies +fancily +fancy +fang +fanged +fangs +fanned +fanning +fans +fantasy +far +faraway +farce +farces +farcing +fare +fared +farer +fares +faring +farm +farmed +farmer +farmers +farming +farms +farther +fashion +fast +fasted +fasten +fastens +faster +fastest +fasting +fasts +fat +fatal +fatally +fatals +fate +fated +fates +father +fathers +fathom +fathoms +fatigue +fating +fatly +fatness +fats +fatten +fattens +fatter +fattest +fault +faulted +faults +faulty +fawn +fawned +fawner +fawning +fawns +fear +feared +fearer +fearful +fearing +fears +feast +feasted +feaster +feasts +feat +feather +feating +featly +feats +feature +fed +federal +feds +fee +feeble +feebler +feebly +feed +feeder +feeders +feeding +feeds +feel +feeler +feelers +feeling +feels +fees +feet +feign +feigned +feigner +feigns +fell +felled +feller +fellers +felling +fellow +fellows +fells +felt +felted +felting +felts +female +females +femur +femurs +fen +fence +fenced +fencer +fencers +fences +fencing +ferment +fern +ferns +ferried +ferries +ferrite +ferry +fertile +fervent +festive +fetch +fetched +fetcher +fetches +fetter +fetters +feud +feudal +feuds +fever +fevered +fevers +few +fewer +fewest +fewness +fews +fibrous +fickle +fiction +fiddle +fiddled +fiddler +fiddles +field +fielded +fielder +fields +fiend +fiends +fierce +fiercer +fiery +fife +fifteen +fifth +fifthly +fifties +fifty +fig +fight +fighter +fights +figs +figure +figured +figurer +figures +file +filed +filer +filers +files +filial +filing +filings +fill +filled +filler +fillers +filling +fills +film +filmed +filming +films +filter +filters +filth +filthy +fin +final +finally +finals +finance +find +finder +finders +finding +finds +fine +fined +finely +finer +fines +finest +finger +fingers +fining +finish +finite +finites +fins +fir +fire +firearm +fired +firefly +fireman +firer +firers +fires +firing +firings +firm +firmed +firmer +firmest +firming +firmly +firms +first +firstly +firsts +firth +fiscal +fiscals +fish +fished +fisher +fishers +fishery +fishes +fishing +fissure +fist +fisted +fists +fit +fitful +fitly +fitness +fits +fitted +fitter +fitters +fitting +five +fiver +fives +fix +fixate +fixated +fixates +fixed +fixedly +fixer +fixers +fixes +fixing +fixings +fixture +flab +flabby +flag +flagged +flags +flake +flaked +flaker +flakes +flaking +flame +flamed +flamer +flamers +flames +flaming +flank +flanked +flanker +flanks +flannel +flap +flaps +flare +flared +flares +flaring +flash +flashed +flasher +flashes +flask +flat +flatly +flats +flatten +flatter +flaunt +flaunts +flaw +flawed +flawing +flaws +flax +flaxen +flea +fleas +fled +fledged +flee +fleece +fleeced +fleeces +fleecy +fleeing +fleer +flees +fleet +fleetly +fleets +flesh +fleshed +flesher +fleshes +fleshly +fleshy +flew +flews +flick +flicked +flicker +flicks +flier +fliers +flies +flight +flights +flinch +fling +flinger +flings +flint +flints +flip +flips +flirt +flirted +flirter +flirts +flit +flits +float +floated +floater +floats +flock +flocked +flocks +flood +flooded +flooder +floods +floor +floored +floorer +floors +flop +floppy +flops +flora +florin +floss +flossed +flosses +flour +floured +flours +flow +flowed +flower +flowers +flowery +flowing +flown +flows +fluent +fluffy +fluid +fluidly +fluids +flung +flunk +flunked +flunker +flunks +flurry +flush +flushed +flushes +flute +fluted +fluter +flutes +fluting +flutter +fly +flyable +flyer +flyers +flying +foam +foamed +foamer +foaming +foams +focal +focally +foci +focus +focused +focuser +focuses +fodder +foe +foes +fog +fogged +foggier +foggily +fogging +foggy +fogs +foil +foiled +foiling +foils +fold +folded +folder +folders +folding +folds +foliage +folk +folks +follies +follow +follows +folly +fond +fonder +fondest +fondle +fondled +fondler +fondles +fondly +fonds +font +fonts +food +foods +fool +fooled +fooling +foolish +fools +foot +footed +footer +footers +footing +footman +foots +for +forage +foraged +forager +forages +foray +forayer +forays +forbade +forbear +forbid +forbids +force +forced +forcer +forces +forcing +ford +fords +fore +forearm +forego +foreign +foreman +foresee +forest +forests +forever +forfeit +forgave +forge +forged +forger +forgers +forgery +forges +forget +forgets +forging +forgive +forgot +fork +forked +forker +forking +forks +forlorn +form +formal +formals +formant +format +formats +formed +former +formers +forming +forms +formula +forsake +fort +forte +fortes +forth +fortier +forties +fortify +forts +fortune +forty +forum +forums +forward +fossil +fossils +foster +fosters +fought +foul +fouled +fouler +foulest +fouling +foully +fouls +found +founded +founder +foundry +founds +fount +founts +four +fours +fourth +fowl +fowler +fowling +fowls +fox +foxed +foxes +foxing +fractal +fragile +frail +frailer +frailly +frailty +frame +framed +framer +framers +frames +framing +franc +francs +frank +franked +franker +frankly +franks +frantic +fraud +frauds +fraught +fray +frayed +fraying +frays +freak +freaks +freckle +free +freed +freedom +freeing +freely +freeman +freer +frees +freest +freeway +freeze +freezer +freezes +freight +frenzy +fresh +freshen +fresher +freshly +fret +fretful +frets +friar +friarly +friars +fried +friend +friends +frier +fries +frieze +friezes +frigate +fright +frill +frilled +frills +fringe +fringed +fringes +frisk +frisked +frisker +frisks +frock +frocked +frocks +frog +frogs +frolic +frolics +from +front +fronted +fronts +frost +frosted +frosts +frosty +froth +frown +frowned +frowner +frowns +froze +frozen +frugal +fruit +fruited +fruiter +fruits +fry +frying +fuel +fuels +full +fuller +fullest +fully +fumble +fumbled +fumbler +fumbles +fume +fumed +fumes +fuming +fun +functor +fund +funded +funder +funders +funding +funds +funeral +fungus +funnel +funnels +funnier +funnies +funnily +funny +fur +furies +furious +furnace +furness +furnish +furrow +furrows +furs +further +furtive +fury +fuse +fused +fuses +fusing +fusion +fusions +fuss +fusser +fussing +futile +future +futures +fuzzier +fuzzy +gable +gabled +gabler +gables +gad +gadget +gadgets +gag +gaged +gager +gagged +gagging +gaging +gags +gaiety +gaily +gain +gained +gainer +gainers +gaining +gainly +gains +gait +gaited +gaiter +gaiters +gaits +galaxy +gale +gales +gall +gallant +galled +gallery +galley +galleys +galling +gallon +gallons +gallop +gallops +gallows +galls +gamble +gambled +gambler +gambles +game +gamed +gamely +games +gaming +gamma +gammas +gang +ganger +gangly +gangs +gap +gape +gaped +gaper +gapes +gaping +gaps +garage +garaged +garages +garb +garbage +garbed +garble +garbled +garbler +garbles +garden +gardens +gargle +gargled +gargles +garland +garlic +garlics +garment +garner +garners +garnish +garter +garters +gas +gaseous +gases +gash +gashed +gashes +gashing +gasp +gasped +gasper +gaspers +gasping +gasps +gassed +gasser +gassers +gassing +gastric +gate +gated +gates +gateway +gather +gathers +gating +gaudier +gaudies +gaudy +gauge +gauged +gauger +gauges +gauging +gaunt +gauntly +gauze +gauzed +gauzes +gauzing +gave +gay +gayer +gayest +gayly +gayness +gaze +gazed +gazer +gazers +gazes +gazing +gear +geared +gearing +gears +geese +gel +gelatin +gelled +gelling +gels +gem +gems +gender +genders +gene +general +generic +genes +genetic +genial +genius +genre +genres +genteel +gentle +gentled +gentler +gently +gentry +genuine +genus +germ +germane +germen +germs +gestalt +gesture +get +gets +getter +getters +getting +ghastly +ghost +ghosted +ghostly +ghosts +giant +giants +giddied +giddier +giddy +gift +gifted +gifts +gig +giggle +giggled +giggler +giggles +gigs +gild +gilded +gilder +gilding +gilds +gill +gilled +giller +gills +gilt +gimmick +gin +ginger +gingham +gins +giraffe +gird +girded +girder +girders +girding +girdle +girdled +girdler +girdles +girds +girl +girls +girt +girth +give +given +givens +giver +givers +gives +giveth +giving +gizmo +gizmos +glacial +glacier +glad +gladder +glade +glades +gladly +glamour +glance +glanced +glances +gland +glands +glare +glared +glares +glaring +glass +glassed +glasses +glassy +glaze +glazed +glazer +glazers +glazes +glazing +gleam +gleamed +gleams +glean +gleaned +gleaner +gleans +glee +gleed +gleeful +glees +glen +glens +glide +glided +glider +gliders +glides +gliding +glimmer +glimpse +glint +glinted +glints +glisten +glitch +glitter +global +globals +globe +globes +globing +gloom +glooms +gloomy +gloried +glories +glorify +glory +gloss +glossed +glosses +glossy +glottal +glove +gloved +glover +glovers +gloves +gloving +glow +glowed +glower +glowers +glowing +glows +glucose +glue +glued +gluer +gluers +glues +gluing +gnat +gnats +gnaw +gnawed +gnawer +gnawing +gnaws +go +goad +goaded +goading +goads +goal +goals +goat +goatee +goatees +goats +gobble +gobbled +gobbler +gobbles +goblet +goblets +goblin +goblins +god +goddess +godlier +godlike +godly +gods +goer +goering +goes +going +goings +gold +golden +golding +golds +golf +golfer +golfers +golfing +golfs +gone +goner +gong +gongs +gonion +good +goodbye +goodie +goodies +goodly +goods +goody +goose +gooses +goosing +gore +gored +gores +gorge +gorger +gorges +gorging +gorilla +goring +gosh +gospel +gospels +gossip +gossips +got +gotcha +gotchas +goth +goto +gotten +gouge +gouged +gouger +gouges +gouging +govern +governs +gown +gowned +gowns +grab +grabbed +grabber +grabs +grace +graced +graces +gracing +grade +graded +gradely +grader +graders +grades +grading +gradual +graft +grafted +grafter +grafts +graham +grahams +grain +grained +grainer +grains +grammar +granary +grand +grander +grandly +grandma +grandpa +grands +grange +granger +granges +granite +granny +grant +granted +granter +grants +grape +grapes +graph +graphed +graphic +graphs +grapple +grasp +grasped +grasper +grasps +grass +grassed +grasses +grassy +grate +grated +grater +grates +gratify +grating +grave +gravel +gravels +gravely +graver +gravers +graves +gravest +gravies +graving +gravity +gravy +gray +grayed +grayer +grayest +graying +grayly +grays +graze +grazed +grazer +grazes +grazing +grease +greased +greaser +greases +greasy +great +greaten +greater +greatly +greats +greed +greedy +green +greened +greener +greenly +greens +greet +greeted +greeter +greets +grenade +grew +grey +greyest +greying +grid +grids +grief +griefs +grieve +grieved +griever +grieves +grill +grilled +griller +grills +grim +grimed +griming +grimly +grin +grind +grinder +grinds +grins +grip +gripe +griped +griper +gripes +griping +gripped +gripper +grips +grit +grits +grizzly +groan +groaned +groaner +groans +grocer +grocers +grocery +groom +groomed +groomer +grooms +groove +grooved +groover +grooves +grope +groped +groper +gropes +groping +gross +grossed +grosser +grosses +grossly +grotto +grottos +ground +grounds +group +grouped +grouper +groups +grouse +groused +grouser +grouses +grove +grovel +grovels +grover +grovers +groves +grow +grower +growers +growing +growl +growled +growler +growls +growly +grown +grownup +grows +growth +growths +grub +grubs +grudge +grudged +grudger +grudges +gruff +gruffly +grumble +grunt +grunted +grunter +grunts +guard +guarded +guarder +guards +guess +guessed +guesser +guesses +guest +guested +guests +guide +guided +guider +guides +guiding +guild +guilder +guile +guilt +guilts +guilty +guinea +guineas +guise +guised +guises +guising +guitar +guitars +gulch +gulches +gulf +gulfs +gull +gulled +gullied +gullies +gulling +gulls +gully +gulp +gulped +gulper +gulps +gum +gums +gun +gunfire +gunned +gunner +gunners +gunning +guns +gurgle +gurgled +gurgles +guru +gurus +gush +gushed +gusher +gushes +gushing +gust +gusts +gut +guts +gutser +gutter +gutters +guy +guyed +guyer +guyers +guying +guys +gym +gymnast +gyms +gypsied +gypsies +gypsy +ha +habit +habitat +habits +hack +hacked +hacker +hackers +hacking +hacks +had +hag +hagen +haggard +hail +hailed +hailer +hailing +hails +hair +haircut +haired +hairier +hairs +hairy +hale +haler +half +halfway +haling +hall +haller +hallow +hallows +halls +hallway +halt +halted +halter +halters +halting +halts +halve +halved +halvers +halves +halving +ham +hamlet +hamlets +hammer +hammers +hammock +hamper +hampers +hams +hand +handbag +handed +hander +handers +handful +handier +handily +handing +handle +handled +handler +handles +hands +handy +hang +hangar +hangars +hanged +hanger +hangers +hanging +hangs +hap +hapless +haply +happen +happens +happier +happily +happy +harass +hard +harden +hardens +harder +hardest +hardier +harding +hardly +hards +hardy +hare +hares +hark +harked +harken +harking +harks +harlot +harlots +harm +harmed +harmer +harmful +harming +harmony +harms +harness +harp +harped +harper +harpers +harping +harps +harried +harrier +harrow +harrows +harry +harsh +harshen +harsher +harshly +hart +harvest +has +hash +hashed +hasher +hashes +hashing +hassle +hassled +hassler +hassles +haste +hasted +hasten +hastens +hastes +hastier +hastily +hasting +hasty +hat +hatch +hatched +hatcher +hatches +hatchet +hate +hated +hateful +hater +hates +hath +hating +hatred +hats +haughty +haul +hauled +hauler +haulers +hauling +hauls +haunch +haunt +haunted +haunter +haunts +have +haven +havens +haver +havers +haves +having +havoc +havocs +hawk +hawked +hawker +hawkers +hawking +hawks +hay +hayer +haying +hays +hazard +hazards +haze +hazed +hazel +hazer +hazes +hazier +haziest +hazing +hazy +he +head +headed +header +headers +heading +heads +headway +heal +healed +healer +healers +healing +heals +health +healthy +heap +heaped +heaping +heaps +hear +heard +hearer +hearers +hearest +hearing +hearken +hears +hearsay +hearses +heart +hearted +hearten +hearth +hearts +hearty +heat +heated +heater +heaters +heath +heathen +heather +heating +heats +heave +heaved +heaven +heavens +heaver +heavers +heaves +heavier +heavies +heavily +heaving +heavy +hedge +hedged +hedger +hedges +hedging +heed +heeded +heeding +heeds +heel +heeled +heeler +heelers +heeling +heels +heifer +height +heights +heinous +heir +heiress +heirs +held +hell +heller +hello +hellos +hells +helm +helmet +helmets +help +helped +helper +helpers +helpful +helping +helps +hem +hemlock +hemp +hempen +hems +hen +hence +hens +her +herald +heralds +herb +herbs +herd +herded +herder +herding +herds +here +hereby +herein +heres +heresy +heretic +hermit +hermits +hero +heroes +heroic +heroics +heroin +heroine +heroism +heron +herons +heros +herring +hers +herself +hew +hewed +hewer +hewing +hews +hex +hexer +hey +hickory +hid +hidden +hide +hided +hideous +hideout +hider +hides +hiding +high +higher +highest +highly +highway +hijack +hijacks +hike +hiked +hiker +hikers +hikes +hiking +hill +hilled +hiller +hilling +hillock +hills +hilltop +hilt +hilts +him +hims +himself +hind +hinder +hinders +hinds +hinge +hinged +hinger +hinges +hinging +hint +hinted +hinter +hinting +hints +hip +hipness +hips +hire +hired +hirer +hirers +hires +hiring +hirings +his +hiss +hissed +hisser +hisses +hissing +history +hit +hitch +hitched +hitcher +hitches +hither +hits +hitter +hitters +hitting +hive +hives +hiving +hoar +hoard +hoarded +hoarder +hoards +hoarier +hoarse +hoarser +hoary +hoax +hoaxed +hoaxer +hoaxes +hoaxing +hobbies +hobble +hobbled +hobbler +hobbles +hobby +hockey +hoe +hoer +hoes +hog +hogs +hoist +hoisted +hoister +hoists +hold +holden +holder +holders +holding +holds +hole +holed +holes +holiday +holier +holies +holing +hollies +hollow +hollows +holly +holy +homage +homaged +homager +homages +home +homed +homely +homer +homers +homes +homing +hone +honed +honer +hones +honest +honesty +honey +honeyed +honeys +honing +hood +hooded +hooding +hoods +hoof +hoofed +hoofer +hoofs +hook +hooked +hooker +hookers +hooking +hooks +hoop +hooped +hooper +hooping +hoops +hooray +hoorays +hoot +hooted +hooter +hooters +hooting +hoots +hop +hope +hoped +hopeful +hoper +hopes +hoping +hopped +hopper +hoppers +hopping +hops +horde +hordes +horizon +hormone +horn +horned +hornet +hornets +horns +horrid +horrify +horror +horrors +horse +horsely +horses +horsing +hose +hosed +hoses +hosing +host +hostage +hosted +hostess +hostile +hosting +hostly +hosts +hot +hotel +hotels +hotly +hotness +hotter +hottest +hound +hounded +hounder +hounds +hour +hourly +hours +house +housed +houser +houses +housing +hovel +hovels +hover +hovered +hoverer +hovers +how +however +howl +howled +howler +howling +howls +hows +hrs +hub +hubris +hubs +huddle +huddled +huddler +huddles +hue +hued +hues +hug +huge +hugely +huger +hugest +hugs +huh +hull +hulled +huller +hulling +hulls +hum +human +humane +humanly +humans +humble +humbled +humbler +humbles +humbly +humid +humidly +hummed +humming +hump +humped +humping +humps +hums +hunch +hunched +hunches +hundred +hung +hunger +hungers +hungry +hunk +hunker +hunkers +hunks +hunt +hunted +hunter +hunters +hunting +hunts +hurdle +hurdled +hurdler +hurdles +hurl +hurled +hurler +hurlers +hurling +hurrah +hurried +hurrier +hurries +hurry +hurt +hurter +hurting +hurts +husband +hush +hushed +hushes +hushing +husk +husked +husker +huskier +huskies +husking +husks +husky +hustle +hustled +hustler +hustles +hut +huts +hybrid +hybrids +hygiene +hymn +hymning +hymns +hype +hyped +hyper +hypes +hyphen +hyphens +ice +iceberg +iced +ices +icier +iciest +iciness +icing +icings +icon +icons +icy +id +idea +ideal +ideally +ideals +ideas +idiocy +idiot +idiotic +idiots +idle +idled +idler +idlers +idles +idlest +idling +idly +idol +idols +if +ignoble +ignore +ignored +ignorer +ignores +ill +illegal +illicit +illness +ills +illy +image +imaged +images +imagine +imaging +imitate +immense +immerse +immoral +immune +imp +impact +impacts +impair +impairs +impart +imparts +impasse +impeach +impede +impeded +impeder +impedes +impel +impels +imperil +impetus +impinge +impious +implant +implied +implies +implore +imply +import +imports +impose +imposed +imposer +imposes +impress +imprint +improve +imps +impulse +impure +impute +imputed +imputes +in +inane +inanely +inaner +inanest +inapt +inaptly +inborn +inbred +inbuilt +incense +inch +inched +inches +inching +incite +incited +inciter +incites +incline +inclose +include +income +incomer +incomes +incur +incurs +indeed +indent +indents +index +indexed +indexer +indexes +indices +indigo +indoor +indoors +induce +induced +inducer +induces +induct +inducts +indulge +inert +inertia +inertly +inexact +infancy +infant +infants +infect +infects +infer +inferno +infers +infest +infests +infidel +infix +infixes +inflame +inflate +inflict +inflows +inform +informs +infuse +infused +infuser +infuses +ingot +ingrown +inhabit +inhale +inhaled +inhaler +inhales +inhere +inhered +inheres +inherit +inhibit +inhuman +inion +initial +inject +injects +injure +injured +injurer +injures +injury +ink +inked +inker +inkers +inking +inkings +inkling +inks +inlaid +inland +inlet +inlets +inlier +inly +inlying +inmate +inmates +inn +innards +innate +inner +innerly +inning +innings +inns +input +inputed +inputer +inputs +inquire +inquiry +inroad +inroads +ins +insane +insect +insects +insert +inserts +insets +inside +insider +insides +insight +insist +insists +insofar +inspect +inspire +install +instant +instead +insteps +insult +insults +insure +insured +insurer +insures +intact +intakes +integer +intend +intends +intense +intent +intents +interim +intern +interns +into +intoned +intoner +intrude +intrust +invade +invaded +invader +invades +invalid +invent +invents +inverse +invert +inverts +invest +invests +invite +invited +inviter +invites +invoice +invoke +invoked +invoker +invokes +involve +inward +inwards +ioctl +iodine +ion +ions +irate +irately +ire +ires +iris +irises +irk +irked +irking +irks +irksome +iron +ironed +ironer +ironies +ironing +irons +irony +is +island +islands +isle +isles +islet +islets +isling +isolate +isotope +ispell +issue +issued +issuer +issuers +issues +issuing +isthmus +it +italic +italics +itch +itches +itching +item +items +iterate +its +itself +ivied +ivies +ivories +ivory +ivy +ix +jab +jabbed +jabbing +jabs +jack +jacked +jacker +jacket +jackets +jacking +jacks +jade +jaded +jadedly +jades +jading +jail +jailed +jailer +jailers +jailing +jails +jam +jammed +jamming +jams +janitor +jar +jargon +jarred +jarring +jars +jaunt +jaunted +jaunts +jaunty +javelin +jaw +jawed +jaws +jay +jazz +jealous +jean +jeans +jeep +jeeped +jeepers +jeeping +jeeps +jeer +jeerer +jeers +jellied +jellies +jelly +jenny +jerk +jerked +jerker +jerkier +jerking +jerks +jerky +jersey +jerseys +jest +jested +jester +jesting +jests +jet +jets +jetted +jetting +jewel +jewelry +jewels +jig +jigs +jingle +jingled +jingler +jingles +job +jobs +jocks +jocund +jog +jogs +john +johns +join +joined +joiner +joiners +joining +joins +joint +jointed +jointer +jointly +joints +joke +joked +joker +jokers +jokes +joking +jollied +jollier +jollies +jolly +jolt +jolted +jolter +jolting +jolts +jostle +jostled +jostles +jot +jots +jotted +jotting +journal +journey +joust +jousted +jouster +jousts +joy +joyful +joyous +joys +jubilee +judge +judged +judger +judges +judging +jug +juggle +juggled +juggler +juggles +jugs +juice +juiced +juicer +juicers +juices +juicier +juicing +juicy +jumble +jumbled +jumbles +jump +jumped +jumper +jumpers +jumpier +jumping +jumps +jumpy +jungle +jungled +jungles +junior +juniors +juniper +junk +junker +junkers +junkie +junkies +junks +junky +juries +juror +jurors +jury +just +juster +justice +justify +justing +justly +jut +kHz +keel +keeled +keeler +keeling +keels +keen +keener +keenest +keening +keenly +keep +keeper +keepers +keeping +keeps +ken +kennel +kennels +kept +kernel +kernels +ketchup +kettle +kettles +key +keyed +keying +keypad +keypads +keys +keyword +kick +kicked +kicker +kickers +kicking +kicks +kid +kidded +kidding +kidnap +kidnaps +kidney +kidneys +kids +kill +killed +killer +killers +killing +kills +kilobit +kin +kind +kinder +kindest +kindle +kindled +kindler +kindles +kindly +kindred +kinds +king +kingdom +kingly +kings +kinkier +kinky +kinship +kinsman +kiss +kissed +kisser +kissers +kisses +kissing +kit +kitchen +kite +kited +kiter +kites +kiting +kits +kitsch +kitten +kittens +kitties +kitty +kludge +kludged +kludger +kludges +kludgey +klutz +klutzes +klutzy +knack +knacker +knacks +knave +knaves +knead +kneaded +kneader +kneads +knee +kneed +kneeing +kneel +kneeled +kneeler +kneels +knees +knell +knells +knelt +knew +knife +knifed +knifes +knifing +knight +knights +knit +knits +knives +knob +knobs +knock +knocked +knocker +knocks +knoll +knolls +knot +knots +knotted +know +knower +knowhow +knowing +known +knows +knuckle +kudos +lab +label +labels +labs +lace +laced +lacer +laces +lacing +lack +lacked +lacker +lacking +lacks +lacquer +lad +ladder +ladders +laded +laden +ladened +ladies +lading +lads +lady +lag +lager +lagers +lagged +lagoon +lagoons +lags +laid +lain +lair +lairs +lake +laker +lakes +laking +lamb +lambda +lambdas +lamber +lambs +lame +lamed +lamely +lament +laments +lamer +lames +lamest +laminar +laming +lamp +lamper +lamps +lance +lanced +lancer +lancers +lances +lancing +land +landed +lander +landers +landing +lands +lane +lanes +languid +lantern +lap +lapel +lapels +laps +lapse +lapsed +lapser +lapses +lapsing +lard +larded +larder +larding +lards +large +largely +larger +largest +lark +larker +larks +larva +larvae +larvas +laser +lasers +lash +lashed +lasher +lashes +lashing +lass +lasses +last +lasted +laster +lasting +lastly +lasts +latch +latched +latches +late +lated +lately +latency +latent +latents +later +lateral +latest +latex +latexes +lath +lather +lathes +lathing +latrine +latter +lattice +laugh +laughed +laugher +laughs +launch +launder +laundry +laurel +laurels +lava +lavish +law +lawful +lawless +lawn +lawns +laws +lawsuit +lawyer +lawyers +lay +layer +layered +layers +laying +layman +laymen +layoffs +layout +layouts +lays +lazed +lazied +lazier +laziest +lazily +lazing +lazy +lazying +lead +leaded +leaden +leader +leaders +leading +leads +leaf +leafed +leafier +leafing +leaflet +leafs +leafy +league +leagued +leaguer +leagues +leak +leakage +leaked +leaker +leaking +leaks +lean +leaned +leaner +leanest +leaning +leanly +leans +leap +leaped +leaper +leaping +leaps +leapt +learn +learned +learner +learns +lease +leased +leases +leash +leashes +leasing +least +leather +leave +leaved +leaven +leaver +leavers +leaves +leaving +lecture +led +ledge +ledger +ledgers +ledges +lee +leech +leeches +leer +leered +leering +leers +lees +left +leftist +lefts +leg +legacy +legal +legally +legals +legend +legends +legged +legible +legibly +legion +legions +legs +leisure +lemma +lemmas +lemon +lemons +lend +lender +lenders +lending +lends +length +lengths +lengthy +lenient +lens +lensed +lenser +lensers +lenses +lensing +lent +lentil +lentils +leopard +leprosy +less +lessen +lessens +lesser +lesses +lessing +lesson +lessons +lest +lester +let +lets +letter +letters +letting +lettuce +levee +leveed +levees +level +levelly +levels +lever +levered +levers +levied +levier +levies +levy +levying +lewd +lewdly +lexical +lexicon +liable +liaison +liar +liars +liberal +liberty +libido +library +license +lichen +lichens +lick +licked +licker +licking +licks +lid +lids +lie +lied +lieder +liege +lien +liens +lier +lies +lieu +life +lifer +lifers +lift +lifted +lifter +lifters +lifting +lifts +light +lighted +lighten +lighter +lightly +lights +like +liked +likely +liken +likened +likens +liker +likes +likest +liking +likings +lilac +lilacs +lilied +lilies +lily +limb +limbed +limber +limbers +limbs +lime +limed +limes +liming +limit +limited +limiter +limits +limp +limped +limper +limping +limply +limps +linden +line +linear +lined +linen +linens +liner +liners +lines +linger +lingers +lining +linings +link +linkage +linked +linker +linkers +linking +links +linseed +lint +linter +lints +lion +lioness +lions +lip +lips +liquefy +liquid +liquids +liquor +liquors +lisp +lisped +lisper +lisping +lisps +list +listed +listen +listens +lister +listers +listing +lists +lit +literal +lithe +lithely +litter +litters +little +littler +livable +livably +live +lived +lively +liven +livened +liver +livers +livery +lives +livest +liveth +living +livings +lizard +lizards +load +loaded +loader +loaders +loading +loads +loaf +loafed +loafer +loafers +loafing +loafs +loan +loaned +loaner +loaning +loans +loath +loathe +loathed +loather +loathes +loathly +loaves +lobbied +lobbies +lobby +lobe +lobed +lobes +lobster +local +locally +locals +locate +located +locater +locates +locator +loci +lock +locked +locker +lockers +locking +lockout +locks +lockup +lockups +locus +locust +locusts +lodge +lodged +lodger +lodgers +lodges +lodging +loft +lofter +loftier +lofts +lofty +log +logged +logger +loggers +logging +logic +logical +logics +login +logins +logout +logs +loin +loins +loiter +loiters +lone +lonely +loner +loners +long +longed +longer +longest +longing +longly +longs +look +looked +looker +lookers +looking +lookout +looks +lookup +lookups +loom +loomed +looming +looms +loon +loop +looped +looper +looping +loops +loose +loosed +loosely +loosen +loosens +looser +looses +loosest +loosing +loot +looted +looter +looting +loots +lord +lording +lordly +lords +lore +lorries +lorry +lose +loser +losers +loses +losing +losings +loss +losses +lossier +lossy +lost +lot +lots +lottery +lotus +loud +louden +louder +loudest +loudly +lounge +lounged +lounger +lounges +lousier +lousy +lovable +lovably +love +loved +lovely +lover +loverly +lovers +loves +loving +low +lower +lowered +lowers +lowest +lowing +lowland +lowlier +lowly +lowness +lows +loyal +loyally +loyalty +luck +lucked +luckier +luckily +lucks +lucky +luggage +lull +lullaby +lulled +lulls +lumber +lumbers +lump +lumped +lumpen +lumper +lumping +lumps +lunar +lunatic +lunch +lunched +luncher +lunches +lung +lunged +lunger +lunging +lungs +lurch +lurched +lurcher +lurches +lure +lured +lurer +lures +luring +lurk +lurked +lurker +lurkers +lurking +lurks +lust +lustier +lustily +lusting +lusts +lusty +lute +luted +lutes +luting +luxury +lying +lyingly +lyings +lymph +lynch +lynched +lyncher +lynches +lynx +lynxes +lyre +lyres +lyric +lyrics +mace +maced +macer +maces +machine +macing +macro +macros +mad +madam +madams +madden +madder +maddest +made +madly +madman +madness +madras +maggot +maggots +magic +magical +magnet +magnets +magnify +maid +maiden +maidens +maids +mail +mailbox +mailed +mailer +mailers +mailing +mails +maim +maimed +maimer +maimers +maiming +maims +main +mainly +mains +majesty +major +majored +majors +makable +make +maker +makers +makes +makeup +makeups +making +makings +malady +malaria +male +males +malice +mall +mallet +mallets +malls +malt +malted +malting +malts +mama +mamma +mammal +mammals +mammas +mammoth +man +manage +managed +manager +manages +mandate +mane +maned +manes +manger +mangers +mangle +mangled +mangler +mangles +manhood +maniac +maniacs +mankind +manlier +manly +manned +manner +manners +manning +manor +manors +mans +mansion +mantel +mantels +mantle +mantled +mantles +manual +manuals +manure +manured +manurer +manures +many +map +maple +maples +mapped +mapping +maps +mar +marble +marbled +marbler +marbles +march +marched +marcher +marches +mare +mares +margin +margins +marine +mariner +marines +mark +marked +marker +markers +market +markets +marking +marks +marquis +married +marries +marrow +marrows +marry +mars +marsh +marshal +marshes +mart +marten +martens +martial +marts +martyr +martyrs +marvel +marvels +mash +mashed +masher +mashers +mashes +mashing +mask +masked +masker +masking +masks +mason +masoned +masonry +masons +mass +massage +massed +masses +massing +massive +mast +masted +master +masters +mastery +masts +mat +match +matched +matcher +matches +mate +mated +mater +mates +math +mating +matings +matrix +matron +mats +matted +matter +matters +mature +matured +maturer +matures +max +maxim +maximal +maxims +maximum +may +maybe +mayer +mayest +mayhap +mayhem +maying +mayor +mayoral +mayors +mays +maze +mazed +mazedly +mazer +mazes +mazing +me +mead +meadow +meadows +meads +meager +meal +meals +mean +meander +meaner +meanest +meaning +meanly +means +meant +measles +measure +meat +meats +med +medal +medals +meddle +meddled +meddler +meddles +media +median +medians +medias +mediate +medic +medical +medics +medium +mediums +meek +meeker +meekest +meekly +meet +meeter +meeting +meetly +meets +megabit +meld +melding +melds +mellow +mellows +melody +melon +melons +melt +melted +melter +melting +melts +member +members +memo +memoir +memoirs +memory +memos +men +menace +menaced +menaces +mend +mended +mender +mending +mends +menial +menials +mens +mensed +menses +mensing +mental +mention +mentor +mentors +menu +menus +mer +mercies +mercury +mercy +mere +merely +merest +merge +merged +merger +mergers +merges +merging +merit +merited +merits +merrier +merrily +merry +mesh +meshed +meshes +meshing +mess +message +messed +messes +messiah +messier +messily +messing +messy +met +meta +metal +metals +mete +meted +meteor +meteors +meter +metered +meters +metes +method +methods +meting +metric +metrics +mets +mew +mewed +mews +mica +mice +mid +midday +middle +middled +middler +middles +midst +midsts +midway +midways +mien +miens +mies +miff +miffed +miffing +miffs +might +mights +mighty +migrate +mild +milden +milder +mildest +mildew +mildews +mildly +mile +mileage +miler +miles +militia +milk +milked +milker +milkers +milkier +milking +milks +milky +mill +milled +miller +millers +millet +milling +million +mills +mimic +mimics +mince +minced +mincer +mincers +minces +mincing +mind +minded +minder +minders +mindful +minding +minds +mine +mined +miner +mineral +miners +mines +ming +mingle +mingled +mingles +minimal +minimum +mining +minion +minions +mink +minks +minnow +minnows +minor +minored +minors +mint +minted +minter +minting +mints +minus +minuses +minute +minuted +minuter +minutes +miracle +mire +mired +mires +miring +mirror +mirrors +mirth +miser +miserly +misers +misery +misfit +misfits +mishap +mishaps +mislead +misled +misread +miss +missed +misses +missile +missing +mission +missive +mist +mistake +misted +mister +misters +mistier +misting +mists +misty +mistype +misuse +misused +misuser +misuses +mite +mites +mitten +mittens +mix +mixed +mixer +mixers +mixes +mixing +mixture +ml +moan +moaned +moaning +moans +moat +moats +mob +mobs +mock +mocked +mocker +mockers +mockery +mocking +mocks +modal +modally +mode +model +models +modem +modems +modern +moderns +modes +modest +modesty +modify +modular +module +modules +modulo +modulus +modus +moist +moisten +moistly +mold +molded +molder +molders +moldier +molding +molds +moldy +mole +moles +molest +molests +molten +mom +moment +moments +moms +monarch +money +moneyed +moneyer +moneys +monitor +monk +monkey +monkeys +monks +mono +monster +month +monthly +months +mood +moodier +moods +moody +moon +mooned +mooning +moonlit +moons +moor +moored +mooring +moors +moose +moot +mooted +mop +moped +moper +moping +mops +moral +morale +morales +morally +morals +morass +morbid +more +mored +mores +morion +morn +morning +morrow +morsel +morsels +mortal +mortals +mortar +mortars +mortify +mosaic +mosaics +moss +mosses +mossier +mossy +most +mostly +motel +motels +moth +mother +mothers +motif +motifs +motion +motions +motive +motived +motives +motley +motor +motored +motors +motto +mottoes +mottos +mould +moulded +moulder +moulds +mound +mounded +mounds +mount +mounted +mounter +mounts +mourn +mourned +mourner +mourns +mouse +mouser +mouses +mousing +mouth +mouthed +mouther +mouthes +mouths +movable +move +moved +mover +movers +moves +movie +movies +moving +movings +mow +mowed +mower +mowers +mowing +mows +much +muck +mucked +mucker +mucking +mucks +mud +muddied +muddier +muddle +muddled +muddler +muddles +muddy +muds +muff +muffin +muffins +muffle +muffled +muffler +muffles +muffs +mug +mugs +mule +mules +muling +mumble +mumbled +mumbler +mumbles +mummies +mummy +munch +munched +muncher +munches +mundane +mural +murals +murder +murders +murkier +murky +murmur +murmurs +muscle +muscled +muscles +muse +mused +muser +muses +museum +museums +mushier +mushy +music +musical +musics +musing +musings +musk +musket +muskets +muskrat +musks +muslin +mussel +mussels +must +mustard +muster +musters +mustier +musts +musty +mutable +mutate +mutated +mutates +mutator +mute +muted +mutedly +mutely +muter +mutes +mutest +muting +mutiny +mutter +mutters +mutton +mutual +muzzle +muzzled +muzzler +muzzles +my +myriad +myrtle +myself +mystery +mystic +mystics +myth +mythes +nag +nags +nail +nailed +nailer +nailing +nails +naive +naively +naiver +naivete +naked +nakedly +name +named +namely +namer +namers +names +naming +nap +napkin +napkins +naps +narrow +narrows +nasal +nasally +nastier +nasties +nastily +nasty +nation +nations +native +natives +natural +nature +natured +natures +naught +naughts +naughty +naval +navally +navies +navy +nay +near +nearby +neared +nearer +nearest +nearing +nearly +nears +neat +neaten +neater +neatest +neatly +neats +nebula +neck +necked +necker +necking +necks +necktie +need +needed +needer +needful +needier +needing +needle +needled +needler +needles +needly +needs +needy +negate +negated +negater +negates +negator +neglect +neigh +neither +nephew +nephews +nerve +nerved +nerves +nerving +nervous +nest +nested +nester +nesting +nestle +nestled +nestler +nestles +nests +net +nether +nets +netted +netting +nettle +nettled +nettles +network +neural +neuron +neurons +neutral +never +new +newborn +newer +newest +newline +newly +newness +news +newsman +newsmen +newt +newts +next +nibble +nibbled +nibbler +nibbles +nice +nicely +nicer +nicest +nicety +niche +niches +niching +nick +nicked +nickel +nickels +nicker +nicking +nicks +niece +nieces +niftier +nifties +nifty +nigh +night +nighted +nightly +nights +nil +nilly +nimble +nimbler +nimbly +nine +nines +ninety +ninth +nip +nips +nix +nixed +nixer +nixes +nixing +no +noble +nobler +nobles +noblest +nobly +nobody +nod +nodded +nodding +node +nodes +nods +noise +noised +noises +noisier +noisily +noising +noisy +nominal +non +none +nones +nonzero +nook +nooks +noon +noonday +nooning +noons +nope +nor +norm +normal +normals +normed +norms +north +norther +nose +nosed +noses +nosing +nostril +not +notable +notably +notch +notched +notches +note +noted +notedly +noter +notes +nothing +notice +noticed +notices +notify +noting +notion +notions +noun +nouns +nourish +novel +novels +novelty +novice +novices +now +nowhere +nows +nroff +nuances +nuclear +nucleus +null +nulled +nullify +nulls +numb +numbed +number +numbers +numbing +numbly +numbs +numeral +numeric +nun +nuns +nuptial +nurse +nursed +nurser +nursery +nurses +nursing +nurture +nut +nuts +nymph +nymphs +oak +oaken +oaks +oar +oared +oaring +oars +oasis +oat +oaten +oater +oath +oaths +oatmeal +oats +obey +obeyed +obeyer +obeying +obeys +object +objects +oblate +oblige +obliged +obliger +obliges +oblique +oblong +obscene +obscure +observe +obtain +obtains +obviate +obvious +occlude +occupy +occur +occurs +ocean +oceans +octal +octals +octave +octaves +octopus +odd +odder +oddest +oddity +oddly +oddness +odds +ode +oded +oder +odes +odious +odorous +of +off +offend +offends +offer +offered +offerer +offers +office +officer +offices +officio +offing +offs +offset +offsets +oft +often +oftener +oh +oil +oiled +oiler +oilers +oilier +oiliest +oiling +oils +oily +okay +okays +old +olden +older +oldest +oldness +olive +oliver +olives +omen +omens +ominous +omit +omits +omitted +on +onanism +once +oncer +one +oneness +oner +onerous +ones +oneself +ongoing +onion +onions +online +only +ons +onset +onsets +onto +onward +onwards +oops +ooze +oozed +oozes +oozing +opacity +opal +opals +opaque +opcode +opcodes +open +opened +opener +openers +openest +opening +openly +opens +opera +operand +operas +operate +opiate +opiates +opinion +opium +oppose +opposed +opposer +opposes +oppress +opt +opted +optic +optical +optics +optimal +optimum +opting +option +options +opts +or +oracle +oracles +oral +orally +orals +orange +oranges +oration +orator +orators +oratory +orb +orbit +orbital +orbited +orbiter +orbits +orchard +orchid +orchids +ordain +ordains +ordeal +ordeals +order +ordered +orderer +orderly +orders +ordinal +ore +ores +organ +organic +organs +orgies +orgy +orient +orients +orifice +origin +origins +orion +orly +orphan +orphans +ostrich +other +others +otter +otters +ought +oughts +ounce +ounces +our +ours +ourself +out +outcast +outcome +outcry +outdoor +outed +outer +outfit +outfits +outgrew +outgrow +outing +outings +outlast +outlaw +outlaws +outlay +outlays +outlet +outlets +outline +outlive +outlook +outness +outpost +output +outputs +outrage +outrun +outruns +outs +outset +outside +outvote +outward +outwit +outwits +oval +ovally +ovals +ovaries +ovary +oven +ovens +over +overall +overdue +overing +overjoy +overlap +overlay +overly +overrun +overs +oversee +overt +overtly +overuse +ovum +owe +owed +owes +owing +owl +owler +owls +own +owned +owner +owners +owning +owns +ox +oxen +oxide +oxides +oxygen +oxygens +oyster +oysters +pa +pace +paced +pacer +pacers +paces +pacific +pacify +pacing +pack +package +packed +packer +packers +packet +packets +packing +packs +pact +pacts +pad +padded +paddies +padding +paddle +paddled +paddler +paddles +paddy +pads +pagan +pagans +page +pageant +paged +pager +pagers +pages +paging +paid +pail +pails +pain +pained +painful +paining +pains +paint +painted +painter +paints +pair +paired +pairing +pairs +pal +palace +palaces +palate +palates +pale +paled +palely +paler +pales +palest +palfrey +paling +pall +pallid +palling +pally +palm +palmed +palmer +palming +palms +pals +pan +panacea +pancake +panda +pandas +pander +panders +pane +panel +panels +panes +pang +pangs +panic +panics +panned +panning +pans +pansies +pansy +pant +panted +panther +panties +panting +pantry +pants +panty +papa +papal +papally +paper +papered +paperer +papers +paprika +par +parade +paraded +parader +parades +paradox +paragon +parapet +parcel +parcels +parch +parched +pardon +pardons +pare +parent +parents +parer +pares +paring +parings +parish +parity +park +parked +parker +parkers +parking +parks +parole +paroled +paroles +parried +parrot +parrots +parry +pars +parse +parsed +parser +parsers +parses +parsing +parsley +parson +parsons +part +partake +parted +parter +parters +partial +partied +parties +parting +partly +partner +parts +party +pas +pass +passage +passe +passed +passer +passers +passes +passing +passion +passive +past +paste +pasted +pastes +pastime +pasting +pastor +pastors +pastry +pasts +pasture +pat +patch +patched +patcher +patches +pated +paten +patent +patents +pater +path +pathos +paths +pathway +patient +patriot +patrol +patrols +patron +patrons +pats +patter +pattern +patters +patties +patty +paucity +pause +paused +pauses +pausing +pave +paved +paver +paves +paving +paw +pawed +pawing +pawn +pawned +pawner +pawning +pawns +paws +pay +payable +payed +payer +payers +paying +payment +payoff +payoffs +payroll +pays +pea +peace +peaces +peach +peaches +peacock +peak +peaked +peaking +peaks +peal +pealed +pealing +peals +peanut +peanuts +pear +pearl +pearler +pearls +pearly +pears +peas +peasant +peat +pebble +pebbled +pebbles +peck +pecked +pecker +pecking +pecks +peddler +peek +peeked +peeking +peeks +peel +peeled +peeler +peeling +peels +peep +peeped +peeper +peepers +peeping +peeps +peer +peered +peering +peers +peeve +peeved +peevers +peeves +peeving +peg +pegs +pellet +pellets +pelt +pelter +pelting +pelts +pen +penalty +penance +pence +pencil +pencils +pend +pended +pending +pends +penguin +penned +pennies +penning +penny +pens +pension +pensive +pent +people +peopled +peoples +pep +pepper +peppers +per +percent +perch +perched +perches +perfect +perform +perfume +perhaps +peril +perils +period +periods +perish +permit +permits +permute +perplex +persist +person +persons +pertain +perturb +perusal +peruse +perused +peruser +peruses +pervade +pervert +pest +pester +pesters +pests +pet +petal +petals +peter +petered +peters +pets +petted +petter +petters +pettier +petting +petty +pew +pews +pewter +phantom +phase +phased +phaser +phasers +phases +phasing +phone +phoned +phoneme +phones +phoning +photo +photos +phrase +phrased +phrases +phyla +phylum +physic +physics +pi +piano +pianos +piazza +piazzas +pick +picked +picker +pickers +picket +pickets +picking +pickle +pickled +pickles +picks +pickup +pickups +picnic +picnics +picture +pie +piece +pieced +piecer +pieces +piecing +pied +pier +pierce +pierced +pierces +piers +pies +pieties +piety +pig +pigeon +pigeons +pigment +pigs +pike +piked +piker +pikes +piking +pile +piled +pilers +piles +pilgrim +piling +pilings +pill +pillage +pillar +pillars +pillow +pillows +pills +pilot +piloted +pilots +pin +pinch +pinched +pincher +pinches +pine +pined +pines +ping +pinger +pinging +pining +pinion +pinions +pink +pinked +pinker +pinkest +pinking +pinkly +pinks +pinned +pinning +pins +pint +pinter +pints +pioneer +pious +piously +pipe +piped +piper +pipers +pipes +piping +pipings +pique +piqued +piquing +pirate +pirated +pirates +piss +pissed +pisser +pisses +pissing +pistil +pistils +pistol +pistols +piston +pistons +pit +pitch +pitched +pitcher +pitches +piteous +pitfall +pith +pithed +pithes +pithier +pithing +pithy +pitied +pitier +pitiers +pities +pitiful +pits +pitted +pity +pitying +pivot +pivotal +pivoted +pivots +pixel +pixels +placard +place +placed +placer +places +placid +placing +plague +plagued +plaguer +plagues +plaid +plaided +plaids +plain +plainer +plainly +plains +plait +plaiter +plaits +plan +planar +plane +planed +planer +planers +planes +planet +planets +planing +plank +planks +planned +planner +plans +plant +planted +planter +plants +plasma +plaster +plastic +plate +plateau +plated +platen +platens +plater +platers +plates +plating +platter +play +played +player +players +playful +playing +plays +plea +plead +pleaded +pleader +pleads +pleas +please +pleased +pleaser +pleases +pledge +pledged +pledger +pledges +plenary +plenty +plied +plier +pliers +plies +plight +plod +plods +plot +plots +plotted +plotter +ploy +ploys +pluck +plucked +plucker +plucky +plug +plugged +plugs +plum +plumage +plumb +plumbed +plumber +plumbs +plume +plumed +plumes +pluming +plump +plumped +plumpen +plumper +plumply +plums +plunder +plunge +plunged +plunger +plunges +plural +plurals +plus +pluses +plush +plushly +ply +plying +poach +poached +poacher +poaches +pocket +pockets +pod +pods +poem +poems +poet +poetic +poetics +poetry +poets +point +pointed +pointer +points +pointy +poise +poised +poises +poising +poison +poisons +poke +poked +poker +pokes +poking +polar +pole +poled +polemic +poler +poles +police +policed +polices +policy +poling +polish +polite +politer +politic +poll +polled +pollen +poller +polling +polls +pollute +polo +polygon +polymer +pomp +pompous +pond +ponder +ponders +ponds +ponies +pony +poof +pool +pooled +pooling +pools +poor +poorer +poorest +poorly +pop +pope +popes +poplar +popped +poppied +poppies +popping +poppy +pops +popular +porch +porches +pore +pored +pores +poring +pork +porker +porn +port +portal +portals +ported +portend +porter +porters +porting +portion +portly +portray +ports +pose +posed +poser +posers +poses +posing +posit +posited +posits +possess +possum +possums +post +postage +postal +posted +poster +posters +posting +postman +posts +posture +pot +potash +potato +potent +pots +potted +potter +potters +pottery +potting +pouch +pouched +pouches +poultry +pounce +pounced +pounces +pound +pounded +pounder +pounds +pour +poured +pourer +pourers +pouring +pours +pout +pouted +pouter +pouting +pouts +poverty +powder +powders +power +powered +powers +pox +poxes +prairie +praise +praised +praiser +praises +prance +pranced +prancer +prances +prank +pranks +prate +prated +prater +prates +prating +pray +prayed +prayer +prayers +praying +prays +preach +precede +precept +precise +predate +predict +preempt +preface +prefer +prefers +prefix +prelate +prelude +premier +premise +premium +prepare +prepend +present +preset +presets +preside +press +pressed +presser +presses +presume +pretend +pretext +pretty +prevail +prevent +preview +prey +preyed +preyer +preying +preys +price +priced +pricer +pricers +prices +pricing +prick +pricked +pricker +prickly +pricks +pride +prided +prides +priding +pried +prier +pries +priest +priests +primacy +primary +prime +primed +primely +primer +primers +primes +priming +prince +princes +print +printed +printer +prints +prior +priori +priorly +priors +priory +prism +prisms +prison +prisons +privacy +private +privies +privy +prize +prized +prizer +prizers +prizes +prizing +pro +probate +probe +probed +prober +probes +probing +problem +proceed +process +procure +produce +product +profane +profess +proffer +profile +profit +profits +progeny +program +project +prolog +prologs +prolong +promise +promote +prompt +prompts +prone +pronely +prong +pronged +prongs +pronoun +proof +proofed +proofer +proofs +prop +propel +propels +proper +prophet +propose +props +pros +prose +proser +prosing +prosper +protect +protege +protein +protest +proton +protons +proud +prouder +proudly +prove +proved +proven +prover +proverb +provers +proves +provide +proving +provoke +prow +prowess +prowl +prowled +prowler +prowls +prows +prudent +prune +pruned +pruner +pruners +prunes +pruning +pry +prying +psalm +psalms +pseudo +psyche +psyches +pub +public +publics +publish +pubs +pucker +puckers +pudding +puddle +puddled +puddler +puddles +puff +puffed +puffer +puffers +puffing +puffs +pull +pulled +puller +pulley +pulleys +pulling +pulls +pulp +pulper +pulping +pulpit +pulpits +pulse +pulsed +pulser +pulses +pulsing +pump +pumped +pumper +pumping +pumpkin +pumps +pun +punch +punched +puncher +punches +punier +punish +puns +punt +punted +punter +punters +punting +punts +puny +pup +pupa +pupas +pupil +pupils +puppet +puppets +puppies +puppy +pups +pure +purely +purer +purest +purge +purged +purger +purges +purging +purify +purity +purple +purpled +purpler +purples +purport +purpose +purr +purred +purring +purrs +purse +pursed +purser +pursers +purses +pursing +pursue +pursued +pursuer +pursues +pursuit +purview +push +pushed +pusher +pushers +pushes +pushing +puss +pussier +pussies +pussy +put +puts +putter +putters +putting +puzzle +puzzled +puzzler +puzzles +pygmies +pygmy +pyramid +quack +quacked +quacks +quail +quails +quaint +quake +quaked +quaker +quakers +quakes +quaking +qualify +quality +qualm +qualms +quanta +quantum +quarrel +quarry +quart +quarter +quartet +quarts +quartz +quash +quashed +quashes +quasi +quaver +quavers +quay +quays +queen +queenly +queens +queer +queerer +queerly +queers +quell +quelled +queller +quells +quench +queried +querier +queries +query +quest +quested +quester +quests +queue +queued +queuer +queuers +queues +quick +quicken +quicker +quickly +quiet +quieted +quieten +quieter +quietly +quiets +quill +quills +quilt +quilted +quilter +quilts +quinine +quit +quite +quits +quitter +quiver +quivers +quiz +quizzed +quizzes +quo +quota +quotas +quote +quoted +quotes +quoth +quoting +rabbit +rabbits +rabble +rabbled +rabbler +raccoon +race +raced +racer +racers +races +racial +racing +rack +racked +racker +racket +rackets +racking +racks +radar +radars +radial +radiant +radiate +radical +radio +radioed +radios +radish +radius +radix +radixes +raft +rafter +rafters +rafts +rag +rage +raged +rages +ragged +raging +rags +raid +raided +raider +raiders +raiding +raids +rail +railed +railer +railers +railing +rails +railway +raiment +rain +rainbow +rained +rainier +raining +rains +rainy +raise +raised +raiser +raisers +raises +raisin +raising +raisins +rake +raked +raker +rakes +raking +rallied +rallies +rally +ram +ramble +rambled +rambler +rambles +ramp +rampart +ramped +ramping +ramps +rams +ramses +ran +ranch +ranched +rancher +ranches +random +rang +range +ranged +ranger +rangers +ranges +ranging +rank +ranked +ranker +rankers +rankest +ranking +rankle +rankled +rankles +rankly +ranks +ransack +ransom +ransoms +rant +ranted +ranter +ranters +ranting +rants +rap +rape +raped +raper +rapes +rapid +rapidly +rapids +raping +raps +rapt +raptly +rapture +rare +rarely +rarer +rarest +raring +rarity +rascal +rascals +rash +rasher +rashes +rashly +rasp +rasped +rasper +rasping +rasps +raster +rasters +rat +rate +rated +rater +raters +rates +rather +ratify +rating +ratings +ratio +ration +rations +ratios +rats +rattle +rattled +rattler +rattles +ravage +ravaged +ravager +ravages +rave +raved +raven +ravened +ravener +ravens +raver +raves +ravine +ravined +ravines +raving +ravings +raw +rawer +rawest +rawly +rawness +raws +ray +rayed +rays +razor +razors +re +reach +reached +reacher +reaches +react +reacted +reactor +reacts +read +reader +readers +readied +readier +readies +readily +reading +readout +reads +ready +real +realest +realign +realism +realist +reality +realize +really +realm +realms +reals +ream +reamed +reamer +reaming +reams +reap +reaped +reaper +reaping +reaps +rear +reared +rearer +rearing +rearmed +rearms +rears +reason +reasons +rebate +rebated +rebater +rebates +rebel +rebells +rebels +rebids +rebirth +rebonds +reboot +reboots +reborn +rebound +rebuff +rebuffs +rebuild +rebuilt +rebuke +rebuked +rebuker +rebukes +rebut +recall +recalls +recast +recasts +recede +receded +recedes +receipt +receive +recent +recess +recipe +recipes +recital +recite +recited +reciter +recites +reckon +reckons +reclaim +recline +recode +recoded +recodes +recoil +recoils +record +records +recored +recount +recover +recruit +recta +rector +rectors +rectum +rectums +recur +recurs +recurse +recycle +red +redden +redder +reddest +reddish +redeem +redeems +redials +redly +redness +redoing +redone +redraw +redrawn +redraws +redress +reds +reduce +reduced +reducer +reduces +reed +reeder +reeding +reeds +reef +reefer +reefing +reefs +reel +reelect +reeled +reeler +reeling +reels +reenter +reeves +refaced +refaces +refer +referee +refers +refill +refills +refine +refined +refiner +refines +reflect +reflex +refocus +reform +reforms +refrain +refresh +refried +refries +refry +refuel +refuels +refuge +refuged +refugee +refuges +refund +refunds +refusal +refuse +refused +refuser +refuses +refute +refuted +refuter +refutes +regain +regains +regal +regaled +regally +regard +regards +regent +regents +regime +regimen +regimes +region +regions +regress +regret +regrets +regrids +regroup +regular +rehash +reign +reigned +reigns +rein +reined +reining +reins +reissue +reject +rejects +rejoice +rejoin +rejoins +reknit +relabel +relapse +relate +related +relater +relates +relax +relaxed +relaxer +relaxes +relay +relayed +relays +release +relent +relents +relic +relics +relied +relief +reliefs +relier +relies +relieve +relish +relive +relives +reload +reloads +rely +relying +remade +remain +remains +remark +remarks +remedy +remind +reminds +remixed +remnant +remodel +remorse +remote +removal +remove +removed +remover +removes +renal +rename +renamed +renames +rend +render +renders +rending +rends +renew +renewal +renewed +renewer +renews +reno +renown +rent +rental +rentals +rented +renter +renters +renting +rents +reopen +reopens +reorder +repacks +repaid +repaint +repair +repairs +repast +repasts +repay +repays +repeal +repeals +repeat +repeats +repel +repels +repent +repents +repine +repined +repiner +replace +replay +replays +replete +replica +replied +replier +replies +reply +report +reports +repose +reposed +reposes +repost +reposts +repress +reprint +reproof +reprove +reptile +repulse +repute +reputed +reputes +request +requiem +require +requite +reran +reread +rereads +reroute +rerun +reruns +res +rescan +rescans +rescue +rescued +rescuer +rescues +resell +resells +resends +resent +resents +reserve +reset +reseted +reseter +resets +reshape +reside +resided +resider +resides +residue +resign +resigns +resin +resined +resins +resist +resists +resize +resized +resizes +resold +resolve +resort +resorts +resound +respect +respite +respond +rest +restart +restate +rested +rester +restful +resting +restive +restore +rests +result +results +resume +resumed +resumes +retail +retails +retain +retains +retard +reticle +retied +retina +retinal +retinas +retinue +retire +retired +retires +retold +retort +retorts +retrace +retract +retrain +retreat +retried +retrier +retries +retry +return +returns +retype +retyped +retypes +reunion +reunite +reuse +reused +reuses +reusing +revamp +revamps +reveal +reveals +revel +revelry +revels +revenge +revenue +revere +revered +reveres +reverse +revert +reverts +review +reviews +revile +reviled +reviler +revise +revised +reviser +revises +revisit +revival +revive +revived +reviver +revives +revoke +revoked +revoker +revokes +revolt +revolts +revolve +reward +rewards +rewind +rewinds +rewired +rewires +reword +rewords +rework +reworks +rewound +rewrite +rewrote +rhubarb +rhyme +rhymed +rhymer +rhymes +rhyming +rhythm +rhythms +rib +ribbed +ribbing +ribbon +ribbons +ribs +rice +ricer +rices +rich +richen +richer +riches +richest +richly +rid +ridden +riddle +riddled +riddler +riddles +ride +rider +riders +rides +ridge +ridged +ridges +ridging +riding +ridings +rids +rifle +rifled +rifler +rifles +rifling +rift +rig +rigged +rigging +right +righted +righten +righter +rightly +rights +rigid +rigidly +rigs +rill +rim +rime +rimer +riming +rims +rind +rinded +rinds +ring +ringed +ringer +ringers +ringing +rings +rinse +rinsed +rinser +rinses +rinsing +riot +rioted +rioter +rioters +rioting +riotous +riots +rip +ripe +ripely +ripen +ripened +ripener +ripens +riper +ripest +ripped +ripping +ripple +rippled +rippler +ripples +rips +rise +risen +riser +risers +rises +rising +risings +risk +risked +risker +risking +risks +rite +rited +rites +ritual +rituals +rival +rivalry +rivals +rive +rived +riven +river +rivers +rivet +riveted +riveter +rivets +riving +rivulet +road +roads +roadway +roam +roamed +roamer +roaming +roams +roar +roared +roarer +roaring +roars +roast +roasted +roaster +roasts +rob +robbed +robber +robbers +robbery +robbing +robe +robed +robes +robin +robing +robins +robot +robotic +robots +robs +robust +rock +rocked +rocker +rockers +rocket +rockets +rockier +rockies +rocking +rocks +rocky +rod +rode +rods +roe +roes +rogue +rogues +roguing +role +roles +roll +rolled +roller +rollers +rolling +rolls +romance +romp +romped +romper +rompers +romping +romps +roof +roofed +roofer +roofers +roofing +roofs +rook +rooks +room +roomed +roomer +roomers +rooming +rooms +roost +rooster +root +rooted +rooter +rooting +roots +rope +roped +roper +ropers +ropes +roping +rose +rosebud +roses +rosier +rosy +rot +rotary +rotate +rotated +rotates +rotator +rots +rotten +rouge +rough +roughed +roughen +rougher +roughly +rouging +round +rounded +rounder +roundly +rounds +roundup +rouse +roused +rouser +rouses +rousing +rout +route +routed +router +routers +routes +routine +routing +rove +roved +rover +roves +roving +row +rowed +rowen +rower +rowers +rowing +rows +royal +royally +royalty +rub +rubbed +rubber +rubbers +rubbing +rubbish +rubble +rubbled +rubies +rubout +rubs +ruby +rudder +rudders +ruddier +ruddy +rude +rudely +ruder +rudest +rue +rues +ruffian +ruffle +ruffled +ruffler +ruffles +rug +rugged +rugs +ruin +ruined +ruiner +ruing +ruining +ruinous +ruins +rule +ruled +ruler +rulers +rules +ruling +rulings +rum +rumble +rumbled +rumbler +rumbles +rumen +rumens +rump +rumple +rumpled +rumples +rumply +rumps +run +runaway +rung +rungs +runner +runners +running +runs +runtime +rupture +rural +rurally +rush +rushed +rusher +rushes +rushing +russet +russets +rust +rusted +rustic +rustier +rusting +rustle +rustled +rustler +rustles +rusts +rusty +rut +ruts +rye +sable +sables +sack +sacked +sacker +sacking +sacks +sacred +sad +sadden +saddens +sadder +saddest +saddle +saddled +saddler +saddles +sadism +sadist +sadists +sadly +sadness +safe +safely +safer +safes +safest +safety +sag +sage +sagely +sages +sags +said +sail +sailed +sailer +sailing +sailor +sailors +sails +saint +sainted +saintly +saints +sake +saker +sakes +salable +salad +salads +salary +sale +sales +salient +saline +saliva +sallied +sallies +sallow +sally +salmon +salmons +salon +salons +saloon +saloons +salt +salted +salter +salters +saltier +salting +salts +salty +salute +saluted +saluter +salutes +salvage +salve +salver +salves +salving +same +sample +sampled +sampler +samples +sand +sandal +sandals +sanded +sander +sanders +sandier +sanding +sands +sandy +sane +sanely +saner +sanest +sang +sanity +sank +sap +sapling +saps +sarcasm +sash +sashed +sashes +sat +satchel +sate +sated +sates +satin +sating +satire +satires +satisfy +satyr +sauce +saucer +saucers +sauces +saucier +saucing +saucy +saunter +sausage +savage +savaged +savager +savages +save +saved +saver +savers +saves +saving +savings +saw +sawed +sawer +sawing +sawmill +saws +say +sayer +sayers +saying +sayings +says +scalar +scalars +scald +scalded +scalds +scale +scaled +scaler +scalers +scales +scalier +scaling +scallop +scalp +scalper +scalps +scaly +scam +scamper +scams +scan +scandal +scanned +scanner +scans +scant +scantly +scanty +scar +scarce +scarcer +scare +scared +scarer +scares +scarf +scarfs +scarier +scaring +scarlet +scars +scary +scatter +scene +scenery +scenes +scenic +scenics +scent +scented +scents +schema +schemas +scheme +schemed +schemer +schemes +scholar +school +schools +science +scissor +scoff +scoffed +scoffer +scoffs +scold +scolded +scolder +scolds +scoop +scooped +scooper +scoops +scope +scoped +scopes +scoping +scorch +score +scored +scorer +scorers +scores +scoring +scorn +scorned +scorner +scorns +scour +scoured +scourer +scourge +scours +scout +scouted +scouter +scouts +scow +scowl +scowled +scowler +scowls +scrap +scrape +scraped +scraper +scrapes +scraps +scratch +scrawl +scrawls +scream +screams +screech +screen +screens +screw +screwed +screwer +screws +scribe +scriber +scribes +script +scripts +scroll +scrolls +scrooge +scrub +scrubs +scruple +scuffle +sculpt +sculpts +scum +scums +scurry +scuttle +scythe +scythes +sea +seal +sealed +sealer +sealing +seals +sealy +seam +seaman +seamed +seamen +seamer +seaming +seams +seaport +sear +search +seared +searing +sears +seas +seaside +season +seasons +seat +seated +seater +seating +seats +seaward +seaweed +secede +seceded +seceder +secedes +second +seconds +secrecy +secret +secrete +secrets +sect +section +sector +sectors +sects +secular +secure +secured +securer +secures +sedge +seduce +seduced +seducer +seduces +see +seed +seeded +seeder +seeders +seeding +seeds +seeing +seek +seeker +seekers +seeking +seeks +seem +seemed +seeming +seemly +seems +seen +seep +seeped +seeping +seeps +seer +seers +sees +seethe +seethed +seethes +segment +seismic +seize +seized +seizer +seizers +seizes +seizin +seizing +seizins +seizor +seizors +seizure +seldom +select +selects +self +selfish +sell +seller +sellers +selling +sells +selves +seminal +seminar +senate +senates +senator +send +sender +senders +sending +sends +senior +seniors +sense +sensed +senses +sensing +sensor +sensors +sensory +sent +sentry +sequel +sequels +serene +serf +serfs +serial +serials +series +serious +sermon +sermons +serpent +serum +serums +servant +serve +served +server +servers +serves +service +servile +serving +session +set +sets +setter +setters +setting +settle +settled +settler +settles +setup +setups +seven +sevens +seventh +seventy +sever +several +severe +severed +severer +severs +sew +sewed +sewer +sewers +sewing +sews +sex +sexed +sexes +sexism +sexist +sexists +sexual +shabby +shack +shacked +shackle +shacks +shade +shaded +shader +shades +shadier +shadily +shading +shadow +shadows +shadowy +shady +shaft +shafted +shafts +shaggy +shake +shaken +shaker +shakers +shakes +shakier +shaking +shaky +shale +shales +shall +shallow +sham +shame +shamed +shames +shaming +shams +shanty +shape +shaped +shapely +shaper +shapers +shapes +shaping +share +shared +sharer +sharers +shares +sharing +shark +sharks +sharp +sharped +sharpen +sharper +sharply +sharps +shatter +shave +shaved +shaven +shaver +shaves +shaving +shawl +shawls +she +sheaf +shear +sheared +shearer +shears +sheath +sheaths +sheaves +shed +sheds +sheep +sheer +sheered +sheerly +sheet +sheeted +sheeter +sheets +shelf +shelfs +shell +shelled +sheller +shells +shelter +shelve +shelved +shelver +shelves +sheriff +shied +shield +shields +shier +shies +shiest +shift +shifted +shifter +shifts +shifty +shimmer +shin +shine +shined +shiner +shiners +shines +shingle +shinier +shining +shiny +ship +shipped +shipper +ships +shirk +shirker +shirks +shirt +shirts +shit +shiver +shivers +shoal +shoals +shock +shocked +shocker +shocks +shod +shoe +shoed +shoeing +shoer +shoes +shone +shook +shoot +shooter +shoots +shop +shopped +shopper +shops +shore +shored +shores +shoring +shorn +short +shorted +shorten +shorter +shortly +shorts +shot +shotgun +shots +should +shout +shouted +shouter +shouts +shove +shoved +shovel +shovels +shover +shoves +shoving +show +showed +shower +showers +showing +shown +shows +shrank +shred +shreds +shrew +shrewd +shrews +shriek +shrieks +shrill +shrilly +shrimp +shrine +shrines +shrink +shrinks +shrivel +shroud +shrouds +shrub +shrubs +shrug +shrugs +shrunk +shudder +shuffle +shun +shuns +shut +shuts +shutter +shuttle +shy +shying +shyly +shyness +sibling +sick +sicken +sicker +sickest +sicking +sickle +sickled +sickly +sicks +side +sided +sides +siding +sidings +siege +sieges +sieging +sierra +sierras +sieve +sievers +sieves +sieving +sift +sifted +sifter +sifting +sifts +sigh +sighed +sigher +sighing +sighs +sight +sighted +sighter +sightly +sights +sign +signal +signals +signed +signer +signers +signet +signify +signing +signs +silence +silent +silents +silicon +silk +silken +silkier +silkily +silks +silky +sill +sillier +sills +silly +silt +silted +silting +silts +silver +silvers +silvery +similar +simmer +simmers +simple +simpler +simples +simplex +simply +sin +since +sincere +sine +sines +sinew +sinews +sinful +sing +singed +singer +singers +singing +single +singled +singles +singly +sings +sining +sink +sinked +sinker +sinkers +sinking +sinks +sinned +sinner +sinners +sinning +sins +sip +sips +sir +sire +sired +siren +sirens +sires +siring +sirs +sirup +sister +sisters +sit +site +sited +sites +siting +sits +sitter +sitters +sitting +situate +six +sixes +sixteen +sixth +sixthly +sixties +sixty +sizable +size +sized +sizer +sizers +sizes +sizing +sizings +skate +skated +skater +skaters +skates +skating +skeptic +sketch +sketchy +skew +skewed +skewer +skewers +skewing +skews +ski +skied +skien +skier +skies +skiing +skill +skilled +skills +skim +skimmed +skimmer +skimp +skimped +skimps +skims +skin +skinned +skinner +skins +skip +skipped +skipper +skips +skirt +skirted +skirter +skirts +skis +skulk +skulked +skulker +skulks +skull +skulled +skulls +skunk +skunks +sky +skying +skylark +slab +slabs +slack +slacked +slacken +slacker +slackly +slacks +slain +slam +slammed +slams +slander +slang +slant +slanted +slants +slap +slapped +slaps +slash +slashed +slasher +slashes +slat +slate +slated +slater +slaters +slates +slating +slats +slave +slaved +slaver +slavery +slaves +slaving +slay +slayer +slayers +slaying +slays +sled +sledge +sledges +sleds +sleek +sleekly +sleep +sleeper +sleeps +sleepy +sleet +sleeve +sleeved +sleeves +sleigh +sleighs +sleken +slender +slept +slew +slewed +slewing +slice +sliced +slicer +slicers +slices +slicing +slick +slicker +slickly +slicks +slid +slide +slider +sliders +slides +sliding +slier +sliest +slight +slights +slim +slime +slimed +slimes +slimier +sliming +slimly +slimy +sling +slinger +slings +slip +slipped +slipper +slips +slit +slits +slogan +slogans +slop +slope +sloped +sloper +slopers +slopes +sloping +slopped +sloppy +slops +slot +sloth +sloths +slots +slotted +slouch +slow +slowed +slower +slowest +slowing +slowly +slows +slug +slugs +slum +slumber +slump +slumped +slumps +slums +slung +slur +slurs +sly +slyly +smack +smacked +smacker +smacks +small +smaller +smart +smarted +smarten +smarter +smartly +smarts +smash +smashed +smasher +smashes +smear +smeared +smearer +smears +smell +smelled +smeller +smells +smelly +smelt +smelter +smelts +smile +smiled +smiler +smiles +smiling +smite +smiter +smith +smiths +smithy +smiting +smitten +smock +smocks +smog +smoke +smoked +smoker +smokers +smokes +smokier +smokies +smoking +smoky +smolder +smooth +smote +smother +smug +smuggle +smugly +snail +snails +snake +snaked +snakes +snaking +snap +snapped +snapper +snappy +snaps +snare +snared +snarer +snares +snarf +snarfed +snarfs +snaring +snarl +snarled +snarler +snarls +snatch +sneak +sneaked +sneaker +sneaks +sneaky +sneer +sneered +sneerer +sneers +sneeze +sneezed +sneezer +sneezes +sniff +sniffed +sniffer +sniffs +snoop +snooped +snooper +snoops +snore +snored +snorer +snores +snoring +snort +snorted +snorter +snorts +snout +snouted +snouts +snow +snowed +snowier +snowily +snowing +snowman +snowmen +snows +snowy +snuff +snuffed +snuffer +snuffs +snug +snuggle +snugly +snugs +so +soak +soaked +soaker +soaking +soaks +soap +soaped +soaping +soaps +soar +soared +soarer +soaring +soars +sob +sober +sobered +soberer +soberly +sobers +sobs +soccer +social +society +sock +socked +socket +sockets +socking +socks +sod +soda +sodium +sodomy +sods +sofa +sofas +soft +soften +softens +softer +softest +softly +soil +soiled +soiling +soils +sojourn +solace +solaced +solacer +solar +sold +solder +solders +soldier +sole +soled +solely +solemn +soles +solicit +solid +solidly +solids +soling +solo +soloed +soloing +solos +soluble +solve +solved +solvent +solver +solvers +solves +solving +somber +some +someday +somehow +someone +somers +son +sonar +sonars +song +songs +sonly +sonnet +sonnets +sons +soon +sooner +soonest +soot +sooth +soothe +soothed +soother +soothes +soothly +sorcery +sordid +sore +sorely +sorer +sores +sorest +sorrier +sorrow +sorrows +sorry +sort +sorted +sorter +sorters +sorting +sorts +sos +sought +soul +souled +souls +sound +sounded +sounder +soundly +sounds +soup +soups +sour +source +sources +soured +sourer +sourest +souring +sourly +sours +south +souther +soviet +soviets +space +spaced +spacer +spacers +spaces +spacing +spade +spaded +spader +spades +spading +span +spank +spanked +spanker +spanks +spanned +spanner +spans +spare +spared +sparely +sparer +spares +sparest +sparing +spark +sparked +sparker +sparks +sparrow +sparse +sparser +spat +spate +spates +spatial +spats +spatter +spawn +spawned +spawner +spawns +speak +speaker +speaks +spear +speared +spearer +spears +special +species +specify +speck +speckle +specks +spectra +sped +speech +speed +speeded +speeder +speeds +speedup +speedy +spell +spelled +speller +spells +spend +spender +spends +spent +sphere +spheres +spice +spiced +spices +spicier +spicing +spicy +spider +spiders +spied +spier +spies +spike +spiked +spiker +spikes +spiking +spill +spilled +spiller +spills +spin +spinach +spinal +spindle +spine +spines +spinner +spins +spiral +spirals +spire +spired +spires +spiring +spirit +spirits +spit +spite +spited +spites +spiting +spits +splash +spleen +splice +spliced +splicer +splices +spline +splined +splines +split +splits +spoil +spoiled +spoiler +spoils +spoke +spoked +spoken +spokes +spoking +sponge +sponged +sponger +sponges +sponsor +spook +spooky +spool +spooled +spooler +spools +spoon +spooned +spoons +spore +spored +spores +sporing +sport +sported +sports +spot +spots +spotted +spotter +spouse +spouses +spout +spouted +spouter +spouts +sprang +sprawl +sprawls +spray +sprayed +sprayer +sprays +spread +spreads +spree +sprees +sprig +spring +springs +springy +sprint +sprints +sprite +sprout +sprouts +spruce +spruced +sprucer +sprung +spun +spur +spurn +spurned +spurner +spurns +spurs +spurt +spurted +spurts +sputter +spy +spying +squad +squads +squall +squalls +square +squared +squarer +squares +squash +squat +squatly +squats +squawk +squawks +squeak +squeaks +squeal +squeals +squeeze +squid +squids +squint +squints +squire +squires +squirm +squirms +stab +stabbed +stable +stabled +stabler +stables +stably +stabs +stack +stacked +stacker +stacks +staff +staffed +staffer +staffs +stag +stage +staged +stager +stagers +stages +stagger +staging +stags +staid +staidly +stain +stained +stainer +stains +stair +stairs +stake +staked +stakes +staking +stale +staled +stalely +staler +stales +stalest +staling +stalk +stalked +stalker +stalks +stall +stalled +stalls +stamen +stamens +stamina +stammer +stamp +stamped +stamper +stamps +stance +stances +stanch +stand +standby +stander +stands +stanza +stanzas +staple +stapled +stapler +staples +star +starch +stare +stared +starer +stares +staring +stark +starkly +starlet +starred +starry +stars +start +started +starter +startle +starts +startup +starve +starved +starver +starves +state +stated +stately +stater +states +static +statics +stating +station +stative +statue +statued +statues +stature +status +statute +staunch +stave +staved +staves +staving +stay +stayed +stayer +stayers +staying +stays +stdio +stead +steady +steak +steaks +steal +stealer +steals +stealth +steam +steamed +steamer +steams +steed +steeds +steel +steeled +steels +steep +steeped +steepen +steeper +steeple +steeply +steeps +steer +steered +steerer +steers +stellar +stem +stemmed +stems +stench +stencil +step +stepped +stepper +steps +stereo +stereos +sterile +stern +sternly +sterns +stew +steward +stewed +stewing +stews +stick +sticked +sticker +sticks +sticky +stiff +stiffen +stiffer +stiffly +stiffs +stifle +stifled +stifler +stifles +stigma +stigmas +stile +stiles +still +stilled +stiller +stills +stimuli +sting +stinger +stings +stink +stinker +stinks +stint +stinted +stinter +stints +stipend +stipple +stir +stirred +stirrer +stirrup +stirs +stitch +stock +stocked +stocker +stocks +stole +stoled +stolen +stoles +stomach +stone +stoned +stoner +stones +stonier +stoning +stony +stood +stool +stools +stoop +stooped +stoops +stop +stopgap +stopped +stopper +stops +storage +store +stored +stores +storied +stories +storing +stork +storks +storm +stormed +storms +stormy +story +stout +stouten +stouter +stoutly +stove +stover +stoves +stow +stowed +stowing +stows +strain +strains +strait +straits +strand +strands +strange +strap +straps +stratum +straw +straws +stray +strayed +strayer +strays +streak +streaks +stream +streams +street +streets +stress +stretch +strew +strewn +strews +strewth +strict +stride +strider +strides +strife +strike +striker +strikes +string +strings +stringy +strip +stripe +striped +striper +stripes +strips +strive +striver +strives +strobe +strobed +strobes +strode +stroke +stroked +stroker +strokes +stroll +strolls +strong +strove +struck +strung +strut +struts +stub +stubbed +stubble +stubs +stuck +stud +student +studied +studier +studies +studio +studios +studs +study +stuff +stuffed +stuffer +stuffs +stuffy +stumble +stump +stumped +stumper +stumps +stun +stung +stuns +stunt +stunted +stunts +stupefy +stupid +stupor +sturdy +style +styled +styler +stylers +styles +styling +stylish +sub +subdue +subdued +subduer +subdues +subfile +subgoal +subject +sublime +sublist +submit +submits +submode +subs +subset +subsets +subside +subsidy +subsist +subsume +subtask +subtle +subtler +subtly +subtree +subunit +suburb +suburbs +subvert +subway +subways +succeed +success +succumb +such +suck +sucked +sucker +suckers +sucking +suckle +suckled +suckles +sucks +suction +sudden +suds +sudser +sudsing +sue +sued +sueded +sueding +suer +sues +suffer +suffers +suffice +suffix +sugar +sugared +sugars +suggest +suicide +suing +suit +suite +suited +suiters +suites +suiting +suitor +suitors +suits +sulk +sulked +sulkies +sulking +sulks +sulky +sullen +sulphur +sultan +sultans +sultry +sum +sumer +summand +summary +summed +summer +summers +summing +summit +summon +summons +sums +sun +sunbeam +sunburn +sundown +sundry +sung +sunk +sunken +sunned +sunnier +sunning +sunny +sunrise +suns +sunset +sunsets +sup +super +superb +supered +supper +suppers +supple +suppled +suppler +supply +support +suppose +supreme +sure +sured +surely +surer +surest +surety +surf +surface +surfer +surfers +surfing +surge +surged +surgely +surgeon +surgery +surges +surging +surlier +surly +surmise +surname +surpass +surplus +survey +surveys +survive +suspect +suspend +sustain +suture +sutured +sutures +swagger +swain +swains +swallow +swam +swamp +swamped +swamper +swamps +swampy +swan +swans +swap +swapped +swapper +swaps +swarm +swarmed +swarmer +swarms +swarthy +swatted +sway +swayed +swayer +swaying +sways +swear +swearer +swears +sweat +sweated +sweater +sweats +sweep +sweeper +sweeps +sweet +sweeten +sweeter +sweetie +sweetly +sweets +swell +swelled +swells +swept +swerve +swerved +swerves +swift +swifter +swiftly +swim +swimmer +swims +swine +swing +swinger +swings +swipe +swiped +swipes +swiping +swirl +swirled +swirler +swirls +swish +swished +swisher +switch +swollen +swoon +swooned +swooner +swoons +swoop +swooped +swooper +swoops +sword +swords +swore +sworn +swum +swung +syllabi +symbol +symbols +symptom +synapse +synonym +syntax +syringe +syrup +system +systems +tab +table +tableau +tabled +tables +tablet +tablets +tabling +taboo +taboos +tabs +tabular +tacit +tacitly +tack +tacked +tacker +tacking +tackle +tackled +tackler +tackles +tacks +tact +tactics +tactile +tag +tagged +tagging +tags +tail +tailed +tailer +tailing +tailor +tailors +tails +taint +tainted +taints +take +taken +taker +takers +takes +taketh +taking +takings +tale +talent +talents +taler +tales +talion +talk +talked +talker +talkers +talkie +talking +talks +tall +taller +tallest +tallow +tame +tamed +tamely +tamer +tames +tamest +taming +tamper +tampers +tan +tandem +tang +tanged +tangent +tangier +tangle +tangled +tangles +tangly +tangy +tank +tanked +tanker +tankers +tanking +tanks +tanner +tanners +tans +tantrum +tap +tape +taped +taper +tapered +taperer +tapers +tapes +taping +tapings +tapped +tapper +tappers +tapping +taproot +taps +tar +tardier +tardies +tardy +target +targets +tariff +tariffs +taring +tarried +tarries +tarry +tars +tart +tartly +tarts +task +tasked +tasking +tasks +taste +tasted +taster +tasters +tastes +tasting +tatter +tattoo +tattoos +tau +taught +taunt +taunted +taunter +taunts +taut +tauten +tautly +tavern +taverns +tawnier +tawnies +tawny +tax +taxable +taxed +taxer +taxes +taxi +taxicab +taxied +taxiing +taxing +taxis +tea +teach +teacher +teaches +team +teamed +teaming +teams +tear +teared +tearer +tearful +tearing +tears +teas +tease +teased +teaser +teases +teasing +tedious +tedium +teem +teemed +teeming +teems +teen +teenage +teener +teens +teeth +teethe +teethed +teether +teethes +tell +teller +tellers +telling +tells +temper +tempers +tempest +temple +templed +temples +tempt +tempted +tempter +tempts +ten +tenant +tenants +tend +tended +tender +tenders +tending +tends +tennis +tenor +tenors +tens +tense +tensed +tensely +tenser +tenses +tensest +tensing +tension +tensive +tensor +tensors +tent +tented +tenter +tenth +tenthes +tenting +tents +tenure +tenured +tenures +tequila +term +termcap +termed +termer +terming +termly +terms +ternary +terrace +terrain +terrier +terrify +terror +terrors +test +tested +tester +testers +testify +testing +tests +text +textile +texts +textual +texture +than +thank +thanked +thanker +thanks +that +thatch +thats +thaw +thawed +thawing +thaws +the +theft +thefts +their +theirs +them +theme +themes +then +thence +theorem +theory +therapy +there +thereby +therein +thereof +thereon +thereto +these +theses +thesis +they +thick +thicken +thicker +thicket +thickly +thicks +thief +thieve +thieves +thigh +thighed +thighs +thimble +thin +thiner +thinest +thing +things +think +thinker +thinks +thinly +thinner +thins +third +thirdly +thirds +thirst +thirsts +thirsty +thirty +this +thistle +thong +thonged +thorn +thorns +thorny +those +though +thought +thrash +thread +threads +threat +threats +three +threes +threw +thrice +thrift +thrifty +thrill +thrills +thrive +thrived +thriver +thrives +throat +throats +throb +throbs +throne +thrones +throng +throngs +through +throw +thrower +thrown +throws +thrush +thrust +thrusts +thud +thuds +thug +thugs +thumb +thumbed +thumbs +thump +thumped +thumper +thumps +thunder +thus +thusly +thwart +thwarts +thyself +tick +ticked +ticker +tickers +ticket +tickets +ticking +tickle +tickled +tickler +tickles +ticks +tidal +tidally +tide +tided +tides +tidied +tidier +tidies +tiding +tidings +tidy +tidying +tie +tied +tier +tiered +tiers +ties +tiger +tigers +tight +tighten +tighter +tightly +tights +tilde +tildes +tile +tiled +tiler +tiles +tiling +till +tilled +tiller +tillers +tilling +tills +tilt +tilted +tilter +tilters +tilting +tilts +timber +timbers +time +timed +timely +timeout +timer +timers +times +timid +timidly +timing +timings +tin +tinge +tinged +tinging +tingle +tingled +tingles +tinier +tiniest +tinily +tinker +tinkers +tinkle +tinkled +tinkles +tinned +tinnier +tinnily +tinning +tinny +tins +tint +tinted +tinter +tinting +tints +tiny +tip +tipped +tipper +tippers +tipping +tips +tiptoe +tiptoed +tire +tired +tiredly +tires +tiring +tissue +tissued +tissues +tit +tithe +tither +tithes +tithing +title +titled +titles +titling +tits +titter +titters +tizzies +tizzy +to +toad +toads +toast +toasted +toaster +toasts +toasty +tobacco +today +todays +toe +toed +toes +toggle +toggled +toggles +toil +toiled +toiler +toilet +toilets +toiling +toils +token +tokens +told +toll +tolled +tolling +tolls +tom +tomato +tomb +tombs +toms +ton +tone +toned +toner +tones +tongs +tongue +tongued +tongues +tonic +tonics +tonight +toning +tonnage +tons +tonsil +too +took +tool +tooled +tooler +toolers +tooling +toolkit +tools +tooth +toothed +top +toped +toper +topic +topical +topics +toping +topmost +topple +toppled +topples +tops +torch +torches +tore +torment +torn +tornado +torpedo +torque +torquer +torques +torrent +torrid +torture +torus +toruses +toss +tossed +tosser +tosses +tossing +total +totally +totals +totter +totters +touch +touched +toucher +touches +touchy +tough +toughen +tougher +toughly +tour +toured +tourer +touring +tourist +tours +tow +toward +towards +towed +towel +towels +tower +towered +towers +towing +town +towner +towns +tows +toxin +toxins +toy +toyed +toyer +toying +toys +trace +traced +tracer +tracers +traces +tracing +track +tracked +tracker +tracks +tract +tractor +tracts +trade +traded +trader +traders +trades +trading +traffic +tragedy +tragic +trail +trailed +trailer +trails +train +trained +trainee +trainer +trains +trait +traitor +traits +tramp +tramped +tramper +trample +tramps +trance +trances +transit +trap +trapped +trapper +traps +trash +trashed +trasher +trashes +travail +travel +travels +tray +trays +tread +treaded +treader +treads +treason +treat +treated +treater +treats +treaty +treble +trebled +trebles +tree +treed +trees +treetop +trek +treks +tremble +tremor +tremors +trench +trend +trends +tress +tressed +tresses +trial +trials +tribal +tribe +tribes +tribune +tribute +trick +tricked +tricker +trickle +tricks +tricky +tried +trier +triers +tries +trifle +trifled +trifler +trifles +trigger +trill +trilled +triller +trim +trimer +trimly +trimmed +trimmer +trims +trinket +trip +triple +tripled +triples +triplet +triply +trips +triumph +trivia +trivial +trod +troff +troffer +troll +trolley +trolls +troop +trooped +trooper +troops +trophy +tropic +tropics +trot +trots +trouble +trough +trouser +trout +trouts +trowel +trowels +truant +truants +truce +trucing +truck +trucked +trucker +trucks +trudge +trudged +trudger +trudges +true +trued +truer +trues +truest +truing +truism +truisms +truly +trump +trumped +trumpet +trumps +trunk +trunked +trunks +trust +trusted +trustee +truster +trusts +trusty +truth +truths +try +trying +tty +ttys +tub +tube +tubed +tuber +tubers +tubes +tubing +tubs +tuck +tucked +tucker +tucking +tucks +tuft +tufted +tufter +tufts +tug +tugs +tuition +tulip +tulips +tumble +tumbled +tumbler +tumbles +tumult +tumults +tunable +tune +tuned +tuner +tuners +tunes +tunic +tunics +tuning +tunings +tunnel +tunnels +tuple +tuples +turban +turbans +turf +turkey +turkeys +turmoil +turn +turned +turner +turners +turning +turnip +turnips +turnkey +turns +turret +turrets +turtle +turtles +tutor +tutored +tutors +twain +twang +twas +tweak +tweaked +tweaker +tweaks +tweed +tweezer +twelfth +twelve +twelves +twenty +twice +twig +twigs +twill +twilled +twin +twine +twined +twiner +twines +twining +twinkle +twins +twirl +twirled +twirler +twirls +twist +twisted +twister +twists +twitch +twitter +two +twofold +twos +tying +type +typed +typedef +typer +types +typhoid +typical +typify +typing +typist +typists +typos +tyranny +tyrant +tyrants +ugh +uglier +ugliest +ugly +ulcer +ulcered +ulcers +umpire +umpired +umpires +unable +unaided +unapt +unaptly +unarmed +unary +unasked +unaware +unbans +unbated +unblock +unblown +unboned +unborn +unbound +unbowed +unbred +unbuilt +uncaged +uncanny +uncared +uncivil +uncle +unclean +unclear +uncles +uncoded +uncool +uncouth +uncover +uncured +under +undergo +underly +undid +undies +undo +undoer +undoes +undoing +undone +undress +undried +undue +unduly +undying +uneasy +unequal +uneven +unfair +unfaith +unfired +unfit +unfitly +unfixed +unfold +unfolds +ungirt +unglued +ungot +unhappy +unheard +unhelm +unhooks +unhoped +unicorn +unified +unifier +unifies +uniform +unify +union +unions +unique +unison +unit +unite +united +uniter +unites +unities +uniting +unitive +units +unity +unjam +unjust +unkind +unknit +unknown +unlaced +unleash +unless +unlike +unlined +unlink +unlinks +unload +unloads +unlock +unlocks +unloved +unlucky +unmade +unmaps +unmated +unmates +unmeant +unmixed +unmount +unmoved +unnamed +unnerve +unpack +unpacks +unpaged +unpaid +unpaved +unplugs +unrated +unravel +unread +unreal +unrest +unroll +unrolls +unruled +unruly +unsafe +unsaid +unsaved +unseals +unseen +unsent +unshod +unsized +unslung +unsnap +unsnaps +unsound +unspent +unstuck +unsung +unsure +untamed +untaped +untidy +untie +untied +unties +until +unto +untold +untried +untrod +untrue +untruly +untruth +untying +untyped +unused +unusual +unveil +unveils +unwaged +unwept +unwind +unwinds +unwired +unwise +unwiser +unworn +unwound +unwoven +unwrap +unwraps +up +upbraid +update +updated +updater +updates +upfield +upgrade +upheld +uphill +uphold +upholds +upkeep +upland +uplands +uplift +uplifts +upload +uploads +upon +upper +uppers +upright +uproar +uproot +uproots +ups +upset +upsets +upshot +upshots +upside +upsides +upturn +upturns +upward +upwards +urban +urchin +urchins +urge +urged +urgent +urger +urges +urging +urgings +urinate +urine +urn +urning +urns +us +usable +usably +usage +usages +use +used +useful +useless +user +users +uses +usher +ushered +ushers +using +usual +usually +usurp +usurped +usurper +utensil +utility +utmost +utopian +utter +uttered +utterer +utterly +utters +uucp +vacancy +vacant +vacate +vacated +vacates +vacuo +vacuous +vacuum +vacuums +vagary +vagina +vaginas +vagrant +vague +vaguely +vaguer +vaguest +vainly +vale +valence +vales +valet +valets +valiant +valid +validly +valley +valleys +value +valued +valuer +valuers +values +valuing +valve +valved +valves +valving +van +vane +vaned +vanes +vanilla +vanish +vanity +vans +vantage +variant +varied +varier +varies +variety +various +varnish +vary +varying +vase +vases +vassal +vassals +vast +vaster +vastest +vastly +vat +vats +vault +vaulted +vaulter +vaults +vaunt +vaunted +vaunter +veal +vealer +vealing +vector +vectors +veer +veered +veering +veers +vehicle +veil +veiled +veiling +veils +vein +veined +veiner +veining +veins +velvet +vend +vender +vending +vendor +vendors +venison +venom +vent +vented +venter +venting +ventral +vents +venture +veranda +verb +verbal +verbose +verbs +verdict +verdure +verge +verger +verges +verier +veriest +verify +verily +vermin +versa +verse +versed +verser +verses +versing +version +versus +vertex +very +vessel +vessels +vest +vested +vestige +vesting +vests +veteran +veto +vetoed +vetoer +vetoes +vetoing +vetting +vex +vexed +vexedly +vexes +vexing +vi +via +viable +viably +vial +vials +vibrate +vice +viceroy +vices +vicing +vicious +victim +victims +victor +victors +victory +victual +video +videos +vie +vied +vier +vies +view +viewed +viewer +viewers +viewing +views +vile +vilely +viler +vilest +vilify +villa +village +villain +villas +vine +vinegar +vines +vining +vintage +violate +violent +violet +violets +violin +violins +viper +vipers +viral +virally +virgin +virgins +virtual +virtue +virtues +virus +viruses +vis +visa +visaed +visage +visaged +visaing +visas +viscous +visible +visibly +vision +visions +visit +visited +visitor +visits +visor +visored +visors +vista +vistaed +vistas +visual +visuals +vita +vitae +vital +vitally +vitals +vitamin +vivid +vividly +vizier +vocal +vocally +vocals +vogue +voice +voiced +voicer +voicers +voices +voicing +void +voided +voider +voiding +voids +volcano +volley +volleys +volt +voltage +volts +volume +volumed +volumes +vomit +vomited +vomiter +vomits +vortex +vote +voted +voter +voters +votes +voting +votive +vouch +voucher +vouches +vow +vowed +vowel +vowels +vower +vowing +vows +voyage +voyaged +voyager +voyages +vulgar +vulture +wade +waded +wader +waders +wades +wading +wafer +wafered +wafers +waffle +waffled +waffles +waft +wafter +wag +wage +waged +wager +wagered +wagerer +wagers +wages +waging +wagon +wagons +wags +wail +wailed +wailer +wailing +wails +waist +waisted +waister +waists +wait +waited +waiter +waiters +waiting +waits +waive +waived +waiver +waivers +waives +waiving +wake +waked +waken +wakened +wakener +waker +wakes +waking +walk +walked +walker +walkers +walking +walks +walkway +wall +walled +waller +wallet +wallets +walling +wallow +wallows +walls +walnut +walnuts +walrus +waltz +waltzed +waltzer +waltzes +wan +wand +wander +wanders +wane +waned +wanes +waning +wanly +wanness +want +wanted +wanter +wanting +wanton +wants +war +warble +warbled +warbler +warbles +ward +warded +warden +wardens +warder +warding +wards +ware +wares +warfare +warier +wariest +warily +waring +warlike +warm +warmed +warmer +warmers +warmest +warming +warmly +warms +warmth +warn +warned +warner +warning +warns +warp +warped +warper +warping +warps +warrant +warred +warring +warrior +wars +warship +wart +warted +warts +wary +was +wash +washed +washer +washers +washes +washing +wasp +wasps +waste +wasted +waster +wastes +wasting +watch +watched +watcher +watches +water +watered +waterer +waters +watery +wave +waved +waver +wavered +waverer +wavers +waves +waving +wax +waxed +waxen +waxer +waxers +waxes +waxier +waxing +waxy +way +ways +wayside +wayward +we +weak +weaken +weakens +weaker +weakest +weakly +wealth +wealths +wealthy +wean +weaned +weaner +weaning +weapon +weapons +wear +wearer +wearied +wearier +wearies +wearily +wearing +wears +weary +weasel +weasels +weather +weave +weaver +weavers +weaves +weaving +web +weber +webs +wed +wedded +wedding +wedge +wedged +wedges +wedging +weds +wee +weed +weeded +weeder +weeding +weeds +week +weekday +weekend +weekly +weeks +weep +weeped +weeper +weepers +weeping +weeps +weigh +weighed +weigher +weighs +weight +weights +weird +weirdly +welcome +weld +welded +welder +welders +welding +welds +welfare +well +welled +welling +wells +wench +wencher +wenches +went +wept +were +west +wester +western +westing +wet +wetly +wetness +wets +wetted +wetter +wettest +wetting +whack +whacked +whacker +whacks +whale +whaler +whales +whaling +whammy +wharf +wharfs +wharves +what +wheat +wheaten +wheel +wheeled +wheeler +wheels +whelp +when +whence +whens +where +whereas +whereby +wherein +whether +whew +whey +which +while +whiled +whiles +whiling +whim +whimper +whims +whimsy +whine +whined +whiner +whines +whining +whip +whipped +whipper +whips +whirl +whirled +whirler +whirls +whirr +whisk +whisked +whisker +whiskey +whisks +whisper +whistle +whit +white +whited +whitely +whiten +whitens +whiter +whites +whitest +whiting +whittle +whiz +whizzed +whizzes +who +whoever +whole +wholes +wholly +whom +whoop +whooped +whooper +whoops +whore +whores +whoring +whorl +whorled +whorls +whose +why +wick +wicked +wicker +wicking +wicks +wide +widely +widen +widened +widener +widens +wider +widest +widget +widgets +widow +widowed +widower +widows +width +widths +wield +wielded +wielder +wields +wife +wifely +wig +wigs +wigwam +wild +wildcat +wilder +wildest +wilding +wildly +wile +wiled +wiles +wilier +wiling +will +willed +willer +willful +willing +willow +willows +wills +wilt +wilted +wilting +wilts +wily +win +wince +winced +winces +wincing +wind +winded +winder +winders +windier +winding +window +windows +winds +windy +wine +wined +winer +winers +wines +wing +winged +winger +wingers +winging +wings +wining +wink +winked +winker +winking +winks +winner +winners +winning +wins +winter +winters +wintry +wipe +wiped +wiper +wipers +wipes +wiping +wire +wired +wirer +wires +wiretap +wirier +wiring +wirings +wiry +wisdom +wisdoms +wise +wised +wisely +wiser +wises +wisest +wish +wished +wisher +wishers +wishes +wishful +wishing +wising +wisp +wisps +wistful +wit +witch +witches +with +withal +wither +withers +within +without +witness +wits +wittier +witty +wives +wizard +wizards +woe +woeful +woeness +woke +wolf +wolfer +wolves +woman +womanly +womb +wombed +wombs +women +womens +wonder +wonders +wont +wonted +wonting +woo +wood +wooded +wooden +woodier +wooding +woodman +woods +woodser +woody +wooed +wooer +woof +woofed +woofer +woofers +woofing +woofs +wooing +wool +wooled +woolen +woolens +woolly +wools +wooly +woos +word +worded +wordier +wordily +wording +words +wordy +wore +work +worked +worker +workers +working +workman +workmen +works +world +worldly +worlds +worm +wormed +wormer +worming +worms +worn +worried +worrier +worries +worry +worse +worser +worship +worst +worsted +worth +worths +worthy +would +wound +wounded +wounds +wove +woven +wrangle +wrap +wrapped +wrapper +wraps +wrath +wreak +wreaks +wreath +wreck +wrecked +wrecker +wrecks +wren +wrench +wrens +wrest +wrested +wrester +wrestle +wrests +wretch +wriggle +wring +wringer +wrings +wrinkle +wrist +wrists +writ +write +writer +writers +writes +writhe +writhed +writhes +writing +writs +written +wrong +wronged +wronger +wrongly +wrongs +wrote +wrought +wrung +yank +yanked +yanking +yanks +yard +yarded +yarding +yards +yarn +yarned +yarning +yarns +yawn +yawner +yawning +yawns +yea +yeah +year +yearly +yearn +yearned +yearner +yearns +years +yeas +yeast +yeasts +yecch +yell +yelled +yeller +yelling +yellow +yellows +yells +yelp +yelped +yelper +yelping +yelps +yeoman +yeomen +yes +yeses +yet +yield +yielded +yielder +yields +yoke +yokes +yoking +yon +yonder +you +young +younger +youngly +your +yours +youth +youthes +yuck +yummier +yummy +yuppie +yuppies +zap +zapped +zapping +zaps +zeal +zealous +zebra +zebras +zenith +zero +zeroed +zeroes +zeroing +zeros +zeroth +zest +zigzag +zinc +zodiac +zodiacs +zonal +zonally +zone +zoned +zonely +zoner +zones +zoning +zoo +zoom +zoomed +zooming +zooms +zoos