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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2009, 14:30   #1
kotzzz
Пользователь
 
Регистрация: 30.01.2009
Сообщений: 39
Вопрос Помогите с составлением кода для игры "О, счастливчик"!

Просьба такая есть база вопросов... в отдельном файле...
На каждый уровень своя база...

Так вот, к примеру первый уровень:

Нужно чтоб программа, автоматически понимала сколько вопросов содержится в базе и выбирала любой из них....


Пробовал такой вариант кода:
begin
randomize;
i:=random(10);
label11.Caption:=inttostr(i+1);
end;
listbox1.Items.LoadFromFile(Directo ryListBox1.Directory+'\baza\1_etap. vtr');
if label11.Caption=listbox1.Items.Stri ngs[(listbox1.Items.IndexOf(label11.Cap tion))] then button_put(т.е код расположения ответов);

Но факт остается фактом, ставя число 10 в:
i:=random(10);
я уже не могу расширить базу вопросов, а это очень сильно ограничивает возможности программы... при добавлении новых вопросов в базу, программу нужно будет постоянно переписывать...

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

Для пояснения - база записана в виде:
Номер вопроса(К примеру,1)
1) -что означает правильный ответ
ответ №1
0)
ответ №2 -что означает неправильный ответ
0)
ответ №3
0)
ответ №4
kotzzz вне форума Ответить с цитированием
Старый 30.01.2009, 14:35   #2
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

держи базу предположим в ini файле и что бы определить количесво вопросов пишешь:
Код:
Count:=0;
while ini.valueexists('Base', 'Question_'+inttostr(Count)) do
inc(Count);
Count - это будет количество вопросов в базе

и далее через

Randomize;
random(count); - случайный выбор вопроса
Перед тем как спросить ищи на форуме и в GOOGLE

Последний раз редактировалось KORN; 30.01.2009 в 14:44.
KORN вне форума Ответить с цитированием
Старый 30.01.2009, 14:35   #3
kotzzz
Пользователь
 
Регистрация: 30.01.2009
Сообщений: 39
По умолчанию

Для связи можно использовать мой маил: kostyavor_axu@mail.ru
___________________________________ ______________________________

А как быть с кодом в программе, который сам выберает вопрос?

Последний раз редактировалось kotzzz; 30.01.2009 в 14:40.
kotzzz вне форума Ответить с цитированием
Старый 30.01.2009, 14:45   #4
NOOB
Пользователь
 
Аватар для NOOB
 
Регистрация: 01.11.2007
Сообщений: 45
По умолчанию

Можешь просто в ini файле хранить колличество вопросов, при добавлении/удалении нового вопроса, увеличиваешь/уменьшаешь это значение, а в коде считываешь это значение в какую-нибудь переменную типа int "CountQuestionFromIni" и используешь по назначению:
Код:
i:=random(CountQuestionFromIni)+1;
NOOB вне форума Ответить с цитированием
Старый 30.01.2009, 14:50   #5
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

так же можешь просто 0вую строку в своем документе отвести под количество вопросов, т.е. указать там значение
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума Ответить с цитированием
Старый 30.01.2009, 15:02   #6
kotzzz
Пользователь
 
Регистрация: 30.01.2009
Сообщений: 39
По умолчанию

Спасибо, большое... Я начал изучать Delphi несколько дней назад, и поэтому не удивляйтесь этому вопросу:


Как мне теперь все это совместить?

К примеру, если использовать этот код, программа будет работать:
begin
Count:=0;
while ini.valueexists('Base', 'Question_'+inttostr(Count)) do
inc(Count);
end;
begin
randomize;
i:=random(Count);
label11.Caption:=inttostr(i+1);{Выв од вопроса из базы в панель вопроса программы}
end;
listbox1.Items.LoadFromFile(Directo ryListBox1.Directory+'\baza\1.ini') ;
if label11.Caption=listbox1.Items.Stri ngs[(listbox1.Items.IndexOf(label11.Cap tion))] then button_put;{Постановка вариантов ответов в панеле программы}

или как?
kotzzz вне форума Ответить с цитированием
Старый 30.01.2009, 15:37   #7
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

что бы посчитать строки нужно сначала открывать ini файл
Код:

uses inifiles;

ini:=tinifile.create(extractfilepath(application.exename)+'Filename');
Count:=0;
while ini.valueexists('Base', 'Question_'+inttostr(Count)) do
inc(Count);
ini.free;
так же ищи в нете и на форуме как работать с ini файлами, одно по одному писать не буду...
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума Ответить с цитированием
Старый 30.01.2009, 16:54   #8
kotzzz
Пользователь
 
Регистрация: 30.01.2009
Сообщений: 39
По умолчанию

Спасибо KORN, а можешь пояснить эти слова: 'Base', 'Question'?

и что-то ошибку пишет:
[Warning] Unit1.pas(7): Unit 'FileCtrl' is specific to a platform
[Error] Unit1.pas(445): Undeclared identifier: 'ini'
[Error] Unit1.pas(447): 'DO' expected but identifier 'valueexists' found
[Error] Unit1.pas(1189): Undeclared identifier: 'ini'
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'

что это может значить?
kotzzz вне форума Ответить с цитированием
Старый 30.01.2009, 16:58   #9
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

если ты спрашиваешь про Base и Question значит ты не искал про ini файлы, ну что ж... это как бы тебе сказать... Base - это раздел в котором находится значение Question... если открыть ini файл то ты увидишь его структуру
[Base]
Question=значение

читай мануалы, идем далее

[Warning] Unit1.pas(7): Unit 'FileCtrl' is specific to a platform - в общем можешь на это не обращать внимания

[Error] Unit1.pas(445): Undeclared identifier: 'ini'

а ты объявил переменную ini: tinifile;?

[Error] Unit1.pas(447): 'DO' expected but identifier 'valueexists' found

следует из за первой ошибки

[Error] Unit1.pas(1189): Undeclared identifier: 'ini'

а ты объявил переменную ini: tinifile;?

[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'

не компилится из за ошибок
Перед тем как спросить ищи на форуме и в GOOGLE

Последний раз редактировалось KORN; 30.01.2009 в 17:00.
KORN вне форума Ответить с цитированием
Старый 30.01.2009, 17:30   #10
]Wowan[
Delphi forever
Форумчанин
 
Аватар для ]Wowan[
 
Регистрация: 13.01.2009
Сообщений: 113
По умолчанию

Есть идеи для твоей проги, ася 415 253 529
Программы на заказ Delphi, Pascal.
ася: 415 253 529. Мыло: wowan141750@gmail.com.
]Wowan[ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мой первый редактор для игры:"Лесной мир". Манжосов Денис :) Gamedev - cоздание игр: Unity, OpenGL, DirectX 38 09.03.2011 17:37
Нужны исходники игры "Парные картинки" Ellita Общие вопросы Delphi 5 09.05.2010 12:27
Проблемма: Программное отключение "защиты формы" влияет на скорость выполнения программного кода... StrikeR33 Microsoft Office Word 0 28.05.2008 20:11
Где можно найти исходник игры "рулетка" roll Компоненты Delphi 2 15.09.2007 22:09