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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2010, 17:26   #1
SaNCheZz..
 
Аватар для SaNCheZz..
 
Регистрация: 04.05.2010
Сообщений: 6
Восклицание Игры "Парные картинки" (Delphi)

Всем Здравствуйте.
Возникла проблема при создании игры.
Основная сложность заключается в реализации алгоритма.
Пока поле решил сделать 2х2, в последующем планирую сделать поле 4х4. В интернете нашел пару исходников этой игры. Но там работа идет с Canvas. Я решил пойти по другому пути и использовать BitBtn.
Опыта у меня не много так что прошу особо на меня не ругаться)
Заранее спасибо за помощь.

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, jpeg, Menus, ExtCtrls, Buttons;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    procedure N4Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure new;
    procedure click_(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure key_(Sender:Tobject);
    procedure click2(Sender:TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  ris: array[1..2,1..2] of integer;
  kol: array[1..2] of integer;
  m:integer;
  m1: array[1..2] of integer;
  m2: array[1..2] of string;
  j:integer;

implementation

{$R *.dfm}

procedure TForm1.N4Click(Sender: TObject);
begin
application.Terminate;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
m:=0;
new;
end;

procedure TForm1.N3Click(Sender: TObject);
begin
showmessage ('Игра');
end;

//Процедура с условием открытия только 2х картинок//
procedure TForm1.new;
var i,j,o:integer;
begin
o:=0;
Randomize;
m1[1]:=6;
m1[2]:=78;
while (kol[1]<>2) and (kol[2]<>2) do
begin
   for i:=1 to 2 do
    for j:=1 to 2 do
   begin
       ris[i,j]:=random(2)+1;
       if ris[i,j]= 1 then kol[1]:=kol[1]+1;
       if ris[i,j]= 2 then kol[2]:=kol[2]+1;
   end;
end;
end;

//новая игра//
procedure TForm1.N1Click(Sender: TObject);
begin
BitBtn1.Glyph.LoadFromFile('000.bmp');
BitBtn2.Glyph.LoadFromFile('000.bmp');
BitBtn3.Glyph.LoadFromFile('000.bmp');
BitBtn4.Glyph.LoadFromFile('000.bmp');
new;
end;


procedure TForm1.click_(Sender: TObject);
var
k,s1,s2,i,k1,q1,q2:integer;
l:integer;
begin
  l:=1;
  m:=m+1;
        //при клике загружается картинка в кнопку//
      k:=strtoint((Sender as TBitBtn).Caption);
      s1:= k div 10;
      s2:= k mod 10;
      if ris[s1,s2] = 1 then
      (Sender as TBitBtn).Glyph.LoadFromFile('111.bmp');
      if ris[s1,s2] = 2 then
      (Sender as TBitBtn).Glyph.LoadFromFile('222.bmp');
      (Sender as TBitBtn).TabStop:=false;

      //если открыты 2 картинки то происходит сравнивание как в матрици по средством матрицы
        if m=2 then
          begin
         for i := 0 to Form1.ComponentCount -1 do begin
         if (Form1.Components[i] is TBitBtn) then
           begin
             if  (Sender as TBitBtn).TabStop=false then  //исп свойсво TabStop для того что бы обозначить открытые элементы//
             begin
             if (Sender as TBitBtn).Caption<>m2[1] then begin
                 k1:=strtoint((Sender as TBitBtn).Caption);
                 m2[l]:= (Sender as TBitBtn).Caption;
                 q1:= k1 div 10;
                 q2:= k1 mod 10;
                 m1[l]:=ris[q1,q2];
                 l:=l+1;
                 end;
            end;
           end;
           end;
          end;

      if m=2 then
      begin
        key_(Sender);
      end;


         if m=2 then
      begin
          key_(Sender);
      end;
end;
Вложения
Тип файла: rar Парные картинки (BitBtn).rar (2.11 Мб, 71 просмотров)
SaNCheZz.. вне форума Ответить с цитированием
Старый 06.05.2010, 17:27   #2
SaNCheZz..
 
Аватар для SaNCheZz..
 
Регистрация: 04.05.2010
Сообщений: 6
Восклицание

Код:
procedure TForm1.key_(Sender:Tobject);
  begin
   for j:=0 to Form1.ComponentCount -1 do       //промостр элементов на форме//
        if (Form1.Components[j] is TBitBtn) then   //просмотр кнопок//
         //if  ((Sender as TBitBtn).Caption = m2[1]) or ((Sender as TBitBtn).Caption = m2[2]) then
         if  ((Sender as TBitBtn).Caption = m2[1]) then
         begin
           (Sender as TBitBtn).Visible:=false;
            m:=0;
            (Sender as TBitBtn).TabStop:=true;
         end else
             begin
             (Sender as TBitBtn).TabStop:=true;
              m:=0;
             (Sender as TBitBtn).Glyph.LoadFromFile('000.bmp');
         end;


   for j:=0 to Form1.ComponentCount -1 do
        if (Form1.Components[j] is TBitBtn) then
         //if  ((Sender as TBitBtn).Caption = m2[1]) or ((Sender as TBitBtn).Caption = m2[2]) then
         if  ((Sender as TBitBtn).Caption = m2[2]) then
         begin
           (Sender as TBitBtn).Visible:=false;
            m:=0;
            (Sender as TBitBtn).TabStop:=true;
         end else
             begin
             (Sender as TBitBtn).TabStop:=true;
              m:=0;
             (Sender as TBitBtn).Glyph.LoadFromFile('000.bmp');
             end;
end;

procedure TForm1.click2(Sender:TObject);
begin
click_(Sender);
end;

end.
SaNCheZz.. вне форума Ответить с цитированием
Старый 06.05.2010, 23:49   #3
SaNCheZz..
 
Аватар для SaNCheZz..
 
Регистрация: 04.05.2010
Сообщений: 6
По умолчанию

До вечера проделывал еще попытки что либо сделать. Результат тот же. Если есть у кого какие идеи пишите не стесняйтесь))
SaNCheZz.. вне форума Ответить с цитированием
Старый 06.05.2010, 23:54   #4
fbus
Форумчанин
 
Аватар для fbus
 
Регистрация: 23.10.2008
Сообщений: 460
По умолчанию

есть, пиши в аську... я делал такую
fbus вне форума Ответить с цитированием
Старый 07.05.2010, 11:07   #5
SaNCheZz..
 
Аватар для SaNCheZz..
 
Регистрация: 04.05.2010
Сообщений: 6
По умолчанию

Тема еще актуальна
SaNCheZz.. вне форума Ответить с цитированием
Старый 07.05.2010, 14:00   #6
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Держи вариант.

Алгоритм начального заполнения некорректен - зацикливается периодически.
Вложения
Тип файла: rar PAIRPIC.rar (335.9 Кб, 66 просмотров)
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 10.05.2010, 01:09   #7
SaNCheZz..
 
Аватар для SaNCheZz..
 
Регистрация: 04.05.2010
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Z1000000 Посмотреть сообщение
Держи вариант.

Алгоритм начального заполнения некорректен - зацикливается периодически.
Спасибо за помощь
SaNCheZz.. вне форума Ответить с цитированием
Старый 10.05.2010, 01:11   #8
SaNCheZz..
 
Аватар для SaNCheZz..
 
Регистрация: 04.05.2010
Сообщений: 6
По умолчанию

Проблема с зацикливание осталась.
SaNCheZz.. вне форума Ответить с цитированием
Старый 10.05.2010, 11:26   #9
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Конечно. Я же ее не решил.
Сделай другой алгоритм начального заполнения. Я бы тебе подсказал. но софта под рукой нет. А словами долго описывать. Стукни завтра в аську, набросаю если очень надо.Бесплатно.
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужны исходники игры "Парные картинки" Ellita Общие вопросы Delphi 5 09.05.2010 12:27
разработка игры "Реверси". Имеется код этой игры на С++ CD-RW Помощь студентам 0 28.03.2010 00:13
Проблема с реализацией логики в игре "парные картинки" Zaher Помощь студентам 4 22.12.2009 21:53
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04