הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

חזור   הוסטס - פורום אחסון האתרים הגדול בישראל > עיצוב גראפי, תכנות על כל שפותיו וקידום ושיווק אתרים > פורום תיכנות

   
|!|

 
 
כלים לאשכול תצורת הצגה
Prev הודעה קודמת   הודעה הבאה Next
ישן 17-05-15, 17:29   # 1
asaf1
חבר חדש
 
מיני פרופיל
תאריך הצטרפות: May 2015
הודעות: 2

asaf1 לא מחובר  

מבקש עזרה מכולם

עשיתי משחק איקס עיגול של שחקן נגד שחקן אך ביקשו ממני משחק של שחקן נגד מחשב.
המשחק בconsole.
זה הפתרון שלי:
static void SetBoard(char[,] board) //מאתחל לוח
{
string strBoard;
int intBoard;
for (int i = 0; i < board.GetLength(0); i++)
{
for (int z = 0; z < board.GetLength(1); z++)
{
intBoard = z + 1;
strBoard = Convert.ToString(intBoard);
board[z, i] = Convert.ToChar(strBoard);
//Console.WriteLine(board[z, i]); בדיקת איתחול
}
}
}
static void PrintBoard(char[,] board)//מדפיס לוח
{
for (int i = 0; i < board.GetLength(0); i++)
{
Console.Write("\n ");
for (int k = 0; k < board.GetLength(1); k++)
{
Console.Write("{0} ", board[k, i]);
}
}
Console.WriteLine();
}
static bool isWinner(char[,] board, char userType) //בודק אם יש מנצח
{
if (board[0, 0] == userType && board[1, 0] == userType && board[2, 0] == userType)
{
return true;
}
else if (board[0, 1] == userType && board[1, 1] == userType && board[2, 1] == userType)
{
return true;
}
else if (board[0, 2] == userType && board[1, 2] == userType && board[2, 2] == userType)
{
return true;
}
else if (board[0, 0] == userType && board[1, 1] == userType && board[2, 2] == userType)
{
return true;
}
else if (board[0, 2] == userType && board[1, 1] == userType && board[2, 0] == userType)
{
return true;
}
else if (board[0, 0] == userType && board[0, 1] == userType && board[0, 2] == userType)
{
return true;
}
else if (board[1, 0] == userType && board[1, 1] == userType && board[1, 2] == userType)
{
return true;
}
else if (board[2, 0] == userType && board[2, 1] == userType && board[2, 2] == userType)
{
return true;
}
else
{
return false;
}
}
static bool isTie(char[,] board) //בודק אם המשחק הגיע למצב של תיקו
{
foreach (char currentChar in board)
{
if (currentChar != 'X' && currentChar != 'O')
{
return false;
}
}
return true;
}
static void UpdateResult(char[,] board, bool isWinner, char userType, bool isTie, ref int scoreX, ref int scoreO, ref int gameNum, ref int ties) //מעדכן תוצאה
{
if (isWinner)
{
if (userType == 'X')
{
scoreX++;
}
if (userType == 'O')
{
scoreO++;
}
gameNum++;
}
if (isTie)
{
ties++;
gameNum++;
}
}
static void Main(string[] args)
{
bool validSelection = false;
char userType = '.';
bool userIsX = true;
int scoreX = 0;
int scoreO = 0;
int ties = 0;
int gameNum = 1;
char[,] board = new char[3, 3]; //הגדרת מערך לוח
while (true)
{
SetBoard(board); //קריאה לפונקציית אתחול לוח
if (gameNum == 1)
{
Console.BackgroundColor = ConsoleColor.Cyan;
Console.ForegroundColor = ConsoleColor.DarkCyan;
UpdateResult(board, isWinner(board, userType), userType, isTie(board), ref scoreX, ref scoreO, ref gameNum, ref ties); // מעדכן תוצאה
Console.WriteLine("\n GAME " + gameNum + ":\n Player X: " + scoreX + " | Player O: " + scoreO + " | Ties: " + ties + "\n"); //מעדכן תוצאה
Console.WriteLine(" BOARD");
PrintBoard(board); //קריאה לפונקציה מדפיסת לוח
Console.WriteLine("\n\n Welcome to Tic Tac Toe !\n\nThe rules are simple: Two players decide which is X and which is O, please note that X always goes first. In order to win, one must have three in a row, \nhorizontally, vertically or diagonally. If all nine spots are filled, then it \nis a tie, and you will be given the opportunity to play again. Let's begin!"); //הסברת המשחק
}
else
{
Console.WriteLine(" BOARD");
PrintBoard(board); //קריאה לפונקציה מדפיסת לוח
}
while (!isWinner(board, userType) && !isTie(board))
{
Console.WriteLine();
if (userIsX) //מגדיר שחקן X
{
Console.BackgroundColor = ConsoleColor.White;
Console.ForegroundColor = ConsoleColor.DarkMagenta;
Console.WriteLine("Player: X");
userType = 'X';
}
else //מגדיר שחקן O
{
Console.BackgroundColor = ConsoleColor.DarkMagenta;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("Player: O");
userType = 'O';

}
validSelection = false;
while (!validSelection) //כל עוד לא התבצעה בחירה חוקית
{
Console.WriteLine("Select row, then press 'enter' (return), then select column."); //הסבר על בחירת מיקום
int row = int.Parse(Console.ReadLine()); //משתמש בוחר מיקום
int column = int.Parse(Console.ReadLine());
if (row > 3 || row < 1 || column > 3 || column < 1) //בודק שהמספר בטווח
{
Console.WriteLine("Invalid row/column! There are only 3 rows and 3 columns on the board!\nPlease choose again.\n");
}
else if (board[column - 1, row - 1] == 'X' || board[column - 1, row - 1] == 'O') //בודק אם הבחירה חוקית
{
Console.WriteLine("You cannot overwrite you/your friend! Please choose again.");
}
else //מתקיים אם הבחירה תקינה
{
board[column - 1, row - 1] = userType;
validSelection = true;
}
}
userIsX = !userIsX;
Console.BackgroundColor = ConsoleColor.Magenta;
Console.ForegroundColor = ConsoleColor.Blue;
PrintBoard(board);
if (isWinner(board, userType)) //בודק אם הפונקציה שבודקת אם יש מנצח מחזירה true או false
{
Console.WriteLine("Congratulations! The winner is " + userType + "\n");
}
if (isTie(board)) //קריאה לפונקציה בודקת תיקו
{
Console.WriteLine("What a though game! The game resulted in a TIE!\n");
}
}
Console.BackgroundColor = ConsoleColor.DarkCyan;
Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine("Would you like to play again?\nPress 'enter' to play again, type 'n' then enter to quit."); //מאפשר יציאה מהתוכנית
string restart = Console.ReadLine();
if (restart == "n" || restart == "N")
{
break;
}
UpdateResult(board, isWinner(board, userType), userType, isTie(board), ref scoreX, ref scoreO, ref gameNum, ref ties); //מעדכן תוצאה
Console.WriteLine("\n GAME " + gameNum + ":\n Player X: " + scoreX + " | Player O: " + scoreO + " | Ties: " + ties + "\n"); //מדפיס תוצאה
}
}

אני מבקש בכל לשון של בקשה שמישהו ישנה את התוכנית שלי לכך שזה יהיה משחק מול מחשב.
תודה לעוזרים!
  Reply With Quote
 

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


כל הזמנים הם GMT +2. הזמן כעת הוא 18:10.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ