Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2015, 19:03   #1
dima2308
Пользователь
 
Регистрация: 03.10.2014
Сообщений: 29
По умолчанию Крестики-нолики

Имеется работающий код для игры в крестики-нолики.
В коде игра идет в режиме пользователь-компьютер, а требуется пользователь-пользователь.
Так как я в Dephi совсем не разбираюсь, прошу помощи.
Где и как надо изменить код?
Вложения
Тип файла: rar hirenka.rar (384.1 Кб, 10 просмотров)
dima2308 вне форума Ответить с цитированием
Старый 30.03.2015, 20:51   #2
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Вау. Вот это липнина. Я даже не понял как сообщение о ничъей вывести. Ну да бог с ним. Его и в исходном варианте нет.
Код:
...

var
  Current: TImage;

procedure Tmain_form.FormCreate(Sender: TObject);
begin
  Current := krestik_i;
end;

procedure{ Щелчок по клетке }Tmain_form.loop_click(Sender: TObject);
var
index, ar_pos, tk: integer;
c1, c2: integer;
ch: Char;
begin
   index := tImage(sender).Tag;
   if read_pos(index) <> '0' then exit;
   if Current = krestik_i then ch := '1' else ch := '2';
   case index of
   1: begin cell_array[1][1] := ch; cell_array[4][1] := ch; cell_array[7][1] := ch; end;
   2: begin cell_array[1][2] := ch; cell_array[5][1] := ch; end;
   3: begin cell_array[1][3] := ch; cell_array[6][1] := ch; cell_array[8][1] := ch; end;
   4: begin cell_array[2][1] := ch; cell_array[4][2] := ch; end;
   5: begin cell_array[2][2] := ch; cell_array[5][2] := ch; cell_array[7][2] := ch; cell_array[8][2] := ch; end;
   6: begin cell_array[2][3] := ch; cell_array[6][2] := ch; end;
   7: begin cell_array[3][1] := ch; cell_array[4][3] := ch; cell_array[8][3] := ch; end;
   8: begin cell_array[3][2] := ch; cell_array[5][3] := ch; end;
   9: begin cell_array[3][3] := ch; cell_array[6][3] := ch; cell_array[7][3] := ch; end;
   end;
   tImage(sender).Picture := Current.Picture;
   for c1 := 1 to 8 do
   begin
      tk := 0;
      for c2 := 1 to 3 do
      if cell_array[c1][c2] = ch then inc(tk);
      if tk = 3 then begin
        if Current = krestik_i then win(1) else win(2);
        exit;
      end;
   end;

   if Current = krestik_i then Current := nolik_i
   else Current := krestik_i;
end;

procedure{ WIN }Tmain_form.win(index: integer);
begin
   case index of
   0: showMessage('Ничья!');
   1: showMessage('[X] WIN!!!');
   2: ShowMessage('[O] WIN!!!');
   end;
   reset;
end;
Sibedir вне форума Ответить с цитированием
Старый 30.03.2015, 21:05   #3
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Цитата:
Сообщение от dima2308 Посмотреть сообщение
требуется пользователь-пользователь.
По сети или просто поочередно?
Arigato вне форума Ответить с цитированием
Старый 31.03.2015, 09:42   #4
dima2308
Пользователь
 
Регистрация: 03.10.2014
Сообщений: 29
По умолчанию

Просто поочередно.

Изменил код, запускается, но при щелчке по клетке вылетает ошибка:
Изображения
Тип файла: jpg Безымянный.jpg (111.1 Кб, 129 просмотров)

Последний раз редактировалось Stilet; 01.04.2015 в 07:03.
dima2308 вне форума Ответить с цитированием
Старый 31.03.2015, 09:52   #5
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

А чему Current равен?
Что, копипас и готово? Немного-то посмотри код.
Sibedir вне форума Ответить с цитированием
Старый 31.03.2015, 09:57   #6
dima2308
Пользователь
 
Регистрация: 03.10.2014
Сообщений: 29
По умолчанию

Говорю же, с Delphi первый раз работаю...
Так ведь в процедуре выше Current присваивается значение krestik_i.
Или это не то?
dima2308 вне форума Ответить с цитированием
Старый 31.03.2015, 10:06   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Не правильно изменил. Резкость наведи на код в #2
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 31.03.2015, 11:09   #8
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
Сообщение от dima2308 Посмотреть сообщение
Так ведь в процедуре выше Current присваивается значение krestik_i.
А она (эта процедура) у тебя выполняется?

Даю жирную наводку: Это новый обработчик какого-то события. Его у тебя не было.
Sibedir вне форума Ответить с цитированием
Старый 31.03.2015, 12:05   #9
dima2308
Пользователь
 
Регистрация: 03.10.2014
Сообщений: 29
По умолчанию

Процедуру я ещё в самом начале объявил:
procedure FormCreate(Sender: TObject);
dima2308 вне форума Ответить с цитированием
Старый 31.03.2015, 13:10   #10
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
Сообщение от dima2308 Посмотреть сообщение
Процедуру я ещё в самом начале объявил:
procedure FormCreate(Sender: TObject);
А назначил?
Sibedir вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Крестики-нолики Arigato Свободное общение 12 02.02.2021 22:03
Крестики-нолики Vilkas Помощь студентам 2 19.12.2014 08:34
крестики нолики spydark91 Общие вопросы Delphi 2 08.07.2011 19:19
Крестики нолики KostyaS Помощь студентам 0 04.02.2011 12:52
Крестики нолики revaldo666 Общие вопросы C/C++ 8 20.01.2011 17:02