Как написать крестики нолики по сети на C#?
Как написать крестики нолики по сети на C#? Нужно использовать WinForms и Broadcast. Чтоб на одном ПК можно было запустить два экземпляра программы и играть. Не совсем понимаю концепцию.
Ответы (2 шт):
Автор решения: Pavel Popov
→ Ссылка
Примерно такой алгоритм я вижу(это основные моменты) Вам нужно будет придумать свой протокол общения, я привожу и чисто для примера самый простой.
- Запускаем два приложения клиент А и Б
- Каждое приложения при запуске генерируют себе уникальное ИД и отправляют в сеть сообщение "Привет я готов играть" + свой уникальный ИД (сообщения должны повторяться с какой то периодичностью, что бы новые запустившиеся игроки то же вас видели в сети)
- Каждое запущенное приложение получает такое сообщение и выводит в список потенцильных партнеров для игры
- Человек с приложением А выбирает из списка партрера Б и жмет "Играть"
- В сеть отправляется сообщение приглашения "Привет я готов" + Ид партнера + свое ИД
- Опять же все получают это сообщение, но только тот чье ИД указано в приглашении откликается сообщением "Играем"+ Ид партнера + свое ИД (если в данный момент партнер Б уже выключился, от него просто не придет ответ и первый клиент А удалит его из списка)
- Игра началась, клиент А делает ход и шлет клиенту Б точку куда он поставил(например крест) + Ид партнера + свое ИД (опять же это сообщения видят все НО реагируют на него только партнер по своему ИД в теле сообщения!) И так далее....
Погуглите примеры работы с UDP, как тут
Автор решения: azaz zone
→ Ссылка
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp17
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Начать игру?(да/нет)");
string otvet = Console.ReadLine();
while (otvet == "да")
{
int oh = 1;
int[,] b = new int[3, 3];
Console.WriteLine("Вспомогательная таблица:");
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
b[u, i] = oh;
Console.Write(b[u, i] + " ");
oh++;
}
Console.WriteLine();
}
Console.WriteLine();
string[,] a = new string[3, 3];
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
a[u, i] = ".";
Console.Write(a[u, i] + " ");
}
Console.WriteLine();
}
while (otvet == "да")
{
int s = Convert.ToInt32(Console.ReadLine());
if (s == 1)
{
a[0, 0] = "x";
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
Console.Write(a[u, i] + " ");
}
Console.WriteLine();
}
}
if (s == 2)
{
a[0, 1] = "x";
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
Console.Write(a[u, i] + " ");
}
Console.WriteLine();
}
}
if (s == 3)
{
a[0, 2] = "x";
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
Console.Write(a[u, i] + " ");
}
Console.WriteLine();
}
}
if (s == 4)
{
a[1, 0] = "x";
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
Console.Write(a[u, i] + " ");
}
Console.WriteLine();
}
}
if (s == 5)
{
a[1, 1] = "x";
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
Console.Write(a[u, i] + " ");
}
Console.WriteLine();
}
}
if (s == 6)
{
a[1, 2] = "x";
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
Console.Write(a[u, i] + " ");
}
Console.WriteLine();
}
}
if (s == 7)
{
a[2, 0] = "x";
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
Console.Write(a[u, i] + " ");
}
Console.WriteLine();
}
}
if (s == 8)
{
a[2, 1] = "x";
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
Console.Write(a[u, i] + " ");
}
Console.WriteLine();
}
}
if (s == 9)
{
a[2, 2] = "x";
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
Console.Write(a[u, i] + " ");
}
Console.WriteLine();
}
}
if ("x" == a[0, 0] && "x" == a[1, 1] && "x" == a[2, 2] || "x" == a[0, 2] && "x" == a[1, 1] && "x" == a[2, 0] || "x" == a[0, 0] && "x" == a[1, 0] && "x" == a[2, 0] || "x" == a[0, 1] && "x" == a[1, 1] && "x" == a[2, 1] || "x" == a[0, 2] && "x" == a[1, 2] && "x" == a[2, 2] || "x" == a[0, 0] && "x" == a[0, 1] && "x" == a[0, 2] || "x" == a[1, 0] && "x" == a[1, 1] && "x" == a[1, 2] || "x" == a[2, 0] && "x" == a[2, 1] && "x" == a[2, 2])
{
Console.WriteLine("Крестик выиграл!!");
Console.WriteLine("Начать заново?(да/нет)");
otvet = Console.ReadLine();
oh = 1;
Console.WriteLine("Вспомогательная таблица:");
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
b[u, i] = oh;
Console.Write(b[u, i] + " ");
oh++;
}
Console.WriteLine();
}
Console.WriteLine();
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
a[u, i] = ".";
Console.Write(a[u, i] + " ");
}
Console.WriteLine();
}
}
if ("." != a[0, 0] && "." != a[0, 1] && "." != a[0, 2] && "." != a[1, 0] && "." != a[1, 1] && "." != a[1, 2] && "." != a[2, 0] && "." != a[2, 1] && "." != a[2, 2])
{
Console.WriteLine("Ничья!!!");
Console.WriteLine("Начать заново?(да/нет)");
otvet = Console.ReadLine();
oh = 1;
Console.WriteLine("Вспомогательная таблица:");
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
b[u, i] = oh;
Console.Write(b[u, i] + " ");
oh++;
}
Console.WriteLine();
}
Console.WriteLine();
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
a[u, i] = ".";
Console.Write(a[u, i] + " ");
}
Console.WriteLine();
}
}
Console.WriteLine();
int ss = Convert.ToInt32(Console.ReadLine());
if (ss == 1)
{
a[0, 0] = "o";
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
Console.Write(a[u, i] + " ");
}
Console.WriteLine();
}
}
if (ss == 2)
{
a[0, 1] = "o";
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
Console.Write(a[u, i] + " ");
}
Console.WriteLine();
}
}
if (ss == 3)
{
a[0, 2] = "o";
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
Console.Write(a[u, i] + " ");
}
Console.WriteLine();
}
}
if (ss == 4)
{
a[1, 0] = "o";
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
Console.Write(a[u, i] + " ");
}
Console.WriteLine();
}
}
if (ss == 5)
{
a[1, 1] = "o";
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
Console.Write(a[u, i] + " ");
}
Console.WriteLine();
}
}
if (ss == 6)
{
a[1, 2] = "o";
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
Console.Write(a[u, i] + " ");
}
Console.WriteLine();
}
}
if (ss == 7)
{
a[2, 0] = "o";
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
Console.Write(a[u, i] + " ");
}
Console.WriteLine();
}
}
if (ss == 8)
{
a[2, 1] = "o";
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
Console.Write(a[u, i] + " ");
}
Console.WriteLine();
}
}
if (ss == 9)
{
a[2, 2] = "o";
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
Console.Write(a[u, i] + " ");
}
Console.WriteLine();
}
}
if ("o" == a[0, 0] && "o" == a[1, 1] && "o" == a[2, 2] || "o" == a[0, 2] && "o" == a[1, 1] && "o" == a[2, 0] || "o" == a[0, 0] && "o" == a[1, 0] && "o" == a[2, 0] || "o" == a[0, 1] && "o" == a[1, 1] && "o" == a[2, 1] || "o" == a[0, 2] && "o" == a[1, 2] && "o" == a[2, 2] || "o" == a[0, 0] && "o" == a[0, 1] && "o" == a[0, 2] || "o" == a[1, 0] && "o" == a[1, 1] && "o" == a[1, 2] || "o" == a[2, 0] && "o" == a[2, 1] && "o" == a[2, 2])
{
Console.WriteLine("Нолик выиграл!!");
Console.WriteLine("Начать заново?(да/нет)");
otvet = Console.ReadLine();
oh = 1;
Console.WriteLine("Вспомогательная таблица:");
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
b[u, i] = oh;
Console.Write(b[u, i] + " ");
oh++;
}
Console.WriteLine();
}
Console.WriteLine();
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
a[u, i] = ".";
Console.Write(a[u, i] + " ");
}
Console.WriteLine();
}
}
if (ss == s)
{
Console.WriteLine("Вы жульничиете!");
Console.WriteLine("Начать заново?(да/нет)");
otvet = Console.ReadLine();
oh = 1;
Console.WriteLine("Вспомогательная таблица:");
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
b[u, i] = oh;
Console.Write(b[u, i] + " ");
oh++;
}
Console.WriteLine();
}
Console.WriteLine();
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
a[u, i] = ".";
Console.Write(a[u, i] + " ");
}
Console.WriteLine();
}
}
if ("." != a[0, 0] && "." != a[0, 1] && "." != a[0, 2] && "." != a[1, 0] && "." != a[1, 1] && "." != a[1, 2] && "." != a[2, 0] && "." != a[2, 1] && "." != a[2, 2])
{
Console.WriteLine("Ничья!!!");
Console.WriteLine("Начать заново?(да/нет)");
otvet = Console.ReadLine();
oh = 1;
Console.WriteLine("Вспомогательная таблица:");
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
b[u, i] = oh;
Console.Write(b[u, i] + " ");
oh++;
}
Console.WriteLine();
}
Console.WriteLine();
for (int u = 0; u < 3; u++)
{
for (int i = 0; i < 3; i++)
{
a[u, i] = ".";
Console.Write(a[u, i] + " ");
}
Console.WriteLine();
}
}
}
}
}
}
}