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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2010, 13:13   #11
s4shk4
Пользователь
 
Аватар для s4shk4
 
Регистрация: 24.10.2010
Сообщений: 29
По умолчанию

Они уже есть)

В чем преимущество ADOConnection? Просто я его никогда не применял..
s4shk4 вне форума Ответить с цитированием
Старый 01.11.2010, 14:57   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Они уже есть)
давайте поступим так - Вы возникающие вопросы сначала пытаетесь решить через поиск (в т.ч. гугл), если же не нашли ответа (или он Вас неудовлетворил) тогда накапливайте, чтобы не по одному вопросу задавать... Иначе Вы можете долго ждать ответа, форум - он же не онлайновый...

Цитата:
В чем преимущество ADOConnection
в данном случае, в ConnectionString задаётся путь к MDB файлу, лежащему РЯДОМ с исполняемым файлом, куда бы Вы не переписали программу!
Ну и ещё одно удобство (хотя в данном случае оно и не задействовано) - подключение к БД одно, а потом всё запросы подключаются через него (просто в данном примере всего один запрос, поэтому этим преимуществом трудно насладиться )
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.11.2010, 08:59   #13
s4shk4
Пользователь
 
Аватар для s4shk4
 
Регистрация: 24.10.2010
Сообщений: 29
По умолчанию

Так, теперь интересует как бы годно реализовать подсказку 50/50

Все что добавил за утро - http://rghost.ru/3119169

Опять-же, спасибо за готовность помочь :3
s4shk4 вне форума Ответить с цитированием
Старый 02.11.2010, 11:48   #14
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

обработчик события на кнопку "50/50":
Код:
procedure TForm1.ButtonFiftyClick(Sender: TObject);
var kBlocked : integer; {количество отсеянных (выключенных) вопросов}
    K, SumBlokedBefore : integer;
    tb : TButton;
begin

  {сначала проверим, не было ли уже заблокировано содержимое ранее}
  SumBlokedBefore := 0;
  if Not Variant1.Enabled then inc(SumBlokedBefore);
  if Not Variant2.Enabled then inc(SumBlokedBefore);
  if Not Variant3.Enabled then inc(SumBlokedBefore);
  if Not Variant4.Enabled then inc(SumBlokedBefore);

  if SumBlokedBefore>=(CountAnswer div 2) then begin
    {выключим кнопку 50 на 50 и выйдем. Делать тут нечего...}
    TButton(Sender).Enabled := false;
    Exit;
  end;


  kBlocked := 0;
  while kBlocked < (CountAnswer div 2) do begin
    K := Random(CountAnswer)+1;
    if Indx[K] > 1 then begin
      Indx[K] := 0; {выкинем этот вариант}

      {найдём нужную кнопку и выключим её}
      tb := FindComponent('Variant'+IntToStr(K)) as TButton;
      if Assigned(tb) then begin
         tb.Tag := 0;
         tb.Caption := '';
         tb.Enabled := true;
      end;
      inc(kBlocked); {увеличим счётчик заблокированных}
    end;

  end;

  {всё сделано. теперь выключим кнопку 50 на 50}
  TButton(Sender).Enabled := false;

end;
p.s. А ещё Вам пора задуматься над тем, как сделать, чтобы выпавшие вопросы больше не выпадали.. банальный order by RND() Вам уже не поможет!

p.p.s. Счётчик ошибок
EditAsk.Text := (IntToStr(TrueAsks));
лучше присваивать прямо в той процедуре, где идёт проверка - верный/неверный ответ!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.11.2010, 12:37   #15
s4shk4
Пользователь
 
Аватар для s4shk4
 
Регистрация: 24.10.2010
Сообщений: 29
По умолчанию

Спасибо.

Хотя, имхо, это лишнее:
tb.Tag := 0;
tb.Caption := '';

Блочить кнопки лучше, на мой взгляд. Так и сделаю.

Цитата:
А ещё Вам пора задуматься над тем, как сделать, чтобы выпавшие вопросы больше не выпадали.. банальный order by RND() Вам уже не поможет!
Это да. Вообще напрягает, что вопросы идут всегда в одном и том-же порядке, несмотря на рандом.

Последний раз редактировалось s4shk4; 02.11.2010 в 12:54.
s4shk4 вне форума Ответить с цитированием
Старый 02.11.2010, 13:04   #16
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

не, ну я опечатался. Хотел написать так:
Цитата:
Код:
if Assigned(tb) then begin
         tb.Tag := 0;
         tb.Caption := '';
         tb.Enabled := false;
      end;
Цитата:
Хотя, имхо, это лишнее:
tb.Tag := 0;
tb.Caption := '';
Вы разработчик — Вам виднее! Как считаете нужным, так и делайте!


Цитата:
Это да. Вообще напрягает, что вопросы идут всегда в одном и том-же порядке, несмотря на рандом.
Ну так победите это! Вариантов - море! Например, хранить номер выпавшего ответа и повторять запрос, пока не выпадет вариант, которого ещё не было. Либо передавать список выпавших номеров (ID, разумеется) прямо в запрос:
Код:
SELECT TOP 1 * FROM Questions where ID not in (5,2,3) ORDER BY RND(id)
да и пора, на мой взгляд, добавить в таблицу вопросов уровень сложности (я уже писал об этом в начале темы).
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.11.2010, 13:14   #17
s4shk4
Пользователь
 
Аватар для s4shk4
 
Регистрация: 24.10.2010
Сообщений: 29
По умолчанию

Цитата:
да и пора, на мой взгляд, добавить в таблицу вопросов уровень сложности (я уже писал об этом в начале темы).
Рановато, пока думаю :3
Мне бы еще все это в человеческий вид привести..

Цитата:
Ну так победите это! Вариантов - море!
Легко сказать.. Я еще зеленый совсем, но что-нибудь постараюсь придумать.

Спасибо еще раз, и мб не последний :3
Не гут это конечно так злоупотреблять Вашей помощью..

Хотелось бы чтоб одна из подсказок выдавала рандомные варианты. Что я не так сделал?

Цитата:
Randomize;
vr:=random(4);
if vr=0 then qr:=('TrueAsk');
if vr=4 then qr:=('TrueAsk');
if vr=1 then qr:=('FalseAsk1');
if vr=2 then qr:=('FalseAsk2');
if vr=3 then qr:=('FalseAsk3');
ololo:=('Правильный ответ - '+'QueryQuestion.FieldByName('+qr+' ).AsString'+'!'); //выводит: Правильный ответ - QueryQuestion.FieldByName(вариант). AsString!

Последний раз редактировалось Stilet; 17.11.2010 в 10:59.
s4shk4 вне форума Ответить с цитированием
Старый 03.11.2010, 09:22   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Хотелось бы чтоб одна из подсказок выдавала рандомные варианты. Что я не так сделал?
а поясните, а что означает "подсказка выдавала Рандомные варианты" ?!
расшифруйте..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.11.2010, 09:27   #19
s4shk4
Пользователь
 
Аватар для s4shk4
 
Регистрация: 24.10.2010
Сообщений: 29
По умолчанию

Цитата:
а поясните, а что означает "подсказка выдавала Рандомные варианты" ?!
расшифруйте..
Т.е. выводила случайно один из четырех вариантов.
s4shk4 вне форума Ответить с цитированием
Старый 03.11.2010, 11:34   #20
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Т.е. выводила случайно один из четырех вариантов.
безразлично - правильный/неправильный?

если - всё равно, какой вариант выдать - так это просто.
смотрите, у Вас же есть массивчик строк. M[1..CountAnswer]
тогда любой вариант можно показать ОДНОЙ строчкой кода:
Код:
  ShowMessage(M[ Random(CountAnswer)+1 ]);
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
На Delphi 7 сделать игру кто хочет стать миллионером в delphi 7 666dart666 Помощь студентам 11 04.11.2010 17:57
Стать миллионером Kapitann Свободное общение 30 21.10.2010 19:46
Кто хочет стать миллионером? на СИ Andre101 Помощь студентам 0 25.05.2010 08:01
программа Кто хочет стать миллионером 666dart666 Помощь студентам 1 18.04.2009 11:38
Тем, кто хочет стать дипломированным программистом бесплатно vasek123 Свободное общение 7 11.04.2009 17:50