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

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

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

2D-программирование Вопросы, касающиеся двумерного программирования

Ответ
 
Опции темы
Старый 23.11.2006, 00:37   #1
JVSh
Оператор ЭВМ
 
Регистрация: 16.11.2006
Сообщений: 42
Написано одно полезное сообщение
(для 7 участников)
001,002,003...007

Всем привет... помогите с кодом!

В цикле нужно грузить имиджи из секвенции. Порядковые номера после имени идут с 001 до 050 (ну и до 100 и выше). Типа:

image_001.bmp
image_002.bmp
image_003.bmp
...................
image_052.bmp

Никак не соображу, как переменную в цикле подставлять, номер то не по порядку получается...

Можно конечно проверку сделать до первого десятка и первой сотни, но может есть путь поизящнее?
(Offline)
 
Ответить с цитированием
Старый 23.11.2006, 01:08   #2
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений
(для 996 пользователей)
Re: 001,002,003...007

делай названия файлов без нулей, так легче... и потом "image_"+str(i)+"bmp"... или можно процедуру дополнения нулями дописать... типа

на входе в i - номер файла, j - независимая и нигде не заюзенная переменная

s$="";
j=i
k=0
while j>0
j=int(j/10)
k=k+1;
wend

for j=1 to 3-k
s$=s$+"0"
next

и потом имя файла "image_"+s$+str(i)+"bmp"

(писал в броузере поэтому может не работать, но идея думаю ясна)
__________________
Как минимум я помог многим (с)
(Offline)
 
Ответить с цитированием
Старый 23.11.2006, 01:21   #3
JVSh
Оператор ЭВМ
 
Регистрация: 16.11.2006
Сообщений: 42
Написано одно полезное сообщение
(для 7 участников)
Re: 001,002,003...007

Спасибо!
Всё работает...

А переименовывать - муторно, тем более, что названия сгенерированы при рендеринге..
(Offline)
 
Ответить с цитированием
Старый 23.11.2006, 03:29   #4
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений
(для 996 пользователей)
Re: 001,002,003...007

еще можно как вариант

j=len(str(i))

for k=1 to 3-j
s$=s$+"0"
next

(c) Impersonalis

до меня чето не сразу дошел такой вариант... привык млин все через жопу писать
__________________
Как минимум я помог многим (с)
(Offline)
 
Ответить с цитированием
Старый 24.11.2006, 02:48   #5
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: 001,002,003...007

2 SubZero
тогда уж:
j=Len(Str(i))
For k=1 To 3-j
s$=s$+"0"
Next
s$=s$+Str(i)
(Offline)
 
Ответить с цитированием
Старый 24.11.2006, 20:13   #6
JVSh
Оператор ЭВМ
 
Регистрация: 16.11.2006
Сообщений: 42
Написано одно полезное сообщение
(для 7 участников)
Re: 001,002,003...007

Спасибо всем за помощь.
Сделал код для склеивания в strip из image sequence
файлы в имени должны содержать порядковые номера от 001,002 и т.п
Может кому и пригодится:
;=================================
;= Evgeny Shatohin by JVS©2006 =
;= Create strip-animation texture for Blitz3D =
;=================================
; Help
; Enter text in field "Path\Folder" (optional).
; Enter text in field "Prefix name" (example - file name
; "sea_001.bmp" - field prefix "sea_" ).
; Enter text in field "Extension" (example -file name
; "sea_ooq.bmp" - field extension "bmp").
; Enter text i fields "Frame count", "Width Picture",
; "Height Picture".
; Enter text in fielf "Name New Image" - The file with
; such name is kept in a program directory.
;
; Heading "View Example" appears near to an example
; of the loaded picture.
; 
; "Generate\Save" button - create and save new picture
; "New Create" button - clear all and start new project.
;=================================
Graphics3D 640,480,32,0
SetBuffer BackBuffer()
ClsColor 150,160,160
Global xsize,ysize,frame
Global inps=True
Global tex,terrx,fr=0,frc
Global dir$,nam$,ext$,saves$,stra$
Global font18,font20
Global CursPos=60
Global key
font18 = LoadFont("verdana", 18, 0, 0, 0)
SetFont font18
CreateNew()
.main
;================= Main Loop =====================
While Not KeyDown( 1 )
If fr<frame And frc=1 Then fr=MilliSecs()/50 Mod frame
key=GetKey()
If key Then KeyHits(key)
UpdateWorld
RenderWorld
DrawImages()
Flip
Wend
End
;============= Functions =================
Function SaveImages(dir$,nam$,ext$,saves$,frame,xsize,ysize)
terrx=CreateImage(xsize*frame,ysize)
SetBuffer ImageBuffer(terrx)
For i=1 To 40
s$=""
j=i
k=0
While j>0 
j=Int(j/10)
k=k+1
Wend
For j=1 To 3-k
s$=s$+"0"
Next
texa=LoadImage(dir$+nam$+s$+Str(i)+"."+ext$)
ResizeImage texa,xsize,ysize
DrawImage texa,i*xsize-xsize,0
Next
SaveImage(terrx,saves$+".bmp")
SetBuffer BackBuffer()
FreeImage tex
tex=LoadAnimImage (saves$+".bmp",xsize,ysize,0,Int(frame))
ResizeImage tex,96,96 
frc=1
End Function

 Function DrawImages()
Color 200,210,210
c=0
For i=1 To 6
If i>3 Then c=125 
Rect 300,20+i*40,250-c,25,1
Next
Rect 300,20+i*40,250,25,1
Rect 450,142+i*40,100,25,1
Rect 75,142+i*40,125,25,1
 
Color 50,60,60
Rect 5,5,630,470,0
Rect 8,8,624,464,0
 
Text 200,30,"Creator ANIMIMAGE ( JVSh©2006 )"
Text 80,60,"Path\Folders (optional)"
Text 80,100,"Prefix filename"
Text 80,140,"Extension"
Text 80,180,"Frame count"
Text 80,220,"Width picture"
Text 80,260,"Height picture"
Text 80,300,"Name New Image"
Text 80,425,"Generate\Save"
Text 455,425,"New Create"
If frc=1 Then Text 80,340,"View Example": Line 80,358,299,358: Color 50,60,60
 
Color 150,50,50
Text 305,60,dir$
Text 305,100,nam$
Text 305,140,ext$
Text 305,180,frame
Text 305,220,xsize
Text 305,260,ysize
Text 305,300,saves$
Color 50,60,60
 
For i=1 To 7
Line 80,38+i*40,299,38+i*40
Next
 
Rect 298,348,96+4,96+4,0
 
Color 150,50,50
If CursPos<320 Then Rect 295,CursPos,5,25,1
Color 50,60,60
TexFon()
DrawImage tex,300,350,fr
 
If MouseX()>450 And MouseY()>422 And MouseX()<500 And MouseY()<447
Color 255,255,255
Rect 450,422,100,25,1
Color 50,60,60
Text 455,425,"New Create"
If MouseHit(1) 
CreateNew() 
Color 50,60,60
EndIf
Else If MouseX()>75 And MouseY()>422 And MouseX()<200 And MouseY()<447
Color 255,255,255
Rect 75,422,125,25,1
Color 50,60,60
Text 80,425,"Generate\Save"
If MouseHit(1) 
SaveImages(dir$,nam$,ext$,saves$,Int(frame),xsize,ysize)
EndIf
EndIf
Color 150,50,50
Text 305,CursPos,stra$

End Function

 Function TexFon()
If frc=0
tex=CreateImage(96,96)
SetBuffer ImageBuffer(tex)
Color 200,210,210
Rect 0,0,96,96,1
For i=0To 96
cold=Rnd(150)
Color cold,cold,cold
Line 0,i,96,i
Next
SetBuffer BackBuffer()
ResizeImage tex,96,96 
EndIf
End Function
Function CreateNew()
Cls
stra$=""
Color 200,210,210
c=0
For i=1 To 6
If i>3 Then c=125 
Rect 300,20+i*40,250-c,25,1
Next
Rect 300,20+i*40,250,25,1
Rect 450,142+i*40,100,25,1
Rect 75,142+i*40,125,25,1
inps=1
CursPos=60
TexFon()
frc=0
fr=0
dir$=""
nam$=""
ext$=""
frame=""
xsize=""
ysize=""
saves$=""
Color 150,50,50
If CursPos<320 Then Rect 295,CursPos,5,25,1
 
End Function

 Function KeyHits(key)
If inps=1
Color 150,50,50
If key=13
If CursPos=60 Then dir$=stra$ : stra$=""
If CursPos=100 Then nam$=stra$ : stra$=""
If CursPos=140 Then ext$=stra$ : stra$=""
If CursPos=180 Then frame=stra$ : stra$=""
If CursPos=220 Then xsize=stra$ : stra$=""
If CursPos=260 Then ysize=stra$ : stra$=""
If CursPos=300 Then saves$=stra$ : stra$="" : inps=False : CursPos=300: SaveImages(dir$,nam$,ext$,saves$,Int(frame),xsize,ysize)
CursPos= CursPos+40
Else If key>32
stra$=stra$+Chr$(key)
If CursPos=60 Then dir$=stra$
If CursPos=100 Then nam$=stra$
If CursPos=140 Then ext$=stra$
If CursPos=180 Then frame=stra$
If CursPos=220 Then xsize=stra$
If CursPos=260 Then ysize=stra$
If CursPos=300 Then saves$=stra$
EndIf
EndIf
Color 50,60,60
End Function
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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