Public feed
#532659
/*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";}