Модераторы: Poseidon, Rodman
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [си]Самые простые крестики-нолики, написать игру 
:(
    Опции темы
maks1289
Дата 17.4.2012, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 17.4.2012

Репутация: нет
Всего: нет



Задание по непрофильному предмету...


Игра "крестики-нолики" должна соответствовать 5 пунктам:
1.Должна быть написана языке си без использования элементов си++ 
2.С интерфейсом командной строки без использования графических библиотек (по сути один фаил с разрешением .с)
3.В самой игре компьютер не совершает ходов, ходы совершают два игрока по очереди
4.Размер поля 3x3
5.Подобные комментарии к каждому этапу
6.При написании можно пользоваться только: конструкциями выбора,циклами,массивами,структурам и,указателями и функциями.Ну и библиотеки понятно самые простые...

В целом игра должна быть написана в самом простом виде...

Думаю опытному человеку на 10 мин...
PM MAIL   Вверх
disputant
Дата 17.4.2012, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 28.11.2011

Репутация: нет
Всего: 3



Цитата(maks1289 @ 17.4.2012,  14:17)
Задание по непрофильному предмету...
Игра "крестики-нолики" должна соответствовать 5 пунктам:
Думаю опытному человеку на 10 мин...

Вообще-то была программка для крестиков-ноликов на калькуляторе Б3-34... По-моему, в книге Дьяконова. Или Трохименко и Любича (кажется, так...)

Это сообщение отредактировал(а) disputant - 17.4.2012, 14:55
PM MAIL   Вверх
borisbn
Дата 17.4.2012, 15:02 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4873
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 11
Всего: 135



Цитата(maks1289 @  17.4.2012,  14:17 Найти цитируемый пост)
 должна соответствовать 5 пунктам:
1...
2...
...
6.          <----- ???



Это сообщение отредактировал(а) borisbn - 17.4.2012, 16:05


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
bsa
Дата 17.4.2012, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9184
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 1
Всего: 196




M
bsa
Для домашних заданий, курсовых и т.п. существует \"Центр Помощи\".




Тема перенесена. 
PM   Вверх
t_gran
Дата 18.4.2012, 06:24 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 621
Регистрация: 13.11.2007
Где: г.Усть-Илимск

Репутация: 33
Всего: 37



Цитата

Думаю опытному человеку на 10 мин... 

Потратил минут 30. Видать ещё не опытный  smile 

Код

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdbool.h>

//---------------------------------------------//
// Функция приобразует значение символа в индекс массива
unsigned CharToPos(char ch)
{
   static const int COffs = 49;

   return (ch - COffs);
}
//---------------------------------------------//
// Вывод на экран игрового поля
void PrintField(const char* arr)
{
   static const char CField[] = " 1 | 2 | 3 \n"
                                "---+---+---\n"
                                " 4 | 5 | 6 \n"
                                "---+---+---\n"
                                " 7 | 8 | 9 \n";

   const char* ch = CField;

   while (*ch)
   {
      if (isdigit(*ch) && arr[CharToPos(*ch)])
      {
         printf("%c", arr[CharToPos(*ch)]);
      }
      else
      {
         printf("%c", *ch);
      }
      ch++;
   }
}
//---------------------------------------------//
// Фиксация хода игрока
bool SetValue(char* arr, char val, unsigned pos)
{
   bool isExecute = false;

   if (arr[pos] == 0)
   {
      arr[pos] = val;

      isExecute = true;
   }

   return isExecute;
}
//---------------------------------------------//
// Проверка на выигрыш одного из игроков
// Не стал заморачиваться и выполнил проверку всех вариантов статически
bool CheckWin(const char* arr)
{
   return (arr[0] && (arr[0] == arr[1]) && (arr[1] == arr[2])) ||
          (arr[3] && (arr[3] == arr[4]) && (arr[4] == arr[5])) ||
          (arr[6] && (arr[6] == arr[7]) && (arr[7] == arr[8])) ||
          (arr[0] && (arr[0] == arr[3]) && (arr[3] == arr[6])) ||
          (arr[1] && (arr[1] == arr[4]) && (arr[4] == arr[7])) ||
          (arr[2] && (arr[2] == arr[5]) && (arr[5] == arr[8])) ||
          (arr[0] && (arr[0] == arr[4]) && (arr[4] == arr[8])) ||
          (arr[2] && (arr[2] == arr[4]) && (arr[4] == arr[6]));
}
//---------------------------------------------//

int main()
{
   static const char CVal[] = {'x', 'o'};
   char arr[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
   unsigned notUsed = sizeof(arr) / sizeof(*arr);
   
   unsigned player = 0;
   char ch;

   bool isPlay = true;

   PrintField(arr);

   while (isPlay)
   {
      printf("[%c]: ", CVal[player]);
      scanf("%c", &ch);
      fflush(stdin);
      printf("\n");

      if (isdigit(ch) && SetValue(arr, CVal[player], CharToPos(ch)))
      {
         notUsed--;
         player = !player;
      }

      PrintField(arr);

      if (CheckWin(arr))
      {
         isPlay = false;
         printf("Player '%c' is win!\n", CVal[!player]);
      }
      else if (notUsed == 0)
      {
         isPlay = false;
         printf("Game over\n");
      }
   }

   return 0;
}

user posted image

Присоединённый файл ( Кол-во скачиваний: 19 )
Присоединённый файл  archive.7z 2,18 Kb


--------------------
Я знаю, что ничего не знаю© Сократ
user posted image
PM MAIL WWW   Вверх
maks1289
Дата 18.4.2012, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 17.4.2012

Репутация: нет
Всего: нет



огромное спасибо!
PM MAIL   Вверх
ssvtg
Дата 29.5.2012, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 29.5.2012

Репутация: нет
Всего: нет



Задание на курсовой проект
Необходимо написать компьютерную игру.
В общем случае, игра должна быть пошаговой. Это означает, что компьютер не производит никаких действий со стороны противника, пока происходит ожидание хода игрока. Если студент реализует интерактивную игру, это оценивается дополнительно.
Возможность использования компьютерной графики не обязательно, вполне подойдёт текстовый режим. Можно использовать дополнительные библиотеки для работы в графическом режиме, например, Blitz3D, OpenGL и другие.
На оценку «отлично» необходимо запрограммировать логику компьютера в качестве противника. Должна быть реализована функция оценки текущей позиции (ситуации) и применяться алгоритм альфа-бета отсечения для поиска наилучших ходов.
Программа должна вести счёт и записывать его в таблицу результатов.
Содержание пояснительной записки
Пояснительная записка должна быть оформлена согласно методическим указаниям «Документирование программного обеспечения: методические указания к выполнению курсового проекта/СПб ГУАП; сост. Н. Н. Бровин, Л.В. Плющева. - СПб.: РИО ГУАП, 2000. - 30 с.».
Варианты заданий
Студент выбирает вариант задания самостоятельно и согласовывает его с преподавателем.
1. Карточные игры: покер, 1000, дурак и другие.
2. Игры на бумаге: морской бой, точки, крестики-нолики (5x5 и больше) и другие.
3. Настольные игры: шашки, шахматы, калах, кости и другие.
PM MAIL   Вверх
itrobo
Дата 30.12.2018, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 30.12.2018

Репутация: нет
Всего: нет



самое интересное и сложное, это написать игру  с компьютером . здесь алгоритм хода компьютера такой  
1. сначала проверяем  можно ли выиграть 
2. если нельзя проверяем можно ли заблокировать выигрыш человека
3. если еще не сделан ход, то ставим по центру или углам 
полный алгоритм хода компьютера в крестики нолики на си

Добавлено через 46 секунд
самое интересное и сложное, это написать игру  с компьютером . здесь алгоритм хода компьютера такой  
1. сначала проверяем  можно ли выиграть 
2. если нельзя проверяем можно ли заблокировать выигрыш человека
3. если еще не сделан ход, то ставим по центру или углам 
полный алгоритм хода компьютера в крестики нолики на си
PM MAIL WWW   Вверх
Google
  Дата 23.2.2019, 11:45 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0991 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.