All pastes #801866 Raw Edit

Something

public text v1 · immutable
#801866 ·published 2007-11-29 17:40 UTC
rendered paste body
/* Mankala. Wednesday, October 28, 2007. Stephen Clement */

#include <iostream.h>
#include <H:\lvp\vector.h>

void displayboard(const vector <int> &mankalaboard)
/* Prereq: a mankala board! Must be of size 14.
 * Postreq: board is displayed. */
{
	cout << "  " << mankalaboard[12] << " " << mankalaboard[11] << " " << mankalaboard[10] << " " << mankalaboard[9] << " " << mankalaboard[8] << " " << mankalaboard[7] << endl;
	cout << mankalaboard[13] << "             " << mankalaboard[6] << endl;
	cout << "  " << mankalaboard[0] << " " << mankalaboard[1] << " " << mankalaboard[2] << " " << mankalaboard[3] << " " << mankalaboard[4] << " " << mankalaboard[5] << endl;
	cout << "  " << "A B C D E F" << endl;
}

int getinput(const vector <int> &mankalaboard)
{
	int locationtomove;
	char chartomove;
	do {
		cout << "Which pit of pieces would you like to move (A-F)? ";
		cin >> chartomove;
		if (chartomove < 'A' && chartomove > 'F') {
			cout << "Input not in the range A-F. Try again." << endl;
		}
		locationtomove = (int('F')-int(chartomove));
		if (mankalaboard[locationtomove] == 0) {
			cout << "Sorry, no pieces exist at that location. Try another spot." << endl;
		}
	} while (chartomove < 'A' && chartomove > 'F');
	return(locationtomove);
}

void makemove(vector <int> &mankalaboard, const int &locationtomove, bool &anothermove)
{
	int destination = (locationtomove+1);
	for (int i = mankalaboard[locationtomove]; i > 0; i--) {
		mankalaboard[destination]++;
		destination++;
		if (destination = 14) {
			destination = 0;
		}
	}
	// now do they get another turn? should any other pieces be moved?
	if ((destination < 6) && (mankalaboard[destination] == 1)) {
		// FIXME!
	}
	if ((player == 1 && destination == 6) || (player == 2 && destination == 13)) {
		anothermove = true;
	}
	else {
		anothermove = false;
	}
}

bool checkgameover(const vector <int> &mankalaboard)
{
	return(false);
}

int main()
{
	// set variables
	const int startingstones = 3;
	vector <int> mankalaboard(14);
	char playagain;
	bool gameover, anothermove;
	int player;
	int locationtomove;
	// INSERT INSTRUCTIONS HERE!
	do {
		// initialization:
		for (int i = 0; i < mankalaboard.length(); i++) {
			mankalaboard[i] = startingstones;
		}
		mankalaboard[6] = 0;
		mankalaboard[13] = 0;
		player = 1;
		gameover = false;
		do {
			// implement multiple players!
			do {
				displayboard(mankalaboard);
				locationtomove = getinput(mankalaboard);
				makemove(mankalaboard, locationtomove, anothermove);
				if (anothermove == true) {
					cout << "You get to make another move." << endl;
			} while (anothermove == false);
			gameover = checkgameover(mankalaboard);
		} while (gameover == false);
		if (mankalaboard[6] > mankalaboard[13]) {
			cout << "Player 1 wins!";
		}
		else if (mankalaboard[13] > mankalaboard[6]) {
			cout << "Player 2 wins!";
		}
		else {
			cout << "Tie!";
		}
		cout << endl << endl;
		cout << "Play again (Y/N)? ";
		cin >> playagain;
	} while (playagain == 'Y' || playagain == 'y');
	cout << "Thanks for playing!" << endl;
	return(0);
}