|
Вопрос # 5 420/ вопрос решён / |
|
Здравствуйте!
Подскажите пожалуйста в чем может быть ошибка.
на форме есть 36 изображений. по клику на них они открываются(в зависимости от выбора или по 2 или по три)
когда открыто кол-во К(2 или 3) необходимо осуществить проверку, одинаковые открыт или нет.
как поняла из работы программы, картинки открываются разные, значит в масивы заносятся разные названия картинок и номера тех по которым щелкнули, однако после проверки на "одинаковость" прграмма переходит в ту часть программы, которая для одинаковых картинок, даже если они были разными.
Приложение: Переключить в обычный режим- var
- Form1: TForm1;
- kol:2..40;
- mas:array[1..36]of string[10]; {massiv kartinok}
- v:array[1..3]of string[10]; {imea vibrannih kartinok}
- n:array[1..3]of byte; {nomera vibrannih kartinok}
- vibor:byte; {skoliko uje vibrali [0..3]}
- k:byte;{po skoliko otkrivati [dva ili tri]}
- time:word; {vremea ojidania polse klika po kartinke}
- stop:word; {chislo ugadannih par kartinok}
- sek,min,mesto:integer;
- sek1,min1:string;
-
- procedure TForm1.ImageClick(Sender: TObject);
- var para:integer;
- begin
- with (sender as Timage) do
- Picture.LoadFromFile('foto\'+mas[tag]+'.bmp'); //pokajem chto igrok vibral
- inc(vibor); // uvelichivaem vibor na 1
- v[vibor]:=mas[tag]; // imea kartinki
- n[vibor]:=tag; //nomer kartinki kuda shelknul igrok
- Form1.Refresh; //pererisovka
- sleep(time); //jdem zadannoe vremea
- if vibor=k then check;
- // if vibor=k then Check; //proveream
- end;
-
- Procedure TForm1.Check; {poroveream odinakovie li kartinki}
- var flag: boolean;
- i, j: byte;
- qw, kolprob: integer;
- prom: Tplayer;
- Stroka, slovo: string;
- stfile:textfile;
- begin
- flag:=true;
- for i:=1 to k-1 do
- begin
- if (v[i]<>v[i+1]) then
- begin
- flag:=false; {raznie!}
- break;
- end;
- end;
-
- if flag then
- begin {pravilino ugadal}
- for i:=1 to k do
- TImage(FindComponent('Image'+IntToStr(n[i]))).Picture.LoadFromFile('foto\null.bmp');
- stop:=stop+k; //uvelichim chislo ugadannih
- end
- else
- begin {ne pravilino ugadal}
- for i:=1 to k do
- TImage(FindComponent('Image'+IntToStr(n[i]))).Picture.LoadFromFile('foto\0.bmp');
- end;
- vibor:=0;
 |
Вопрос задала: MerryJane (статус: Посетитель)
Вопрос отправлен: 17 июня 2011, 13:26
Состояние вопроса: решён, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 35; последнее сообщение — 17 июня 2011, 17:33; участников в обсуждении: 3.
Страницы: [« Предыдущая] [1] [2]
|
MerryJane (статус: Посетитель), 17 июня 2011, 14:30 [#21]:
в свойствах imageй у каждого tag прописан
|
|
MerryJane (статус: Посетитель), 17 июня 2011, 14:32 [#22]:
да только в начале они не открываются все . пользователь только звезды видит потом открывает.
да все правильно и еще там есть одна лишняя картинка у нее пары нет. препод сказал сделать такую зачем не знаю.
|
|
min@y™ (статус: Доктор наук), 17 июня 2011, 14:34 [#23]:
Цитата (min@y™):
vibor считается а tag всегда ноль.
Если tag всегда = 0, что в v[vibor] всегда попадёт нулевой элемент массива mas. B это очень хреново, т.к. элементы этого массива у тебя нумеруются с единицы.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
MerryJane (статус: Посетитель), 17 июня 2011, 14:37 [#24]:
а возможно что я как то к tag не правильно обращаюсь? ведь там в принципе 0 не должно быть
|
|
min@y™ (статус: Доктор наук), 17 июня 2011, 14:43 [#25]:
Цитата (MerryJane):
да только в начале они не открываются все . пользователь только звезды видит потом открывает. да все правильно и еще там есть одна лишняя картинка у нее пары нет. препод сказал сделать такую зачем не знаю.
Короче, дело швах. С таким подходом написать подобную программу будет очень сложно, ибо в подобных задачах требуется чёткое отделение интерфейса пользователя (GUI) от логики работы программы. Мой тебе совет - стирай всё это и начинай писать с нуля, используя мои бесплатные советы. Только начинай не с проектиртивания GUI, а именно с логики.
Предлагаю тебе, для начала, написать:
1. класс, который отвечает за отдельную картинку и имеет свои свойства (имя файла, номер типа картинки (для проверки схожести) и т.п.) и методы (например, метод проверки на схожесть с другой картинкой);
2. класс, создающий, хранящий, отрисовывающий и освобождающий картинки, как массив из экземпляров класса из. п.1.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 17 июня 2011, 14:45 [#26]:
Цитата (MerryJane):
а возможно что я как то к tag не правильно обращаюсь? ведь там в принципе 0 не должно быть
Ну так возьми да проверь. Поставь точку останова вот сюда:
Picture.LoadFromFile('foto\'+mas[tag]+'.bmp');
и посмотри, чему равно tag.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Gooddy (статус: 3-ий класс), 17 июня 2011, 14:49 [#27]:
Есть идея.
Чисти код! Чисти код! Чисти код!
|
|
Gooddy (статус: 3-ий класс), 17 июня 2011, 14:49 [#28]:
Возможно св-во tag берётся у Form1.
Напиши (Sender as TImage).Tag
Чисти код! Чисти код! Чисти код!
|
|
MerryJane (статус: Посетитель), 17 июня 2011, 14:51 [#29]:
так и проверила что tag = 0.
и спасибо за бесплатные советы(=
для меня вот только остается загадкой почему изображения по клику загружаются разные, как нужно, ведь если tag равен 0 то при щелчке по изображению должна подгружаться картинка из нулевого элемента массива mas а такого элемента вообще нет.
а подгружаются те что нужны
посмотрела какие значения в mas хранились. первая картинка номер 18 и открывалась номер 18. тоесть эта строка работает каким то обрахом при tag=0.
|
|
MerryJane (статус: Посетитель), 17 июня 2011, 14:55 [#30]:
ДАААА!!!
Gooddy: ты прав(= после этого заработало ура!!!(+
теперь наконец-то до статистики дошло и там ошибки выдает(х
|
17 июня 2011, 14:56: Статус вопроса изменён на решённый (изменил автор вопроса — MerryJane)
|
Gooddy (статус: 3-ий класс), 17 июня 2011, 15:03 [#31]:
Ошибки всё дальше и дальше. Глядишь так и заработает =)
Чисти код! Чисти код! Чисти код!
|
|
MerryJane (статус: Посетитель), 17 июня 2011, 15:10 [#32]:
конечно заработает(х у меня все заработает..
|
|
MerryJane (статус: Посетитель), 17 июня 2011, 15:26 [#33]:
подскажи пожалуйста как записать условие stringlist <> 0
|
|
Gooddy (статус: 3-ий класс), 17 июня 2011, 15:28 [#34]:
StringList.Count
Чисти код! Чисти код! Чисти код!
|
|
MerryJane (статус: Посетитель), 17 июня 2011, 17:33 [#35]:
спасибо(=
|
Страницы: [« Предыдущая] [1] [2]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|