Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Delphi] Игра " Меморина" 
:(
    Опции темы
Coфико
Дата 21.5.2010, 22:50 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 21.5.2010

Репутация: нет
Всего: нет



Привет мне очень нужна помощь с Делфи.
У меня есть игра " Меморина"
Мне  нужно её разобрать что и как и от куда .
Половину я сделала а вторую толку дать не могу, ПОМОГИте Пожалуйста!
PM MAIL   Вверх
bems
Дата 21.5.2010, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 0
Всего: 88



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Данкинг
Дата 21.5.2010, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Цитата(Coфико @  21.5.2010,  23:50 Найти цитируемый пост)
ПОМОГИте Пожалуйста! 

В чём?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
world
Дата 22.5.2010, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 2.10.2009
Где: Харьков

Репутация: 6
Всего: 12



Ряд вопросов
- Что за игра? (Как я понял с помощью гула игра по типу "Найди пару", правильно?, впервые просто сталкиваюсь с таким названием)
- 
Цитата

У меня есть ... разобрать
.

 Вам нужно разобрать обший алгоритм или именно, то, что есть у Вас. Если второе, то без кода мы Вам вряд ли чем-нибудь поможем.

- Вы сделали половину. Я, как и остальные пользователи сообщества, увы не владею экстрасенсорными способностями, а жаль конечно smile, поэтому расскажите, что у Вас за часть есть, и с какой частью Вам надо помочь, и чем именно Вам помочь.

И если Вы ответите на эти вопросы, Вам обязательно помогут на форуме.
--------------------
Say what you mean, and mean what you say. Robert Wilson Cody
PM MAIL WWW ICQ Skype   Вверх
Coфико
Дата 23.5.2010, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 21.5.2010

Репутация: нет
Всего: нет



unit Unit1;

interface

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

type

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Panel1: TPanel;
    StaticText1: TStaticText;
    Timer1: TTimer;
    Timer2: TTimer;
    Panel2: TPanel;
    StaticText2: TStaticText;
    Panel3: TPanel;
    Timer3: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure ButOnClick(Sender: TObject);
    procedure DragDr(Sender, Source: TObject; X, Y: Integer);
    procedure massrandom(t,k,n:integer);
    procedure Timerstart(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure Panel3DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);

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

var
  Form1: TForm1;
  but: TBitBtn;
  time: TTimer;
  i,j,x,y,k,n,tag1,tag2,tag3,kn,t,sec,s,kol,min,sh: integer;
  z: array[1..10,1..10] of integer;
  Ctrl: array[1..40] of integer;
implementation

{$R *.dfm}

procedure TForm1.massrandom;
begin
randomize;
for i :=1 to t do       //заполнение массива от i до кол-ва "троек" картинок
  begin
  j:=0;
    repeat
    begin
      x:=random(k)+1;   //k и n - высота и ширина матрицы
      y:=random(n)+1;
      if z[x,y]=0 then
      begin
        j:=j+1;
        z[x,y]:=i;
      end;
    end;
    until (z[x,y]<>0) and (j=3);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
t:=8;
k:=5;
n:=5;
sh:=t*3+1;
massrandom(t,k,n);
for i :=1 to 5 do
  for j:=1 to 5 do
   begin
    But:=TBitBtn.Create(Form1);
    But.Parent:=form1;
    but.Width:=50;
    but.Height:=50;
    but.Left:=j*50+160;
    but.Top:=i*50+20;
    but.OnClick:=form1.ButOnClick;
    but.Tag:=z[i,j];
   end;
Button1.Free;
Button2.Free;
Button3.Free;
Button4.Free;
time:=Ttimer.Create(Form1);
time.OnTimer:=form1.Timerstart;
time.Interval:=1000;
kol:=StrToInt(panel2.Caption);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
t:=9;
k:=4;
n:=7;
sh:=t*3+1;
massrandom(t,k,n);
for i :=1 to 4 do
  for j:=1 to 7 do
   begin
    But:=TBitBtn.Create(Form1);
    But.Parent:=form1;
    but.Width:=50;
    but.Height:=50;
    but.Left:=j*50+100;
    but.Top:=i*50+20;
    but.OnClick:=form1.ButOnClick;
    but.Tag:=z[i,j];
   end;
Button1.Free;
Button2.Free;
Button3.Free;
Button4.Free;
time:=Ttimer.Create(Form1);
time.OnTimer:=form1.Timerstart;
time.Interval:=1000;
kol:=StrToInt(panel2.Caption);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
t:=13;
k:=5;
n:=8;
sh:=t*3+1;
massrandom(t,k,n);
for i :=1 to 5 do
  for j:=1 to 8 do
   begin
    But:=TBitBtn.Create(Form1);
    But.Parent:=form1;
    but.Width:=50;
    but.Height:=50;
    but.Left:=j*50+100;
    but.Top:=i*50+20;
    but.OnClick:=form1.ButOnClick;
    but.Tag:=z[i,j];
   end;
Button1.Free;
Button2.Free;
Button3.Free;
Button4.Free;
time:=Ttimer.Create(Form1);
time.OnTimer:=form1.Timerstart;
time.Interval:=1000;
kol:=StrToInt(panel2.Caption);
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
t:=16;
k:=7;
n:=7;
sh:=t*3+1;
massrandom(t,k,n);
for i :=1 to k do
  for j:=1 to n do
   begin
    But:=TBitBtn.Create(Form1);
    But.Parent:=form1;
    but.Width:=50;
    but.Height:=50;
    but.Left:=j*50+100;
    but.Top:=i*50+20;
    but.OnClick:= Form1.ButOnClick;
    but.Tag:=z[i,j];
   end;
Button1.Free;
Button2.Free;
Button3.Free;
Button4.Free;
time:=Ttimer.Create(Form1);
time.OnTimer:=form1.Timerstart;
time.Interval:=1000;
kol:=StrToInt(panel2.Caption);
end;

procedure TForm1.ButOnClick(Sender: TObject);
begin
(sender as tbitbtn).Glyph.LoadFromFile(inttostr((sender as tbitbtn).tag)+'.bmp');
kn:=kn+1;
if kn=1 then
  tag1:=(sender as tbitbtn).Tag;
if kn=2 then
  tag2:=(sender as tbitbtn).Tag;
if kn=3 then
  begin
  tag3:=(sender as tbitbtn).Tag;
  for k:=0 to form1.ControlCount+1 do
      if (form1.Components[k] is tbitbtn) and ((form1.Components[k] as tbitbtn).Glyph.Empty=true) then
      (form1.Components[k] as tbitbtn).Enabled:=false;
  end;
if kn=3 then
  if (tag1=tag2) and (tag1=tag3) then
  form1.Timer2.Enabled:=true
  else
   form1.timer1.Enabled:=true;

end;

procedure Tform1.Timerstart(Sender: TObject);   //таймер игрового времени
begin
sec:=sec+1;
if sec=60 then
  begin
  sec:=0;
  min:=min+1;
  end;
form1.Panel1.Caption:=Format('%.2d', [min])+format(':%.2d', [sec]);
kol:=kol-1;
                                                              вот с этой строчки мне нужно объяснение каждой процедуры.   Заранее вас благодарю!!!
if kol <0 then
      begin
      kol:=0;
      form1.Panel2.Caption:=inttostr(kol);
      Panel3.Caption:='ВЫ ПРОИГРАЛИ';
      sec:=sec-1;
      for k:=1 to form1.ControlCount+2 do
      if (form1.Components[k] is tbitbtn) then
      (form1.Components[k] as tbitbtn).Enabled:=false;
      end
      else
      form1.Panel2.Caption:=inttostr(kol);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
s:=s+1;
if s=1 then
  begin
    for k:=0 to form1.ComponentCount-1 do
      if form1.Components[k] is tbitbtn then
        (form1.Components[k] as tbitbtn).Glyph:=nil;
    s:=0;
    tag:=0;
                                         //количество очков
    if kol <0 then
      begin
      kol:=0;
      form1.Panel2.Caption:=inttostr(kol);
      end
      else
      form1.Panel2.Caption:=inttostr(kol);
    timer1.Enabled:=false;
    kn:=0;
    for k:=0 to form1.ControlCount+1 do
      if (form1.Components[k] is tbitbtn) then
      (form1.Components[k] as tbitbtn).Enabled:=true;
  end;
end;

procedure TForm1.Timer2Timer(Sender: TObject);            //таймер для 3х одинаковых кнопок
begin
s:=s+1;
if s=1 then
  begin
    for k:=0 to form1.ComponentCount-1 do
      if (form1.Components[k] is tbitbtn) and ((form1.Components[k] as tbitbtn).Glyph.Empty=false) then
        (form1.Components[k] as tbitbtn).Visible:=false;  //если кнопки непустые, убираем их
    s:=0;
    kol:=kol+90;                                         //количество очков
    form1.Panel2.Caption:=inttostr(kol);
    tag:=0;
    timer2.Enabled:=false;
    kn:=0;
    sh:=sh-3;
    for k:=0 to form1.ControlCount+1 do                   //активируем выключенные кнопки
      if (form1.Components[k] is tbitbtn) then
      (form1.Components[k] as tbitbtn).Enabled:=true;
    if sh=1 then
    for k:=0 to form1.ControlCount+1 do
      if (form1.Components[k] is tbitbtn) then
       begin
       (form1.Components[k] as tbitbtn).Glyph.LoadFromFile('0.bmp');
       (form1.Components[k] as tbitbtn).OnDragDrop:=form1.DragDr;
       (form1.Components[k] as tbitbtn).DragMode:=dmAutomatic;
       form1.Panel3.Caption:='!!!ПОБЕДА!!!';
       time.Enabled:=false;
       end;
  end;
end;

procedure Tform1.DragDr(Sender, Source: TObject; X, Y: Integer);
begin
(Sender as Tbitbtn).DragCursor:=crDrag;
end;

procedure TForm1.Panel3DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
Accept:=true;
form1.Panel3.Caption:='!!!ПОБЕДА!!!';
for k:=0 to form1.ControlCount+1 do
      if (form1.Components[k] is tbitbtn) then
      (form1.Components[k] as tbitbtn).Visible:=false;
time.Enabled:=false;
end;

end.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0454 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.