Public feed #532659

Something

public cpp v1 · immutable
Raw Edit
·published 2007-06-03 06:26 UTC
rendered paste body
/*White:Pawn = 1Knight = 2Bishop = 3Castle = 4Queen = 5King = 6Black:Pawn = 7Knight = 8Bishop = 9Castle = 10Queen = 11King = 12*/#define DEBUG// ^^ This is just to help me when the !#@$ hits the fan ;)#include <iostream>void printScreen();int canTake();int checkMoveIsValid(int, int, int, int, int, int);int columnOld, rowOld, columnNew, rowNew;int check = 0;int pieceToMove;int pieceToTake;int isValidTake;int isValid;int kingHasMoved;int board[8][8] = { {10,8,9,11,12,9,8,10},{7,7,7,7,7,7,7,7},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{1,1,1,1,1,1,1,1},{4,2,3,5,6,3,2,4},};// unsigned short int * pPointer = new unsigned short int; <--- implement the board on the free store sometime//Just making the board (2D array or something, remember that it's backwards and possibly upside down :Sint main() {printScreen();int check = 0;while (check = 1){	std::cout << "row\n";	std::cin >> rowOld;	rowOld = rowOld - 1;	std::cout << "column\n";	std::cin >> columnOld;	columnOld = columnOld - 1;	std::cout << "new row\n";	std::cin >> rowNew;	rowNew = rowNew - 1;	std::cout << "new column\n";	std::cin >> columnNew;	columnNew = columnNew - 1;	std::cout << "Piece is: " << board[rowOld][columnOld] << "\n";	pieceToMove = board[rowOld][columnOld];	pieceToTake = board[rowNew][columnNew];	isValid = checkMoveIsValid(columnOld, rowOld, columnNew, rowNew, pieceToMove, pieceToTake);	std::cout << "\nisValid = " << isValid;	isValidTake = canTake();	std::cout << "\nisValid = " << isValidTake;		if ((isValid = 1) && (isValidTake = 1))		{			board[rowOld][columnOld] = 0;			board[rowNew][columnNew] = pieceToMove;		}	else		{			std::cout << "SCREW YOU HAX0R";		}	printScreen();	}return 0;}/*Okay, notes to myself, maybe a little weird...So, find an algorithm that'll let us work out where a piece can or cannot move!Hmm...Pawn:Cannot be > 2!If on row 1 or 8, we become king!(Don't worry about which colour, it doesn't matter, because pawns can never move backwards!)If on row 2 or 7, may move 2! (Same rule as above)Enpassant... interesting...Knight:May only move two columns, one row, or one column, two rows!Bishop:Columns must = Rows!(Yes, I stole this from Queens, these comments aren't in chronological order (Neither is my mind))Castle:Again with the theiving...if Columns > 1, Row = 0if Row > 1, Columns = 0Queen:Hmm... hey!Idea!Either;1. All Columns2. All Rows3. Equal Columns and rows!HAZZAH!King:Same rules as Queen, but moves capped to 1!Gotta work out check :S*/// RULESint checkMoveIsValid(int columnOld, int rowOld, int columnNew, int rowNew, int pieceToMove, int pieceToTake){int distanceMovedColumns = columnNew - columnOld;int distanceMovedRows = rowNew - rowOld;std::cout << distanceMovedRows << distanceMovedColumns;	if ((distanceMovedColumns = 0) && (distanceMovedRows = 0))		return 0;	#ifdef DEBUG	if (pieceToMove > 12 || pieceToMove < 1)		//This should never happen!	#endif	if (pieceToMove = 1 || 7) // Pawn	{		if (distanceMovedRows > 2) // No more than 2 jumps, implement more later			return 0;		if ((distanceMovedColumns > 1)  && (distanceMovedRows < 1))			return 0;	}		if (pieceToMove = 2 || 8) // Knight	{		if ((distanceMovedColumns = 2) && (distanceMovedRows = 1))			return 1;		if ((distanceMovedColumns = 1) && (distanceMovedRows = 2))			return 1;	}				if (pieceToMove = 3 || 9) // Bishop	{		if ((distanceMovedColumns = distanceMovedRows))			return 1;		if (distanceMovedRows = (distanceMovedColumns * -1))  //((columnOld - columnNew) = (rowOld - rowNew)) //|| columnOld - columnNew = ((rowOld - rowNew) * -1) || ((columnOld - columnNew) * -1) = rowOld - rowNew)			return 1;	}	if (pieceToMove = 4 || 10) // Castle	{		if ((distanceMovedColumns > 0) && (distanceMovedRows = 0))			return 1;		if ((distanceMovedColumns = 0) && (distanceMovedRows > 0))			return 1;	}			if (pieceToMove = 5 || 11) // Queen	{		if ((distanceMovedColumns > 0) && (distanceMovedRows = 0))			return 1;		if ((distanceMovedColumns = 0) && (distanceMovedRows > 0))			return 1;		return 1;	}			if (pieceToMove = 6 || 12) // King	{		kingHasMoved = 1;		return 1;	}			return 0;}int canTake(){if (pieceToTake = 0)	return 1;if ((pieceToTake != 0) && (pieceToTake != 6 || 12)) // Make sure we aren't taking a king here!	{		if ((pieceToMove < 7) && (pieceToTake > 6)) // check black is taking white and white is taking black			return 1;		if ((pieceToTake < 7) && (pieceToMove > 6))			return 1;	}return 0;}void printScreen(){for (int boardNumX = 7; boardNumX > -1; boardNumX--)	{	std::cout << "|" << "\n";	for (int boardNumY = 0; boardNumY < 8; boardNumY++)		{		std::cout << "|" << board[boardNumX][boardNumY];		}	}	std::cout << "|";std::cout << "\n";}