Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.04.2009, 19:25
Gandjubasische Gandjubasische вне форума
Прохожий
 
Регистрация: 22.04.2009
Сообщения: 6
Репутация: 10
По умолчанию Заполнение StringGrid картинками

Если напишу глупость или не в тот раздел не судите строго, а просто раскажите как надо!!!
---------
Язык-Delphi7
Помогите написать игру "Парные картинки" смысл игры - поле 6х6 замостить туда картинки, скрыть, при открытии 2х одинаковых они исчезают....желательно использовать StringGrid.....Если кто может или знает как нписать или видел где исходники отпишитесь пожалуйста!!!
Ответить с цитированием
  #2  
Старый 22.04.2009, 20:33
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Не использовать StringGrid вообще. Используй TPaintBox и на нем все отрисовывай. Нужный квадрат элементарно вычисляется по координатам клика в событии OnMouseUp. Ну и для хранения информации - соответсвующий массив.
Ответить с цитированием
  #3  
Старый 22.04.2009, 22:35
Gandjubasische Gandjubasische вне форума
Прохожий
 
Регистрация: 22.04.2009
Сообщения: 6
Репутация: 10
По умолчанию

Извините, но без StringGrid не как нельзя обойтись он должен присутствовать по условию задачи...
Ответить с цитированием
  #4  
Старый 22.04.2009, 23:30
Gandjubasische Gandjubasische вне форума
Прохожий
 
Регистрация: 22.04.2009
Сообщения: 6
Репутация: 10
По умолчанию

я вставил картинки но не могу сделать проверку на использование одной картинки более 2х раз...Помогите советом
Ответить с цитированием
  #5  
Старый 23.04.2009, 13:09
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Заведите для каждого имиджа 3 состояния, Видимый,Невидимый,Выбраный
Код:
Type
 TCellImageState = (isVisible,isHiden,isMarked);
и при клике на картинку/ячейку грида проверяйте состояние текущего имиджа.
1. Если Скрытый то сменить состояние на Видимый
1.1. Если ему есть пара среди видимых, то сменить его и его пары состояние на Выбраный.
1.2. Если нет пары то сменить его и его пары состояние на Скрытый.
2. Ничего не делать с теми у которых состояние Выбраный.
Наверное так.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 23.04.2009, 21:15
Gandjubasische Gandjubasische вне форума
Прохожий
 
Регистрация: 22.04.2009
Сообщения: 6
Репутация: 10
По умолчанию

Спасибо за идею, но как мне сделать чтоб картинки из массива токо 2 раза брались? Если мона код.Массив обыкновенные integer овский
Ответить с цитированием
  #7  
Старый 23.04.2009, 21:28
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Заполнять массив "по умному". Не пытаться генерить номер картинки, а генерить ее положение. Допустим у нас есть массив 6х6. Сначала заполняем его нулями, картинки при этом нумеруются с 1. Теперь берем и генерируем расположение картинки в массиве. Если место уже занято (в соотв. ячейке не 0), то просто сдвигаем по кругу. далее еще раз повторяем этот алгоритм для парной картинки. Далее переходим к картинке номер 2. Для примера - на одномерном массиве (на свой перепишешь сам) для массива из 4х элементов и 2х рактинок (т.е. всего картинок будет 4):
Код:
var
  A : Array [1..4] Of Integer;

procedure Generate;

  procedure GenPlace(No : Integer);
  var
    N, I : Integer;
  begin
     N := Random(4) + 1; // от 1 до 4;
     If A[N] = 0 
       Then A[N] := No  // место пустое
       Else // место уже занято - начинаем сдвигать, пока не найдем пустое
         Begin
            I := N + 1;
           While I <= 4 Do
              Begin
                If A[i] = 0 
                  Then A[i] := No  // место пустое
                  Else
                    Begin
                      Inc(I);
                      If I > 4 Then I := 1;
                    End;
              End;
         End;
  end;

var
  I : Integer;
begin
  // сначала очищаем массив
  For I := 1 To 4 Do A[i] := 0;

  // Теперь поехали генерить места картинок. 
  // Внешний цикл - картинки. У нас их 2.
  For I := 1 To 2 Do
    Begin
       GenPlace(I); // первая из пары
       GenPlace(I); // вторая
    End;
end;

Как-то так. Код можно оптимизировать, то так более понятен алгоритм.
Ответить с цитированием
  #8  
Старый 23.04.2009, 22:11
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Люблю я форум. Небыло печали, так ведь завлекла меня эта добрая игруля, вот теперь сижу кодю. Спрашивается, а оно мне надо было? Так ведь нет, теперь самому интересно, что из этого получится.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #9  
Старый 24.04.2009, 09:36
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

В общем кому интересно, вот что у меня получилось по данной теме.
http://depositfiles.com/files/l2hynod6o
Исходники здесь:http://depositfiles.com/files/fy3iqk19g но за паролем, ко мне в личку.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #10  
Старый 26.04.2009, 12:56
Gandjubasische Gandjubasische вне форума
Прохожий
 
Регистрация: 22.04.2009
Сообщения: 6
Репутация: 10
По умолчанию Проблемка

Страдалецъ конечно молодец, что так оригинально реализовал игру, токо исходники у меня не пошли, заругались на модули ss, а когда их ликвидировал, то прога отказалась робить. Подскажите народ где мона скачать ети модули...а то очень хочется посмотреть как ЕТО всё робит....
Ответить с цитированием
  #11  
Старый 22.12.2009, 21:28
nastyaolen nastyaolen вне форума
Прохожий
 
Регистрация: 22.12.2009
Сообщения: 1
Репутация: 10
По умолчанию Помогите пожалуйста с игрой парные картинки.....очень надо

Ребят, пожалуйста, кто нибудь....
Мне нужна игра парные картинки
У меня что-то не получается....
Я уже не знаю что делать=((((
Мне нужна игра парные картинки, чтобы пользователь сам вводил размер поля, чтобы игра шла на время и чтобы за откртытые картинки начислялись очки...
помогите пожалуйста....
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:19.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025