тоже релиз
тоже релиз
Саня, напиши больше чем 3х3 А то он мне постоянно проигрывает Логика у него помоему железно пробита
Либо ничья!
"Опасайтесь людей верующих, ибо у них есть боги, которые всё им прощают. Неверующих тоже, ибо у них нет бога, который бы им хоть что-то запретил!" (с)
не для того делалась чтоб выигрывать кто-то просил года два назад..Сообщение от Radist Petrov
Прикольная игруха!
дык я уже аналоги нашел С безграичным полемСообщение от shalex
"Опасайтесь людей верующих, ибо у них есть боги, которые всё им прощают. Неверующих тоже, ибо у них нет бога, который бы им хоть что-то запретил!" (с)
идейка пришла, может замутить турнир между программами по крестикам-ноликам (не 3х3)? только как две программы будут биться на одном поле, пока слабо представляю..Сообщение от Radist Petrov
Надо реализовать протокол обмена, а зафигачить турнир по сети ;)
тоже тема, а то всё контра да контраСообщение от Qwadrat
Нужен выделенный сервер, который будет посредником между игроками/программами и будет вести статистику, ладдер, регистрацию и прочее. Протокол нужно четко задекларировать, чтобы программист мог написать свою программу, которая будет играть и чтобы живой игрок могу сыграть с программами/игроками на выбор, используя понравившийся ему клиент.
дело за малым: реализовать это.Сообщение от Qwadrat
у кого-нить есть опыт работы с клиент-серверными приложениями?
или хотя бы небольшой пример как делать это правильно.. я бы взялся тогда. И как выглядит задекларированный протокол?
мыслишь верно но не для этой ситуации..Сообщение от Qwadrat
писать сервак со статистикой-регистрацией и прочим прочим для крестиков ноликов?
имхо это просто никому не нужно, мне кажется не такого размаха эта игра.. гораздо проще можно устроить, взять исходную прогу и туда добавить функцию и клиента и сервера, чтоб игрок мог сам становиться серваком либо просто коннектиться к кому-либо, ну и чат туда добавить, не более..
Сеф, ты не понял концепт ))
Вся идея в фане, нужно устроить турнир между программами )
А возможность играть живым игрокам чисто опциональна ))
хе, ну если устраивать турнир между программками крестиками ноликами то впринципе да.. это уже будет правда в большей части кодерское соревнование, чья прога лучше, это впринципе довольно интересно.. можно сделать посложнее и замутить по шахматам, например, вот там действительно есть над чем подумать, особенно если делать программу, способную к самообучениюСообщение от Qwadrat
По сути задекларированный протокол адаптировать к шахматам вообще ничего не стоит.
куда-то не туда вас понесло.. искусственный интелект эт конечно интересно, но давайте вернемся к нашим баранам то есть к крестикам-ноликам - это тоже интересно и познавательно (для меня по крайней мере), а потом может, если получится, можно и посложнее что-нибудь замутитьСообщение от Sef
Искуственный интеллект, реализация его - это задача программиста, пишущего клиент в соответствии с задекларированными требованиями. Первая задача - реализовать серверную часть.
Первая задача - протокол !Сообщение от Qwadrat
Возникло три вопроса:
1. Если битва алгоритмов, то откуда гарантия, что на другом конце провода будет не человек ?
2. имхо крестики нолики - это просто не та игра, где можно состязаться в AI ...
3. турнир предполагается 1х1 ? или AxB или вообще каждый сам за себя ?
хорошо давай,
какой вообще общий план взаимодействия сервера с клиентом, то есть кто кому что и зачем отправляет и т.п.? и будет ли возможность играть нескольким парам одновременно?
Конечно же первая задача - протокол.
1. Игры 1х1.
2. Протокол можно будет адаптировать под любую другую полевую игру 1х1.
3. Гарантии никакой не надо пока.
С чего начинать:
1. Назначить порт Tcp.
2. Определить структуру пакета хендшейка.
3. Пакеты протокола пронумеровать и задекларировать. Пример навскидку:
- пакет х0000 логин, длина пакета 32 байта
- х0001 пароль, 32 байта
- х0002 режим, сколько-то байт
- и т.д.
4. Сервер должен анализирвать принимаемые пакеты, и есс-но контролировать, выявлять ошибки, эксплоиты в соответствии с правилами игры.
Это просто мысли, с чего начать....
Вот примерчик работы с сокетами, если кому интересно ;)
client.c
server.cКод:#include <sys/types.h> #include <sys/socket.h> #include <stdio.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> int main() { int sockfd; int len; struct sockaddr_in address; int result; char ch = 'A'; sockfd = socket(AF_INET, SOCK_STREAM, 0); address.sin_family = AF_INET; address.sin_addr.s_addr = inet_addr("127.0.0.1"); address.sin_port = 9000; len = sizeof(address); result = connect(sockfd, (struct sockaddr *)&address, len); if(result == -1) { perror("Error: client"); exit(1); } write(sockfd, &ch, 1); read(sockfd, &ch, 1); printf("Answer from server = %c\n", ch); close(sockfd); exit(0); }
Код:#include <sys/types.h> #include <sys/socket.h> #include <stdio.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> int main() { int server_sockfd, client_sockfd; int server_len, client_len; struct sockaddr_in server_address; struct sockaddr_in client_address; server_sockfd = socket(AF_INET, SOCK_STREAM, 0); server_address.sin_family = AF_INET; server_address.sin_addr.s_addr = inet_addr("127.0.0.1"); server_address.sin_port = 9000; server_len = sizeof(server_address); bind(server_sockfd, (struct sockaddr *)&server_address, server_len); listen(server_sockfd, 5); while(1) { char ch; printf("server waiting\n"); client_len = sizeof(client_address); client_sockfd = accept(server_sockfd, (struct sockaddr *)&client_address, &client_len); read(client_sockfd, &ch, 1); ch++; write(client_sockfd, &ch, 1); close(client_sockfd); } }
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)