Init
This commit is contained in:
22
src/Boggle.cpp
Executable file
22
src/Boggle.cpp
Executable file
@ -0,0 +1,22 @@
|
||||
// This is the .cpp file you will edit and turn in.
|
||||
// We have provided a minimal skeleton for you,
|
||||
// but you must finish it as described in the spec.
|
||||
// Also remove these comments here and add your own.
|
||||
// TODO: remove this comment header and replace it with your own
|
||||
|
||||
#include <sstream>
|
||||
#include "Boggle.h"
|
||||
#include "random.h"
|
||||
#include "shuffle.h"
|
||||
#include "strlib.h"
|
||||
|
||||
static const int NUM_CUBES = 16; // the number of cubes in the game
|
||||
static const int CUBE_SIDES = 6; // the number of sides on each cube
|
||||
static string CUBES[NUM_CUBES] = { // the letters on all 6 sides of every cube
|
||||
"AAEEGN", "ABBJOO", "ACHOPS", "AFFKPS",
|
||||
"AOOTTW", "CIMOTU", "DEILRX", "DELRVY",
|
||||
"DISTTY", "EEGHNW", "EEINSU", "EHRTVW",
|
||||
"EIOSST", "ELRTTY", "HIMNQU", "HLNNRZ"
|
||||
};
|
||||
|
||||
// TODO: implement the members you declared in Boggle.h
|
29
src/Boggle.h
Executable file
29
src/Boggle.h
Executable file
@ -0,0 +1,29 @@
|
||||
// This is the .h file you will edit and turn in.
|
||||
// We have provided a minimal skeleton for you,
|
||||
// but you must finish it as described in the spec.
|
||||
// Also remove these comments here and add your own, as well as on the members.
|
||||
// TODO: remove this comment header and replace it with your own
|
||||
|
||||
#ifndef _boggle_h
|
||||
#define _boggle_h
|
||||
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
// TODO: include any other header files you need
|
||||
|
||||
using namespace std;
|
||||
|
||||
class Boggle {
|
||||
public:
|
||||
const string DICTIONARY_FILE = "EnglishWords.dat";
|
||||
const int MIN_WORD_LENGTH = 4;
|
||||
const int BOARD_SIZE = 4;
|
||||
|
||||
// TODO: decide the public member functions and declare them
|
||||
|
||||
private:
|
||||
// TODO: decide the private member variables/functions and declare them
|
||||
|
||||
};
|
||||
|
||||
#endif
|
79
src/bogglemain.cpp
Executable file
79
src/bogglemain.cpp
Executable file
@ -0,0 +1,79 @@
|
||||
/*
|
||||
* TDDD86 Boggle
|
||||
* This file contains the main program and user interface for running your
|
||||
* Boggle game. We provide you a skeleton of this file that contains a shell
|
||||
* of the overall logic, but you must complete the playOneGame function.
|
||||
*
|
||||
* The playOneGame function talks to the Boggle class that you will write.
|
||||
* This file should contain all user interaction (cout / cin), while the Boggle
|
||||
* class should contain ALL game state such as the 16 letter cubes, the set of
|
||||
* words that have been formed, the algorithms for searching for words, etc.
|
||||
*
|
||||
* Please do not modify this provided file. Your turned-in files should work
|
||||
* with an unmodified version of all provided code files.
|
||||
*/
|
||||
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include "random.h"
|
||||
#include "strlib.h"
|
||||
#include "Boggle.h"
|
||||
#include "bogglemain.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
int main() {
|
||||
intro();
|
||||
|
||||
// play games repeatedly until user decides to quit
|
||||
Boggle boggle;
|
||||
while (true) {
|
||||
playOneGame(boggle);
|
||||
cout << endl;
|
||||
if (!yesOrNo("Play again (Y/N)? ")) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
cout << "Have a nice day." << endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Explains the program to the user.
|
||||
*/
|
||||
void intro() {
|
||||
cout << "Welcome to TDDD86 Boggle!" << endl;
|
||||
cout << "This game is a search for words on a 2-D board of letter cubes." << endl;
|
||||
cout << "The good news is that you might improve your vocabulary a bit." << endl;
|
||||
cout << "The bad news is that you're probably going to lose miserably to" << endl;
|
||||
cout << "this little dictionary-toting hunk of silicon." << endl;
|
||||
cout << "If only YOU had a gig of RAM!" << endl;
|
||||
cout << endl;
|
||||
cout << "Press Enter to begin the game ... ";
|
||||
string line;
|
||||
getline(cin, line);
|
||||
}
|
||||
|
||||
/*
|
||||
* Prompts the user to answer a yes/no question and returns true if the user
|
||||
* typed 'yes' (or anything that starts with a 'y', case-insensitively),
|
||||
* false if the user types anything that starts with 'n', or re-prompts if
|
||||
* the user doesn't type a 'y' or 'n' word.
|
||||
*/
|
||||
bool yesOrNo(string prompt) {
|
||||
cout << prompt;
|
||||
while (true) {
|
||||
string answer;
|
||||
getline(cin, answer);
|
||||
answer = trim(toLowerCase(answer));
|
||||
if (startsWith(answer, 'y')) {
|
||||
return true;
|
||||
} else if (startsWith(answer, 'n')) {
|
||||
return false;
|
||||
} else {
|
||||
cout << "Please type a word that begins with 'y' or 'n'." << endl;
|
||||
}
|
||||
}
|
||||
}
|
21
src/bogglemain.h
Executable file
21
src/bogglemain.h
Executable file
@ -0,0 +1,21 @@
|
||||
/*
|
||||
* TDDD86 Boggle
|
||||
* This file declares required function prototypes that are defined in
|
||||
* our provided bogglemain.cpp and your boggleplay.cpp that you will write.
|
||||
* See the respective .cpp files for implementation comments for each function.
|
||||
* Please do not modify this provided file.
|
||||
*/
|
||||
|
||||
#ifndef _bogglemain_h
|
||||
#define _bogglemain_h
|
||||
|
||||
#include "Boggle.h"
|
||||
#include <string>
|
||||
using namespace std;
|
||||
|
||||
void intro();
|
||||
void playOneGame(Boggle& boggle);
|
||||
bool yesOrNo(string prompt);
|
||||
void clearConsole();
|
||||
|
||||
#endif
|
32
src/boggleplay.cpp
Executable file
32
src/boggleplay.cpp
Executable file
@ -0,0 +1,32 @@
|
||||
// You will edit and turn in this CPP file.
|
||||
// Also remove these comments here and add your own.
|
||||
// TODO: remove this comment header and replace with your own
|
||||
|
||||
#include <cstdlib>
|
||||
#include <iostream>
|
||||
#include <iomanip>
|
||||
#include <sstream>
|
||||
#include "Boggle.h"
|
||||
#include "bogglemain.h"
|
||||
#include "strlib.h"
|
||||
// TODO: include any other header files you need
|
||||
|
||||
/*
|
||||
* Plays one game of Boggle using the given boggle game state object.
|
||||
*/
|
||||
void playOneGame(Boggle& boggle) {
|
||||
// TODO: implement this function (and add any other functions you like to help you)
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Erases all currently visible text from the output console.
|
||||
*/
|
||||
void clearConsole() {
|
||||
#if defined(_WIN32) || defined(_WIN64)
|
||||
std::system("CLS");
|
||||
#else
|
||||
// assume POSIX
|
||||
std::system("clear");
|
||||
#endif
|
||||
}
|
3
src/readme.txt
Executable file
3
src/readme.txt
Executable file
@ -0,0 +1,3 @@
|
||||
This directory contains the source code files (*.cpp, *.h)
|
||||
that you will write as you complete the assignment.
|
||||
We will also put any instructor-provided code here.
|
78
src/shuffle.h
Executable file
78
src/shuffle.h
Executable file
@ -0,0 +1,78 @@
|
||||
/*
|
||||
* TDDD86 Boggle
|
||||
* This file contains implementation of a shuffling function that operates on
|
||||
* a 1-D and 2-D array, vector, or Grid of any type.
|
||||
* You can use it in your program.
|
||||
* Please do not modify this provided file.
|
||||
*/
|
||||
|
||||
#ifndef _shuffle_h
|
||||
#define _shuffle_h
|
||||
|
||||
#include "grid.h"
|
||||
#include "random.h"
|
||||
#include <vector>
|
||||
|
||||
template <typename T>
|
||||
void shuffle(T* array, int length) {
|
||||
for (int i = 0; i < length; i++) {
|
||||
int j = randomInteger(i, length - 1);
|
||||
if (i != j) {
|
||||
T temp = array[i];
|
||||
array[i] = array[j];
|
||||
array[j] = temp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void shuffle(T** array2d, int rows, int cols) {
|
||||
int length = rows * cols;
|
||||
for (int i = 0; i < length; i++) {
|
||||
int j = randomInteger(i, length - 1);
|
||||
if (i != j) {
|
||||
int r1 = i / cols;
|
||||
int c1 = i % cols;
|
||||
int r2 = j / cols;
|
||||
int c2 = j % cols;
|
||||
|
||||
T temp = array2d[r1][c1];
|
||||
array2d[r1][c1] = array2d[r2][c2];
|
||||
array2d[r2][c2] = temp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void shuffle(vector<T>& v) {
|
||||
for (int i = 0, length = v.size(); i < length; i++) {
|
||||
int j = randomInteger(i, length - 1);
|
||||
if (i != j) {
|
||||
T temp = v[i];
|
||||
v[i] = v[j];
|
||||
v[j] = temp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void shuffle(Grid<T>& grid) {
|
||||
int rows = grid.numRows();
|
||||
int cols = grid.numCols();
|
||||
int length = rows * cols;
|
||||
for (int i = 0; i < length; i++) {
|
||||
int j = randomInteger(i, length - 1);
|
||||
if (i != j) {
|
||||
int r1 = i / cols;
|
||||
int c1 = i % cols;
|
||||
int r2 = j / cols;
|
||||
int c2 = j % cols;
|
||||
|
||||
T temp = grid[r1][c1];
|
||||
grid[r1][c1] = grid[r2][c2];
|
||||
grid[r2][c2] = temp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user