forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Простейшие FlashCard на Б3д (http://forum.boolean.name/showthread.php?t=8028)

Chuma 21.03.2009 01:50

Простейшие FlashCard на Б3д
 
Доброе время суток, уважаемые форумчане...
Уф, как в родной дом вернулся. =) Более 2-х лет прошло...
Сейчас, пока появилось время решил понемногу помучать мозг, а человечество лучше программирования еще не придумало ничего для оного процесса.

На проЭкты меня уже не тянет, а вот маленькие программки клепать - это по мне... Хотя, чем черт не шутит...


Итак, господа, думаю многие из вас встречались с такой штукой как FlashCard. Сразу скажу что это простейшие карточки с нарисованными на них Буквами или картинками, на другой стороне которых нарисован ответ. И нужно просто угадать. =) Очень полезная штука для детей и изучения иностранных языков.

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

Итак задача:
- n букв картинок (лежат пронумерованные от 1 до n+1 в папке программы)
- текстовик с n названиями букв (в одну строку, разделенные неким спецсимволом)
- следует рандомом грузить одно из них и выводить 5 рандомных названий (одно из которых правильное)
- при неправильном убирать одно из названий
- при правильном показывать следующую. И до посинения.

может будет статистика и т.п.

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

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

Зы. не обижайтесь и не называйте ламером... Уж больно много всего пропустил и забыл. Вот и хочу понемногу наверстать.
Поделитесь своими идеями.. ну или примерами. Или просто отошлите к тому что моно почитать =)

зызы.. стыдоба... ПРосто срочно надо. ППЦ.

HolyDel 21.03.2009 02:25

Ответ: Простейшие 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

пока все.

turBO 21.03.2009 02:33

Ответ: Простейшие FlashCard на Б3д
 
До посинения показывать картинки не нужно :-)
Вообще, обучающие программы должны включать набор неких правил и систему контроля над их прохождением.
По этому поводу у меня конструктивные предложения:
- необходимо сообщать пользователю верным или нет был его ответ
- ограничить кол-во попыток\неверных ответов
- выводить номер вопроса + сколько осталось ещё вопросов до конца блока\раздела
- давать результирующую оценку\рекоммендации

По поводу файлов картинок: не проще их проназывать A.bmp, B.bmp, C.bmp... Z.bmp? Тогда отпадёт необходимость сопоставления буквы с файлом картинки.

Chuma 21.03.2009 03:39

Ответ: Простейшие FlashCard на Б3д
 
Вложений: 1
Спасибо, ребята... постараюсь переосмыслить. И уж если по-дурацки описал задачу - сорри...Но уж ничерта не понимаю.мозг отказал. Староват я стал для простейших задач. Просто приложу в аттач.

зы. увы, A.bmp, B.bmp, C.bmp... Z.bmp не подходят.. не латиница, да и хотелось бы не ограничивать себя ею.


зы. бл*ха-муха, ребята респект. Бум думать.

HolyDel 21.03.2009 03:47

Ответ: Простейшие FlashCard на Б3д
 
нипонский?

в таком расположении данных даже проще
читаешь с файла
Код:

e = readfile("mydata1.txt")
ci = 1
while not eof(e)
symbol(ci)=readline(e)
texture(ci)=loadtexture(ci+".bmp")
ci++
wend

все. данные в памяти. а там с ними уже всяко попроще будет сладить.

Chuma 21.03.2009 15:28

Ответ: Простейшие FlashCard на Б3д
 
Нее. тайский.

"
symbol(ci)=readline(e)
texture(ci)=loadtexture(ci+".bmp")
ci++
"

symbol(ci)=readline(e)

Array index out of bounds - ругаиццо... Никак не могу понять , в массиве же нужно указать кол-во элементов, а причем тут cnt?

Туплю короче...
в асю случаем не выйдешь?

HolyDel 21.03.2009 16:27

Ответ: Простейшие FlashCard на Б3д
 
яж говорю - cnt считать до этого.
можно так:
Цитата:

cnt = 0
e=readfile(e)
while not eof
readline(e)
cnt=cnt+1
wend
dim symbols$(cnt)
dim textures(cnt)

потом уже тот кусок (предыдущий)

HolyDel 21.03.2009 17:53

Ответ: Простейшие FlashCard на Б3д
 
Вложений: 1
вот, набросал пример загрузки и отображения. простейший.

ABTOMAT 21.03.2009 18:47

Ответ: Простейшие FlashCard на Б3д
 
Прошу прощения за оффтоп, это чего за язык такой? (Против малых народов ничего не имею, просто ни разу не видел такого, интересно стало)

HolyDel 21.03.2009 21:00

Ответ: Простейшие FlashCard на Б3д
 
Тайланд знаешь? еще реклама была - столица Тайланда - Бангкок.

NitE 21.03.2009 21:08

Ответ: Простейшие FlashCard на Б3д
 
Да, ещё возможно какаято часть твоего компьютера сделана в тайлньде ))

Chuma 21.03.2009 22:12

Ответ: Простейшие 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:12

Ответ: Простейшие FlashCard на Б3д
 
Малый народ? сильно =)

зы... Учусь я.

HolyDel 21.03.2009 22:14

Ответ: Простейшие FlashCard на Б3д
 
Chuma у тебя одна очень серьезная ошибка - ты грузишь картинка в цикле. так нельзя.

Chuma 21.03.2009 22:17

Ответ: Простейшие FlashCard на Б3д
 
ее там вообще не должно быть. поправил.


Часовой пояс GMT +4, время: 22:38.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot