Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D

Ответ
 
Опции темы
Старый 21.03.2009, 01:50   #1
Chuma
ПроЭктировщик
 
Регистрация: 23.11.2006
Сообщений: 130
Написано 3 полезных сообщений
(для 35 пользователей)
Простейшие FlashCard на Б3д

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

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


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

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

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

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

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

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

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

зызы.. стыдоба... ПРосто срочно надо. ППЦ.
(Offline)
 
Ответить с цитированием
Старый 21.03.2009, 02:25   #2
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 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
пока все.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Chuma (21.03.2009)
Старый 21.03.2009, 02:33   #3
turBO
ПроЭктировщик
 
Аватар для turBO
 
Регистрация: 02.03.2007
Сообщений: 194
Написано 65 полезных сообщений
(для 168 пользователей)
Ответ: Простейшие FlashCard на Б3д

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

По поводу файлов картинок: не проще их проназывать A.bmp, B.bmp, C.bmp... Z.bmp? Тогда отпадёт необходимость сопоставления буквы с файлом картинки.
__________________
— Скажи мне, что это не бомба.
— Хорошо. Это котенок. Замечательный взрывной котенок.

Последний раз редактировалось turBO, 21.03.2009 в 02:42.
(Offline)
 
Ответить с цитированием
Старый 21.03.2009, 03:39   #4
Chuma
ПроЭктировщик
 
Регистрация: 23.11.2006
Сообщений: 130
Написано 3 полезных сообщений
(для 35 пользователей)
Ответ: Простейшие FlashCard на Б3д

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

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


зы. бл*ха-муха, ребята респект. Бум думать.
Вложения
Тип файла: zip 2.zip (39.3 Кб, 340 просмотров)
(Offline)
 
Ответить с цитированием
Старый 21.03.2009, 03:47   #5
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Простейшие FlashCard на Б3д

нипонский?

в таком расположении данных даже проще
читаешь с файла
e = readfile("mydata1.txt")
ci = 1
while not eof(e)
symbol(ci)=readline(e)
texture(ci)=loadtexture(ci+".bmp")
ci++
wend
все. данные в памяти. а там с ними уже всяко попроще будет сладить.
(Offline)
 
Ответить с цитированием
Старый 21.03.2009, 15:28   #6
Chuma
ПроЭктировщик
 
Регистрация: 23.11.2006
Сообщений: 130
Написано 3 полезных сообщений
(для 35 пользователей)
Ответ: Простейшие FlashCard на Б3д

Нее. тайский.

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

symbol(ci)=readline(e)

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

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

Последний раз редактировалось Chuma, 21.03.2009 в 15:44.
(Offline)
 
Ответить с цитированием
Старый 21.03.2009, 16:27   #7
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Простейшие FlashCard на Б3д

яж говорю - cnt считать до этого.
можно так:
cnt = 0
e=readfile(e)
while not eof
readline(e)
cnt=cnt+1
wend
dim symbols$(cnt)
dim textures(cnt)

потом уже тот кусок (предыдущий)
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Chuma (21.03.2009)
Старый 21.03.2009, 17:53   #8
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Простейшие FlashCard на Б3д

вот, набросал пример загрузки и отображения. простейший.
Вложения
Тип файла: zip 2.zip (80.8 Кб, 333 просмотров)
(Offline)
 
Ответить с цитированием
Старый 21.03.2009, 18:47   #9
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Простейшие FlashCard на Б3д

Прошу прощения за оффтоп, это чего за язык такой? (Против малых народов ничего не имею, просто ни разу не видел такого, интересно стало)
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 21.03.2009, 21:00   #10
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Простейшие FlashCard на Б3д

Тайланд знаешь? еще реклама была - столица Тайланда - Бангкок.
(Offline)
 
Ответить с цитированием
Старый 21.03.2009, 21:08   #11
NitE
злобный флудер
 
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений
(для 1,476 пользователей)
Ответ: Простейшие FlashCard на Б3д

Да, ещё возможно какаято часть твоего компьютера сделана в тайлньде ))
(Offline)
 
Ответить с цитированием
Старый 21.03.2009, 22:12   #12
Chuma
ПроЭктировщик
 
Регистрация: 23.11.2006
Сообщений: 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.
(Offline)
 
Ответить с цитированием
Старый 21.03.2009, 22:12   #13
Chuma
ПроЭктировщик
 
Регистрация: 23.11.2006
Сообщений: 130
Написано 3 полезных сообщений
(для 35 пользователей)
Ответ: Простейшие FlashCard на Б3д

Малый народ? сильно =)

зы... Учусь я.
(Offline)
 
Ответить с цитированием
Старый 21.03.2009, 22:14   #14
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Простейшие FlashCard на Б3д

Chuma у тебя одна очень серьезная ошибка - ты грузишь картинка в цикле. так нельзя.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Chuma (21.03.2009)
Старый 21.03.2009, 22:17   #15
Chuma
ПроЭктировщик
 
Регистрация: 23.11.2006
Сообщений: 130
Написано 3 полезных сообщений
(для 35 пользователей)
Ответ: Простейшие FlashCard на Б3д

ее там вообще не должно быть. поправил.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com