Untitled
unknown
plain_text
a year ago
11 kB
3
Indexable
Never
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FIXALE { internal class Board { public int selectedPieceX; public int selectedPieceY; private int[][,] aroundPosition = new int[3][,] { new int[, ] { {0, 0}, {0,0}, {0, 0} }, new int[, ] { {0, 0}, {0,0}, {0, 0} }, new int[, ] { {0, 0}, {0,0}, {0, 0} } }; char[,] mainBoard = { { ' ',' ',' ',' ',' ','0','-','-','0','-','-','0',' ',' ',' ',' ',' '}, { ' ',' ',' ',' ',' ',' ','\\',' ','|',' ','/',' ',' ',' ',' ',' ',' '}, { ' ',' ',' ',' ',' ',' ','0','-','0','-','0',' ',' ',' ',' ',' ',' '}, { ' ',' ',' ',' ',' ',' ',' ','\\','|','/',' ',' ',' ',' ',' ',' ',' '}, { 'E',' ',' ',' ','0','-','0','-','0','-','0','-','0',' ',' ',' ','E',}, { '|','\\',' ',' ','|','\\','|','/','|','\\','|','/','|',' ',' ','/','|'}, { '|',' ','E',' ','0','-','0','-','0','-','0','-','0',' ','E',' ','|',}, { '|',' ','|','\\','|','/','|','\\','|','/','|','\\','|','/','|',' ','|'}, { 'E','-','E','-','E','-','E','-','E','-','E','-','E','-','E','-','E',}, { '|',' ','|','/','|','\\','|','/','|','\\','|','/','|','\\','|',' ','|',}, { '|',' ','E',' ','*','-','*','-','*','-','*','-','*',' ','E',' ','|',}, { '|','/',' ',' ','|','/','|','\\','|','/','|','\\','|',' ',' ','\\','|'}, { 'E',' ',' ',' ','*','-','*','-','*','-','*','-','*',' ',' ',' ','E',}, { ' ',' ',' ',' ',' ',' ',' ','/','|','\\',' ',' ',' ',' ',' ',' ',' ',}, { ' ',' ',' ',' ',' ',' ','*','-','*','-','*',' ',' ',' ',' ',' ',' ',}, { ' ',' ',' ',' ',' ',' ','/',' ','|',' ','\\',' ',' ',' ',' ',' ',' ',}, { ' ',' ',' ',' ',' ','*','-','-','*','-','-','*',' ',' ',' ',' ',' ',}, }; public bool PlacePiece(int row, int col, char piece) { if (row >= 0 && row < mainBoard.GetLength(0) && col >= 0 && col < mainBoard.GetLength(1)) { SelectPiece(row, col, piece); // เรียก SelectPiece เพื่อเปลี่ยนค่า selectedPieceX และ selectedPieceY bool canPlace = CheckPath(row, col); if (mainBoard[row, col] == 'E' && canPlace == true) { mainBoard[row, col] = piece; ClearPiece(selectedPieceX, selectedPieceY); return true; // วางได้ } else { Console.WriteLine("This position can't place."); return false; } } else { Console.WriteLine("ERROR"); return false; // นอกพื้นที่ } } public bool CheckPath(int targetRow, int targetCol) { int startX = -1; int startY = -1; bool result = false; for (int i = 0; i <= 2; i++) { for (int j = 0; j <= 2; j++) { if (aroundPosition[i][j, 0] == targetRow && (aroundPosition[i][j, 1] == targetCol))//เช็คว่าตำแหน่งที่เลือกเดินได้หรือไม่ { if (mainBoard[selectedPieceX + startX, selectedPieceY + startY] == '\\' || mainBoard[selectedPieceX + startX, selectedPieceY + startY] == '|' || mainBoard[selectedPieceX + startX, selectedPieceY + startY] == '/' || mainBoard[selectedPieceX + startX, selectedPieceY + startY] == '-' ) { result = true; } } else { startY += 1; } } startX += 1; } return result; } //public void ListAllArray() //{ // for (int i = 0; i <= 2; i++) // { // for (int j = 0; j <= 2; j++) // { // Console.WriteLine("X,Y"); // Console.WriteLine(aroundPosition[i][j, 0]); // Console.WriteLine(aroundPosition[i][j, 1]); // } // } //} public void ClearPiece(int row, int col) { if (row >= 0 && row < mainBoard.GetLength(0) && col >= 0 && col < mainBoard.GetLength(1)) { mainBoard[row, col] = 'E'; } else { Console.WriteLine("ERROR"); } } public void SelectPiece(int row, int col, char piece) { if (row >= 0 && row < mainBoard.GetLength(0) && col >= 0 && col < mainBoard.GetLength(1)) { if (mainBoard[row, col] == piece) { selectedPieceY = col; selectedPieceX = row; int startX = -2; int startY = -2; for (int i = 0; i <= 2; i++) // { startY = -2; for (int j = 0; j <= 2; j++) { aroundPosition[i][j, 0] = selectedPieceX + startX; aroundPosition[i][j, 1] = selectedPieceY + startY; startY += 2; } startX += 2; } } else { Console.WriteLine("This is not your piece."); } } else { Console.WriteLine("ERROR"); } } //public bool Opponent() //{ // int targetRow = selectedPieceX + 1; // int targetCol = selectedPieceY; // if (targetRow < mainBoard.GetLength(0) - 2) // { // char target = mainBoard[targetRow, targetCol]; // char twoRowsDown = mainBoard[targetRow + 2, targetCol]; // if (target == '*' && twoRowsDown == 'E') // { // mainBoard[targetRow, targetCol] = 'E'; // กิน* // mainBoard[targetRow + 2, targetCol] = '0'; // ให้ * หายไปและเปลี่ยนเป็น 0 // selectedPieceX = targetRow + 2; // return true; // } // } // if (targetRow < mainBoard.GetLength(0) - 2) // { // char target = mainBoard[targetRow, targetCol]; // char twoRowsDown = mainBoard[targetRow + 2, targetCol]; // if (target == '0' && twoRowsDown == 'E') // { // mainBoard[targetRow, targetCol] = 'E'; // กิน 0 // mainBoard[targetRow + 2, targetCol] = '0'; // ให้ 0 หายไปและเปลี่ยนเป็น * // selectedPieceX = targetRow + 2; // return true; // } // } // return false; // ไม่สามารถทำได้ //} public bool Opponent() { int targetRow = selectedPieceX + 2; int targetCol = selectedPieceY; // ตรวจสอบว่าหมากที่ถูกเลือกเป็น '*' และตำแหน่งเป้าหมากว่าช่องว่าง ('E') if (targetRow < mainBoard.GetLength(0) && mainBoard[selectedPieceX, selectedPieceY] == '*' && mainBoard[targetRow, targetCol] == 'E') { // กินหมากตรงข้าม mainBoard[selectedPieceX, selectedPieceY] = 'E'; // หมากปัจจุบันกลายเป็นช่องว่าง mainBoard[targetRow, targetCol] = '0'; // หมากตรงข้ามกลายเป็น '0' selectedPieceX = targetRow; selectedPieceY = targetCol; return true; // ทำการกินสำเร็จ } // ตรวจสอบว่าหมากที่ถูกเลือกเป็น '0' และตำแหน่งเป้าหมากว่าช่องว่าง ('E') if (targetRow < mainBoard.GetLength(0) && mainBoard[selectedPieceX, selectedPieceY] == '0' && mainBoard[targetRow, targetCol] == 'E') { // กินหมากตรงข้าม mainBoard[selectedPieceX, selectedPieceY] = 'E'; mainBoard[targetRow, targetCol] = '*'; // หมากตรงข้ามกลายเป็น '*' selectedPieceX = targetRow; selectedPieceY = targetCol; return true; // ทำการกินสำเร็จ } return false; } public void PrintBoard() { for (int row = 0; row < mainBoard.GetLength(0); row++) { for (int col = 0; col < mainBoard.GetLength(1); col++) { char currentChar = mainBoard[row, col]; if (currentChar == '*') { Console.ForegroundColor = ConsoleColor.Red; } else if (currentChar == '0') { Console.ForegroundColor = ConsoleColor.Blue; } else { Console.ResetColor(); } Console.Write(mainBoard[row, col]); Console.Write(" "); } Console.WriteLine(); } } } }