Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 420

/ вопрос решён /

Здравствуйте!
Подскажите пожалуйста в чем может быть ошибка.
на форме есть 36 изображений. по клику на них они открываются(в зависимости от выбора или по 2 или по три)
когда открыто кол-во К(2 или 3) необходимо осуществить проверку, одинаковые открыт или нет.
как поняла из работы программы, картинки открываются разные, значит в масивы заносятся разные названия картинок и номера тех по которым щелкнули, однако после проверки на "одинаковость" прграмма переходит в ту часть программы, которая для одинаковых картинок, даже если они были разными.

Приложение:
  1. var
  2. Form1: TForm1;
  3. kol:2..40;
  4. mas:array[1..36]of string[10]; {massiv kartinok}
  5. v:array[1..3]of string[10]; {imea vibrannih kartinok}
  6. n:array[1..3]of byte; {nomera vibrannih kartinok}
  7. vibor:byte; {skoliko uje vibrali [0..3]}
  8. k:byte;{po skoliko otkrivati [dva ili tri]}
  9. time:word; {vremea ojidania polse klika po kartinke}
  10. stop:word; {chislo ugadannih par kartinok}
  11. sek,min,mesto:integer;
  12. sek1,min1:string;
  13.  
  14. procedure TForm1.ImageClick(Sender: TObject);
  15. var para:integer;
  16. begin
  17. with (sender as Timage) do
  18. Picture.LoadFromFile('foto\'+mas[tag]+'.bmp'); //pokajem chto igrok vibral
  19. inc(vibor); // uvelichivaem vibor na 1
  20. v[vibor]:=mas[tag]; // imea kartinki
  21. n[vibor]:=tag; //nomer kartinki kuda shelknul igrok
  22. Form1.Refresh; //pererisovka
  23. sleep(time); //jdem zadannoe vremea
  24. if vibor=k then check;
  25. // if vibor=k then Check; //proveream
  26. end;
  27.  
  28. Procedure TForm1.Check; {poroveream odinakovie li kartinki}
  29. var flag: boolean;
  30. i, j: byte;
  31. qw, kolprob: integer;
  32. prom: Tplayer;
  33. Stroka, slovo: string;
  34. stfile:textfile;
  35. begin
  36. flag:=true;
  37. for i:=1 to k-1 do
  38. begin
  39. if (v[i]<>v[i+1]) then
  40. begin
  41. flag:=false; {raznie!}
  42. break;
  43. end;
  44. end;
  45.  
  46. if flag then
  47. begin {pravilino ugadal}
  48. for i:=1 to k do
  49. TImage(FindComponent('Image'+IntToStr(n[i]))).Picture.LoadFromFile('foto\null.bmp');
  50. stop:=stop+k; //uvelichim chislo ugadannih
  51. end
  52. else
  53. begin {ne pravilino ugadal}
  54. for i:=1 to k do
  55. TImage(FindComponent('Image'+IntToStr(n[i]))).Picture.LoadFromFile('foto\0.bmp');
  56. end;
  57. vibor:=0;


MerryJane Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задала: MerryJane (статус: Посетитель)
Вопрос отправлен: 17 июня 2011, 13:26
Состояние вопроса: решён, ответов: 0.


Мини-форум вопроса

Всего сообщений: 35; последнее сообщение — 17 июня 2011, 17:33; участников в обсуждении: 3.

Страницы: [« Предыдущая] [1] [2]

MerryJane

MerryJane (статус: Посетитель), 17 июня 2011, 14:30 [#21]:

в свойствах imageй у каждого tag прописан
MerryJane

MerryJane (статус: Посетитель), 17 июня 2011, 14:32 [#22]:

да только в начале они не открываются все . пользователь только звезды видит потом открывает.
да все правильно и еще там есть одна лишняя картинка у нее пары нет. препод сказал сделать такую зачем не знаю.
min@y™

min@y™ (статус: Доктор наук), 17 июня 2011, 14:34 [#23]:

Цитата (min@y™):

vibor считается а tag всегда ноль.

Если tag всегда = 0, что в v[vibor] всегда попадёт нулевой элемент массива mas. B это очень хреново, т.к. элементы этого массива у тебя нумеруются с единицы.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
MerryJane

MerryJane (статус: Посетитель), 17 июня 2011, 14:37 [#24]:

а возможно что я как то к tag не правильно обращаюсь? ведь там в принципе 0 не должно быть
min@y™

min@y™ (статус: Доктор наук), 17 июня 2011, 14:43 [#25]:

Цитата (MerryJane):

да только в начале они не открываются все . пользователь только звезды видит потом открывает. да все правильно и еще там есть одна лишняя картинка у нее пары нет. препод сказал сделать такую зачем не знаю.

Короче, дело швах. С таким подходом написать подобную программу будет очень сложно, ибо в подобных задачах требуется чёткое отделение интерфейса пользователя (GUI) от логики работы программы. Мой тебе совет - стирай всё это и начинай писать с нуля, используя мои бесплатные советы. Только начинай не с проектиртивания GUI, а именно с логики.

Предлагаю тебе, для начала, написать:
1. класс, который отвечает за отдельную картинку и имеет свои свойства (имя файла, номер типа картинки (для проверки схожести) и т.п.) и методы (например, метод проверки на схожесть с другой картинкой);
2. класс, создающий, хранящий, отрисовывающий и освобождающий картинки, как массив из экземпляров класса из. п.1.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 17 июня 2011, 14:45 [#26]:

Цитата (MerryJane):

а возможно что я как то к tag не правильно обращаюсь? ведь там в принципе 0 не должно быть

Ну так возьми да проверь. Поставь точку останова вот сюда:
Picture.LoadFromFile('foto\'+mas[tag]+'.bmp');
и посмотри, чему равно tag.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Gooddy

Gooddy (статус: 3-ий класс), 17 июня 2011, 14:49 [#27]:

Есть идея.
Чисти код! Чисти код! Чисти код!
Gooddy

Gooddy (статус: 3-ий класс), 17 июня 2011, 14:49 [#28]:

Возможно св-во tag берётся у Form1.
Напиши (Sender as TImage).Tag
Чисти код! Чисти код! Чисти код!
MerryJane

MerryJane (статус: Посетитель), 17 июня 2011, 14:51 [#29]:

так и проверила что tag = 0.

и спасибо за бесплатные советы(=

для меня вот только остается загадкой почему изображения по клику загружаются разные, как нужно, ведь если tag равен 0 то при щелчке по изображению должна подгружаться картинка из нулевого элемента массива mas а такого элемента вообще нет.
а подгружаются те что нужны
посмотрела какие значения в mas хранились. первая картинка номер 18 и открывалась номер 18. тоесть эта строка работает каким то обрахом при tag=0.
MerryJane

MerryJane (статус: Посетитель), 17 июня 2011, 14:55 [#30]:

ДАААА!!!
Gooddy: ты прав(= после этого заработало ура!!!(+
теперь наконец-то до статистики дошло и там ошибки выдает(х

17 июня 2011, 14:56: Статус вопроса изменён на решённый (изменил автор вопроса — MerryJane)

Gooddy

Gooddy (статус: 3-ий класс), 17 июня 2011, 15:03 [#31]:

Ошибки всё дальше и дальше. Глядишь так и заработает =)
Чисти код! Чисти код! Чисти код!
MerryJane

MerryJane (статус: Посетитель), 17 июня 2011, 15:10 [#32]:

конечно заработает(х у меня все заработает..
MerryJane

MerryJane (статус: Посетитель), 17 июня 2011, 15:26 [#33]:

подскажи пожалуйста как записать условие stringlist <> 0
Gooddy

Gooddy (статус: 3-ий класс), 17 июня 2011, 15:28 [#34]:

StringList.Count
Чисти код! Чисти код! Чисти код!
MerryJane

MerryJane (статус: Посетитель), 17 июня 2011, 17:33 [#35]:

спасибо(=

Страницы: [« Предыдущая] [1] [2]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 25 апреля 2026, 22:35
Выполнено за 0.04 сек.