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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.03.2013, 14:32
Dmitry_DM Dmitry_DM вне форума
Активный
 
Регистрация: 07.08.2012
Сообщения: 258
Версия Delphi: Delphi 7
Репутация: 11
По умолчанию Помогите с работой со строками

Здравствуйте! Я вот решил написать игру "Кто хочет стать миллионером".
Столкнулся с такой трудностью как создания массивов с вопросами и ответами. Инфа берется с файла. Там вот такая "иерархия":
Код:
[Questions for "Кто хочет стать миллионером"]
---
^Завершите философскую русскую пословицу: "Век живи, век учись - ..."
-Академиком станешь
-Богатеньким будешь
-В люди выйдешь
+Дураком помрешь
---
^Какое небесное тело используется для определения известных актеров, спортсменов и музыкантов?
-Астероид
-Комета
+Звезда
-Планета
---
Так вот: есть такие массивы:
Код:
  Vopros: array of string;
  Variant1: array of string;
  Variant2: array of string;
  Variant3: array of string;
  Variant4: array of string;
  Otvet: array of string;
Как считывать файл, что бы
--- обозначало новый вопрос (разделитель).
^ обозначало новый вопрос и заполнялось в массив Vopros
+ и - обозначало вариант ответа и все 4 варианта писались в массивы Variant (1-4)
+ обозначало правильный вариант ответа и заполнялось в массив Otvet
И еще один вопрос: как потом послать строку массива в Lable каждый раз РАНДОМНО?
Буду очень благодарен за ответы!!
Ответить с цитированием
  #2  
Старый 28.03.2013, 14:34
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

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

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #3  
Старый 28.03.2013, 14:37
Dmitry_DM Dmitry_DM вне форума
Активный
 
Регистрация: 07.08.2012
Сообщения: 258
Версия Delphi: Delphi 7
Репутация: 11
По умолчанию

Цитата:
Сообщение от Aristarh Dark
Пересмотри архитектуру игры.
У меня нету архитектуры игры. У меня есть только вопросы от компьютерной игры. А саму игру на Delphi я делаю с нуля..
Ответить с цитированием
  #4  
Старый 28.03.2013, 15:08
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

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

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #5  
Старый 28.03.2013, 16:25
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

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

и еще
Цитата:
Variant1: array of string;
Variant2: array of string;
Variant3: array of string;
Variant4: array of string;
Otvet: array of string;
почему идёт четыре варианта и еще ответ? ведь ответ это тоже один из вариантов.
и почему каждый вариант идёт как массив? они что каждый раз в одном и том же порядке будут?
лучше рандомно варианты распологать .а массив с вариантами сделать размером всего 4.
примерная БД будет такая:
таблица Вопросы:
id вопроса, вопрос, уровень сложности вопроса.
Таблица Ответы:
id ответа, ответ, номер вопроса к которому относится ответ, правильность ответа.
ну и примерная логика выборки. допустим нужно показать первый вопрос уровня сложности 1.
у тебя в БД несколько вопросов с уровнем сложности 1.ты выбираешь id'ы всех таких вопросов и потом из них рандомно выбираешь один ИД и загружаешь варианты ответа для этого ид.
Ответить с цитированием
  #6  
Старый 28.03.2013, 17:37
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию

Зачем новичку БД, если он ещё string от array of string не отличает.

Dmitry_DM, прочитай про типы данных и ключевое слово type

Собери тип которой будет в себе содержать вопросы и к каждому вопросу 3и варианта + 1н правильный ответ.
Код:
type TMyQuestion : record
  fquest: string
  fopt1: string
  fopt2: string
  fopt3: string;
  fans: string;
end;

Заведи массив таких вопросов и файл из этого типа данных:

Код:
var
FQuestions : file of TMyQuestion;
MyQuestions : array [0..99] of TMyQuestion;

Запись типизированных данных в файл и считывание оных оттуда:

Записывать:
Код:
AssignFile(FQuestions, 'c:\FQuestions.dat');
Rewrite(FQuestions, 1);
For i:=0 to Length(MyQuestions)-1 do
  BlockWrite(FQuestions, MyQuestions[i], Sizeof(FQuestions));
CloseFile(FQuestions);

Читать по аналогии.

Последний раз редактировалось Uniq!, 28.03.2013 в 17:39.
Ответить с цитированием
  #7  
Старый 28.03.2013, 23:56
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от Dmitry_DM
...У меня есть только вопросы от компьютерной игры. А саму игру на Delphi я делаю с нуля..
Чтоб не снуля, вот вам "трамблёрный" примерчик, почти рабочий, разбирайтесь.

Последний раз редактировалось Alegun, 09.05.2013 в 12:21.
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
Dmitry_DM (29.03.2013)
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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