Сообщений: 130
Написано 3 полезных сообщений (для 35 пользователей)
Простейшие FlashCard на Б3д
Доброе время суток, уважаемые форумчане...
Уф, как в родной дом вернулся. =) Более 2-х лет прошло...
Сейчас, пока появилось время решил понемногу помучать мозг, а человечество лучше программирования еще не придумало ничего для оного процесса.
На проЭкты меня уже не тянет, а вот маленькие программки клепать - это по мне... Хотя, чем черт не шутит...
Итак, господа, думаю многие из вас встречались с такой штукой как FlashCard. Сразу скажу что это простейшие карточки с нарисованными на них Буквами или картинками, на другой стороне которых нарисован ответ. И нужно просто угадать. =) Очень полезная штука для детей и изучения иностранных языков.
Вот и мне вот понадобилось. А учитывая что язык у меня.. гм.. непопулярный, то таких в готовом виде нет - собственно я и решил это исправить. Делать буду в 3д... привычнее как то. Картинки тоже есть...
Итак задача:
- n букв картинок (лежат пронумерованные от 1 до n+1 в папке программы)
- текстовик с n названиями букв (в одну строку, разделенные неким спецсимволом)
- следует рандомом грузить одно из них и выводить 5 рандомных названий (одно из которых правильное)
- при неправильном убирать одно из названий
- при правильном показывать следующую. И до посинения.
может будет статистика и т.п.
Итак, для начала бы хотелось бы обсудить с уважаемыми специалистами общие принципы создания оной вещи.
у меня просто пара ограничений:
- забыл я многое, а все мануалы и хелпы курить не хочется, хотелось бы конкретики.
- не работал со строками и файлами, хотелось бы понять как "извлекать" из файла и считывать названия.
- как лучше реализовать - грузить все изображения разом или именно по одному?
Зы. не обижайтесь и не называйте ламером... Уж больно много всего пропустил и забыл. Вот и хочу понемногу наверстать.
Поделитесь своими идеями.. ну или примерами. Или просто отошлите к тому что моно почитать =)
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
Ответ: Простейшие FlashCard на Б3д
привет!
задача не ясна. картинки хранятся как 1.bmp, 2.bmp, 9999.bmp. так?
в строке в файле хранятся соответственно буквы
Ы:К:Е:О:Й:Ё
Ы - это 1.bmp
К - 2.bmp
Ё - 6.bmp
так?
количество букв в папке и в строке совпадают?
я бы делал так:
1) вычислил бы сколько всего букв (файлов в папке, спецсимволов-разделителей в строке)
2) создал бы два массива, типа так:
Dim symbol$(cnt)
Dim symtexs(cnt) - текстуры (картинки?) букв.
грузить в них. если ограничения на видео\оперативную память нет - то лучше грузить все сразу.
с файлами работать так:
e = readfile("myfile.txt")
str$ = readline(e)
closefile(e)
строку парсить так (перед этим надо посчитать сколько у нас файлов (букв) в папке и создать массив такого размера строковый, для примера будет
dim symbols$(cnt))
ci = 1
delimeter$ =":" или какой тм спецсимвол раделитель
for i = 1 to len(txt)
ch$ = mid(txt,i,1)
if ch$ = delimeter$
ci=ci+1
else
symbols(ci)=symbols(ci)+ch
endif
next
Сообщений: 194
Написано 65 полезных сообщений (для 168 пользователей)
Ответ: Простейшие FlashCard на Б3д
До посинения показывать картинки не нужно
Вообще, обучающие программы должны включать набор неких правил и систему контроля над их прохождением.
По этому поводу у меня конструктивные предложения:
- необходимо сообщать пользователю верным или нет был его ответ
- ограничить кол-во попыток\неверных ответов
- выводить номер вопроса + сколько осталось ещё вопросов до конца блока\раздела
- давать результирующую оценку\рекоммендации
По поводу файлов картинок: не проще их проназывать A.bmp, B.bmp, C.bmp... Z.bmp? Тогда отпадёт необходимость сопоставления буквы с файлом картинки.
__________________
— Скажи мне, что это не бомба.
— Хорошо. Это котенок. Замечательный взрывной котенок.
Последний раз редактировалось turBO, 21.03.2009 в 02:42.
Сообщений: 130
Написано 3 полезных сообщений (для 35 пользователей)
Ответ: Простейшие FlashCard на Б3д
Спасибо, ребята... постараюсь переосмыслить. И уж если по-дурацки описал задачу - сорри...Но уж ничерта не понимаю.мозг отказал. Староват я стал для простейших задач. Просто приложу в аттач.
зы. увы, A.bmp, B.bmp, C.bmp... Z.bmp не подходят.. не латиница, да и хотелось бы не ограничивать себя ею.
Сообщений: 130
Написано 3 полезных сообщений (для 35 пользователей)
Ответ: Простейшие FlashCard на Б3д
Пока сделал так. Потом добью саму угадайку. Так чтоб одна картинка - несколько ответов. Потом перенесу в 3д сделаю эффекты и т.п.. Но это все потом - зачет по согласным в понедельник. Буду пока учить так. Времени нет.
зы. там 76 букв. И все надо именно запомнить. Жопа =)
SeedRnd MilliSecs()
Graphics3D(800,300,32,2)
fntArial=LoadFont("Arial",17,True)
; Установить шрифт и напечатать текст
SetFont fntArial
cam = CreateCamera()
MoveEntity cam,0,0,-5
dir$ = "2"
Global cnt = 0
Global f$
e = ReadFile(dir+"/myfile1.txt")
While Not Eof(e)
ReadLine(e)
cnt = cnt +1
Wend
CloseFile(e)
DebugLog cnt
Dim symbols$(cnt)
Dim images(cnt)
Dim tex(cnt)
e = ReadFile(dir+"/myfile1.txt")
ci = 1
While Not Eof(e)
symbols(ci) = ReadLine(e)
images(ci) = LoadImage(dir+"/"+ci+".jpg")
DebugLog ci+":"+images(ci)
ci = ci +1
Wend
CloseFile(e)
Global varcnt =5
Global cv = 0
Dim vars(5)
Dim varsindex(5)
.label1
GetRandomVariant()
While Not KeyDown(1)
Cls
Print symbols(index)
DrawCards()
Flip
RenderWorld
WaitKey
Goto label1
Wend
Function GetRandomVariant()
vars(1) = Rand(1,cnt-1)
vars(2) = Rand(1,cnt-1)
vars(3) = Rand(1,cnt-1)
vars(4) = Rand(1,cnt-1)
vars(5) = Rand(1,cnt-1)
vars(6) = Rand(1,cnt-1)
End Function
Function DrawCards()
For i = 1 To 6
index = vars(i)
img = images(index)
DrawImage img,i*140-140,100
f$=symbols(index)
Text i*140-90,200,f$,True,False
Next
End Function
Если у кого есть идеи - пуляйте... =)))
Зы. HolyDel, спасибо большое. Мало что понял, кое-как сделал вывод самих слов. Однако, я думал как-то проще это делается.
зы.зы. не ругайте за гото, уж забыл как правильно надо.
Последний раз редактировалось Chuma, 21.03.2009 в 22:18.