подскажите с диалогами
|
|
Naom | Дата: Понедельник, 23 Июня 2008, 17:54 | Сообщение # 1 |
Начинающий
Группа: Пользователи
Сообщений: 22
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
| Люди подскажите как луче и как надо создать диалоги типа 2д игр (когда рисунок перса слева, а справа текст по буквам выводиться) вообщем у как у меня: загружаю файл, в нем 001<Текст>, где, все до "<" - ИД по которому определяю чей это текст (нпс или перса), далее с помошью команды mid я по буквам вывожу мой текст, но появляецца проблема, когда текст слишком длиный, надо чтоб в определенном моменте когда выводиться текст, прыгал на новую строчку... как это сделать если юзаю text x,y,txt?
|
|
| |
Naom | Дата: Понедельник, 23 Июня 2008, 18:28 | Сообщение # 2 |
Начинающий
Группа: Пользователи
Сообщений: 22
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
| чтот я тебя не понял, а len зачем тогда? =) я юзаю: Code for i=1 to len(my_text$) vivod_texta$=mid(my_text$,1,i) next
text 10,10,vivod_texta$ допустим мой текст - 50 символов, а текст выводит на экран макс на одной линии 30 симв, то по моим соображениям должно быть примерно где-то так: Code for i=1 to len(my_text$) if i<30 then vivod_texta$=mid(my_text$,1,i) else тут хз че писать... ступарюсь на этом месте... endif next
text 10,10,vivod_texta$
Сообщение отредактировал Naom - Понедельник, 23 Июня 2008, 18:29 |
|
| |
Naom | Дата: Понедельник, 23 Июня 2008, 19:00 | Сообщение # 3 |
Начинающий
Группа: Пользователи
Сообщений: 22
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
| мм вы меня не поняли.. как сделать так, автоматизировалося функция... в коде чтоб писал... if pos_x_pl=xn then if keyhit(28) then event(001) endif endif function event(ev) if ev=100 then text 100,100,"sadasd" endif end function типо того чтоб автоматом переходила на новую строку
Сообщение отредактировал Naom - Понедельник, 23 Июня 2008, 19:00 |
|
| |
Naom | Дата: Вторник, 24 Июня 2008, 12:25 | Сообщение # 4 |
Начинающий
Группа: Пользователи
Сообщений: 22
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
| HolyDel, спасибо за код =) но получаецца как-то не красиво.. Code Graphics3D 800,600,0,2 SetBuffer BackBuffer()
c=CreateCamera()
Txt$=""
MoveMouse 300,240 While Not KeyDown(1)
UpdateWorld RenderWorld
If KeyDown(28) Then i=i+1 EndIf
If i<5 Then i=i+1 Else txt$=txt$+0 i=0 EndIf
w=MouseX()-200 If w>10 Color 25,25,25 Rect(200,100,w,400) Color 250,250,250 WrapText(txt$,200,100,w,0) EndIf
Flip
Wend
Function WrapText(txt$,x,y,width,align=0)
If StringWidth(txt)>width b=1 e=1 c_s = StringWidth("!!!"); While e<Len(txt) e=e+1 If StringWidth(Mid(txt,b,e-b+1))>width-c_s Or Asc(Mid(txt,e,1))=13 If Asc(Mid(txt,e,1))=13 Then e=e-1 Text x+(width/2)*align,y,Mid(txt,b,e-b+1),align y=y+StringHeight("!")+2 If Asc(Mid(txt,e+1,1))=13 Then e=e+2 b=e EndIf Wend Else Text(x+(width/2)*align,y,txt$,align) EndIf
End Function попробуй этот код, и увидишь, когда доходит до края... текст дальше по буквам не появляетья, +резко выводиться в случае если вторая строка снова доходит до края
|
|
| |
Robat64 | Дата: Вторник, 24 Июня 2008, 13:22 | Сообщение # 5 |
![Robat64](http://igrostroenie.my1.ru/avatar/61/818594.jpg) Продвинутый
Группа: Участники
Сообщений: 153
Награды: 0
Замечания: 20%
Статус: ![](/on.gif)
| Code Graphics3D 800,600,0,2 SetBuffer BackBuffer()
c=CreateCamera()
Txt$=""
MoveMouse 300,240 While Not KeyDown(1)
UpdateWorld RenderWorld
If KeyDown(28) Then i=i+1 EndIf
If i<5 Then i=i+1 Else txt$=txt$+0 i=0 EndIf
w=MouseX()-200 If w>10 Color 25,25,25 Rect(200,100,w,400) Color 250,250,250 WrapText(txt$,200,100,w,0) EndIf
Flip 0
Wend
Function WrapText(txt$,x,y,width,align=0)
If StringWidth(txt)>width txt$=txt$+0+Chr(13) b=1 e=1 c_s = StringWidth("!!!"); While e<Len(txt) e=e+1 If StringWidth(Mid(txt,b,e-b+1))>width-c_s Or Asc(Mid(txt,e,1))=13 If Asc(Mid(txt,e,1))=13 Then e=e-1 Text x+(width/2)*align,y,Mid(txt,b,e-b+1),align y=y+StringHeight("!")+2 If Asc(Mid(txt,e+1,1))=13 Then e=e+2 b=e EndIf Wend Else Text(x+(width/2)*align,y,txt$,align) EndIf
End Function Вот так
|
|
| |
Naom | Дата: Вторник, 24 Июня 2008, 13:50 | Сообщение # 6 |
Начинающий
Группа: Пользователи
Сообщений: 22
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
| оо спасибо!! теперь работает так как мне нада =)))))
|
|
| |
Robat64 | Дата: Вторник, 24 Июня 2008, 14:55 | Сообщение # 7 |
![Robat64](http://igrostroenie.my1.ru/avatar/61/818594.jpg) Продвинутый
Группа: Участники
Сообщений: 153
Награды: 0
Замечания: 20%
Статус: ![](/on.gif)
|
|
|
| |
Naom | Дата: Вторник, 24 Июня 2008, 15:57 | Сообщение # 8 |
Начинающий
Группа: Пользователи
Сообщений: 22
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
| Вот что у меня получилось =)) типа скрипты: Code Graphics3D 800,600,0,2 SetBuffer BackBuffer()
fntArialB=LoadFont("Arial Cyr",18,True) SetFont fntArialB
c=CreateCamera()
Txt$=""
Global l_txt$=" " Global t_len,i,txt1$,n_sw$,pr$ Global ev_switch=0
n_sw$="T01"
MoveMouse 300,240 While Not KeyDown(1)
UpdateWorld RenderWorld
Color 50,50,50 Rect 200,100,300,100
Color 255,255,255
If ev_switch=1 Then event(n_sw$) Else clear() EndIf
If KeyHit(28) Then If ev_switch=0 ev_switch=1 EndIf
If KeyDown(28) And ev_switch=1 Then i=i+2 EndIf
Text 0,0,pr$
Flip
Wend
Function clear() t_len=0 txt1$="" End Function
Function event(n_ev$) filein = ReadFile("1.txt")
While Not Eof(filein) ll$= ReadLine$( filein ) If Left(ll$,3)=n_ev$ Then If Right(ll$,3)="END" ev_switch=0 l_txt$=Mid(ll$,5,Len(ll$)-8) pr$=Right(ll$,3) EndIf Wend CloseFile(filein)
If t_len<Len(l_txt$) Then If i<5 Then i=i+1 Else t_len=t_len+1 txt1$=txt1$+Mid(l_txt$,t_len,1) i=0 EndIf EndIf If t_len=>Len(l_txt$) If KeyHit(28) Then n_sw$=pr$ clear() EndIf EndIf WrapText(txt1$,200,100,300,0)
End Function
Function WrapText(txt$,x,y,width,align=0)
If StringWidth(txt)>width txt$=txt$+Chr(13) b=1 e=1 c_s = StringWidth("!!!"); While e<Len(txt) e=e+1 If StringWidth(Mid(txt,b,e-b+1))>width-c_s Or Asc(Mid(txt,e,1))=13 If Asc(Mid(txt,e,1))=13 Then e=e-1 Text x+(width/2)*align,y,Mid(txt,b,e-b+1),align y=y+StringHeight("!")+2 If Asc(Mid(txt,e+1,1))=13 Then e=e+2 b=e EndIf Wend Else Text(x+(width/2)*align,y,txt$,align) EndIf End Function в 1.тхт обязательно должен присутствовать: 000< >END что у мя в 1.тхт: 000< >END T01<Кронос, скорее бежим пока нас не нашли и не убили!>T02 T02<Ау.. ты что неслышишь?>T03 T03<Кажись он уснул =(>000 т.е. конец диалога эт 000 =) ща попытаюсь сделать такое ID@image@<text>@go_to_env
Сообщение отредактировал Naom - Вторник, 24 Июня 2008, 15:58 |
|
| |
Naom | Дата: Вторник, 24 Июня 2008, 16:33 | Сообщение # 9 |
Начинающий
Группа: Пользователи
Сообщений: 22
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
| та я чет не могу разобраться в этом с++, простое 3д окно создать не могу не говоря уже об объектах типа куб =))
|
|
| |
Naom | Дата: Вторник, 24 Июня 2008, 17:41 | Сообщение # 10 |
Начинающий
Группа: Пользователи
Сообщений: 22
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
| стоп, что достаточно написать такое? Code #include <iostream> #include <sigel/ISigel.h>
using namespace std;
int main { sGAME //старт игры { InitDemo(); //иницаилизация демки. //в этом случае появляется окошко где можно выбрать //разрешение, глубину цввета и режим - полноэкранный или нет AppTitle("My First Program"); //Изменение заголовка окна на "My First Program" Font f("Tahoma",16,1); //Загружаем шрифт (тахома, размер - 16, полужирный) VWait(0); //отключаем вертикальную синхронизацию while(!KeyDown(VK_ESCAPE)) //пока не нажата ескейп { Render(); //рендерим мир f.Text(GetFPS(),20,20); //выводим фпс (тахомой 16) //GetFPS() - встроенная функция движка Flip(); //переключаем екраны } DeInit(); //обязательно удаляем все что насоздавали } } ?? я нуб в с++ =)
|
|
| |
Студент | Дата: Вторник, 24 Июня 2008, 17:53 | Сообщение # 11 |
Группа: Гости
| Да. если поставлен sigel, то достаточно етого напсиать. Я пока примеры показываю а двиг в свободный доступ не кладу - ибо кривой он. в приват - пожалуйста.
|
|
| |
Naom | Дата: Вторник, 24 Июня 2008, 18:04 | Сообщение # 12 |
Начинающий
Группа: Пользователи
Сообщений: 22
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
| HolyDel, #include <iostream> это ж win32, использую MVisual Studio C++ 2005 Студент, а как те в приват написать? =) не отказался б от такого двига =)
|
|
| |
Naom | Дата: Среда, 25 Июня 2008, 12:22 | Сообщение # 13 |
Начинающий
Группа: Пользователи
Сообщений: 22
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
| Вот затестируйте, написал вторую версию своих диалогов =)) как по мне вроде кульно, ваше мнение? =))
Сообщение отредактировал Naom - Среда, 25 Июня 2008, 12:57 |
|
| |
Прохожий | Дата: Среда, 25 Июня 2008, 16:58 | Сообщение # 14 |
Группа: Гости
| Прикольно получилось, продолжай в том же духе!
|
|
| |