|
آموزش ساخت بازی سه بعدی به زبان Basic با دارک بیسیک Dark Basic تهیه و آموزش نرم افزار دارک بیسیک |
|||
|
یکشنبه 15 اردیبهشت 1392 :: 02:00 :: نويسنده : darkbasic
با استفاده از دستورات این فصل می توانیم صفحاتی متشکل از شبکه های ( مستطیل شکل ) گوشه دار بسازیم . همچنین می توانیم لبه های میان شبکه های داخل ماتریکس را به مقدار دلخواه بالا و پایین ببریم و به تک تک شبکه های ماتریکس عکس بچسبانیم . طول و عرض کل شبکه و تعداد شبکه های طولی و عرضی داخل را ما مشخص کنیم . از ماتریکس ها می توان برای ایجاد کوه ، تپه ، غار و ناهمواری های مختلفی استفاده کرد . دستور MAKE MATRIX
با این دستور می توانیم صفحه ای مشبک بسازیم . مانند دستورالعمل زیر :
MAKE MATRIX MatrixNumber,Width,Height,XSegments,ZSegments
طبق این دستورالعمل به جای MatrixNumber شماره ی ماتریکس و به جای Width طول و به جای Height عرض ماتریک و به جای XSegments تعداد شبکه های تشکیل دهنده ی طولی و به جای ZSegments تعدا شبکه های تشکیل دهنده ی عرضی را قرار می دهیم . مانند مثال زیر :
Make Matrix 1,500,250,25,10
Position Camera 250,150,-300
Wait Key
در این مثال ماتریکسی با شماره ی یک ( نام 1 ) با طول 500 و عرض 250 و با تعداد 25 شبکه ی طولی و 10 شبکه ی عرضی ( 250=10*25 ) ، در مجموع 250 شبکه ی داخلی در آن ایجاد شد .
تابع MATRIX EXIST
این تابع بررسی می کند که آیا ماتریکس مورد نظر وجود دارد یا خیر .
اگر ماتریکس مورد نظر وجود داشت ، تابع ()Matrix Exist مقدار یک و اگر وجود نداشت تابع ()Matrix Exist مقدار صفر را برمی گرداند . مانند مثال زیر :
Make Matrix 2,10,10,3,3
Do
(A = Matrix Exist(2
(Text 10,10,Str$(A
Loop
دستور DELETE MATRIX
این دستور ماتریکس مورد نظر را حذف می کند . مانند مثال زیر :
Make Matrix 2,1000,500,10,20
Make Matrix 4,250,350,7,8
Delete Matrix 2
Wait Key
در این مثال ماتریکس شماره ی 2 حذف شد .
دستور POSITION MATRIX
با این دستور می توانیم موقعیت مکانی ماتریکس مورد نظر را در فضای سه بعدی مشخص کنیم . مانند دستورالعمل زیر :
Make Matrix 7,500,250,25,10
Position Camera 250,150,-300
Wait 1500
Position Matrix 7,50,50,0
Wait Key
تابع MATRIX POSITION X و تابع MATRIX POSITION Y و تابع MATRIX POSITION Z
تابع ()MATRIX POSITION X فصله ی ماتریکس تا محور X مختصات و تابع ()MATRIX POSITION Y فاصله ی ماتریکس تا محور Y مختصات و تابع ()MATRIX POSITION Z فاصله ی ماتریکس تا محور Z مختصات فضای سه بعدی را برمی گرداند . مانند مثال زیر :
Make Matrix 5,500,250,25,10
Position Camera 250,150,-300
Position Matrix 5,10,50,70
(X = Matrix Position X(5
(Y = Matrix Position Y(5
(Z = Matrix Position Z(5
Do
(Text 10,10,Str$(X
(Text 10,30,Str$(Y
(Text 10,50,Str$(Z
Loop
نکته : زمانی که اشیاء ساده ی سه بعدی را ایجاد می کردیم .نقطه ی لولایی شیء به نام پایوت ( Pivot نقطه ای در جسم می باشد که موحور X و Y و Z آن شیء در آن نقطه همدیگر را قطع می کنند ) معمولا در وسط جسم وجود داشت و پایوت اشیاء پیچیده ی سه بعدی بنا به طراحشان در موقعیت خاصی در فضای آن جسم گذاشته می شود و در ماتریکس نقطه ی پایوت در پائین و چپ جسم قرار دارد . ما در مثال زیر موقعت یک جعبه و یک ماتریکس را در نقطه ی X=0 و Y=0 و Z=0 قرار می دهیم تا پایوت هر دو در یک نقطه مشخص شود .
Make Matrix 4,500,500,25,25
Make Object Box 2,10,10,10
Position Matrix 4,0,0,0
Position Object 2,0,0,0
Position Camera 0,100,-250
Wait Key
دستور SET MATRIX HEIGHT
با این دستور می توانیم هر یک از گوشه های بین شبکه های موجود در ماتریکس را به تنهایی بالا و یا پائین بکشیم . مانند مثال زیر :
MatrixNumber=4
Make Matrix MatrixNumber,500,250,25,10
Position Camera 250,150,-300
SET MATRIX HEIGHT MatrixNumber,1,2,20
Update Matrix MatrixNumber
Wait Key
در این مثال گوشه ای با مختصات 1و2 به مقدار 20 واحد بالا کشیده شد . یعنی اگر گوشه ها در طول ( از پائین و چپ ) به سمت راست با شماره ی صفر شروع ، و در عرض ( از پائین و چپ ) به سمت بالا با شماره ی صفر شروع شده باشند ( شمرده شوند ) . مختصات 1و2 یعنی گوشه ی دوم از چپ و سوم از پائین به مقدار 20 واحد به بالا کشیده شده .
در مثال بالا از دستور Update Matrix هم استفاده کردیم تا تغیرات بوجود آمده در ماتریکس اعمال شود .
با اجرای مثال زیر و با استفاده از دکمه های جهت ، موقعت گوشه ی مورد نظر در ماتریکس را مشخص و با استفاده از دکمه های A و Z آن گوشه را بالا و یا پائین می کشیم .
MatrixNumber=4
Make Matrix MatrixNumber,500,250,25,10
Position Camera 250,150,-300
Sync On : Sync Rate 30
Do
(Text 10,10,"X = "+Str$(X
(Text 10,30,"Y = "+Str$(Y
(Text 10,50,"Height = "+Str$(H
If Upkey()=1 Then Inc Y
If Downkey()=1 Then Dec Y
If Rightkey()=1 Then Inc X
If Leftkey()=1 Then Dec X
If X < 0 Then X = 0
If X > 25 Then X = 25
If Y < 0 Then Y = 0
If Y > 10 Then Y = 10
If Inkey$()="A" Or Inkey$()="a" Then Inc H
If Inkey$()="Z" Or Inkey$()="z" Then Dec H
If H<-300 Then H=-300
If H>300 Then H=300
SET MATRIX HEIGHT MatrixNumber,X,Y,H
Update Matrix MatrixNumber : Sync
Loop
دستور RANDOMIZE MATRIX
این دستور تمام گوشه های بین شبکه ماتریکس را به مقدار یک عدد تصادفی بالا می کشد . مانند دستورالعمل زیر :
RANDOMIZE MATRIX MatrixNumber,MaximumHeight
طبق این دستورالعمل به جای MatrixNumber نام ماتریکس مورد نظر و به جای MaximumHeight بیشترین بالا آمدن گوشه ها را قرار می دهیم . یعنی هر گوشه ای به اندازه ای بالا می آید و بیشترین مقدار بالا آمدن گوشه ها را مقدار MaximumHeight بصورت یک عدد تصادفی بیک یک تا MaximumHeight تعیین می کند . مانند مثال زیر :
Make Matrix 3,500,250,25,10
Position Camera 250,150,-300
Randomize MATRIX 3,20
Update Matrix 3
Do
Loop
تابع GET MATRIX HEIGHT
این تابع ارتفاع هر گوشه در ماتریکس را برمی گرداند . مانند مثال زیر :
MatrixNumber=4
Make Matrix MatrixNumber,500,250,25,10
Position Camera 250,150,-300
SET MATRIX HEIGHT MatrixNumber,10,7,12
SET MATRIX HEIGHT MatrixNumber,0,0,-5
Update Matrix MatrixNumber
Do
X=10
Y=7
(H=Get Matrix Height(MatrixNumber,X,Y
(Text 10,10,"X= "+Str$(X)+" , Y = "+Str$(Y)+" And Height = "+Str$(H
Loop
دستور PREPARE MATRIX TEXTURE
با این دستور می توانیم بر روی تمامی شبکه های موجود در ماتریکس یک عکس بچسبانیم . مانند دستورالعمل زیر :
PREPARE MATRIX TEXTURE MatrixNumber,ImageNumber,Across,Down
طبق این دستورالعمل به جای MatrixNumber شماره ی ماتریکس مورد نظر و به جای ImageNumber شماره ی تصویر مورد نظر و به جای Across عدد یک و به جای Down عدد یک را قرار می دهیم . مانند مثال زیر :
Load Image "C:\Program Files\Dark Basic Software\Dark Basic Professional\Demos\CShop\textures\misc\Caulk.tga",1
Make Matrix 3,500,250,5,2
Position Camera 250,70,-300
Randomize MATRIX 3,20
PREPARE MATRIX TEXTURE 3,1,1,1
Update Matrix 3
Do
Control Camera Using Arrowkeys 0,1,1
Loop
با استفاده از دکمه های جهت می توانیم حول ماتریکس گردش کنیم .
درباره وبلاگ به وبلاگ من خوش آمدید موضوعات آرشيو وبلاگ پيوندها نويسندگان |
|||
|
|
نام کاربری یا ایمیل خود را وارد کنید
کد ۶ رقمی ارسالشده به ایمیل و رمز عبور جدید را وارد کنید.
در چند ثانیه حساب کاربری خود را بسازید
دیدگاه خود را با ما در میان بگذارید
ورود کاربران
خوش آمدید! لطفا وارد حساب خود شوید