|
آموزش ساخت بازی سه بعدی به زبان Basic با دارک بیسیک Dark Basic تهیه و آموزش نرم افزار دارک بیسیک |
|||
|
یکشنبه 01 اردیبهشت 1392 :: 01:46 :: نويسنده : darkbasic
این فصل پرمطلب ترین فصل وبلاگ می باشد . و شامل دستوراتی سه بعدی برای ایجاد ، حذف و تغییرات بر روی اشیای ساده و پیچیده ی سه بعدی می باشد .
مختصات سه بعدی به دنیای سه بعدی خوش آمدین . مختصات سه بعدی در محیط دارک بیسیک شباهت زیادی به دنیای واقعی ما دارد . یعنی مختصات سه بعدی شامل سه محور اصلی X و Y و Z است . سیستم مختصات سه بعدی در BarkBASIC بصورت شکل زیر می باشد .
در این شکل محور X ها طول و محور Y ها عرض و محور Z ها ارتفاع می باشد . یعنی زمانی که به مانیتور کامپیوتر نگاه می کنیم ، محور های مختصات سه بعدی بصورت شکل زیر است .
مطابق شکل ، محور X ها جهت چپ و راست و محور Y ها جهت بالا و پائین و محور Z ها به داخل و خارج از مانیتور ( عمود بر صفحه ی نمایشگر ) اشاره دارد . شکل زیر سه صفحه ی اصلی X-Y و X-Z و Y-Z را نشان می دهد .
هر جسم و یا نقطه ای در سیستم مختصات سه بعدی با هر یک از محور های X و Y و Z دارای یک فاصله منحصر به فرد می باشد . مانند نقطه ی P در شکل زیر :
در شکل بالا به ترتیب از چپ به راست ، فاصله ی نقطه ی P با هر کدام از محور ها نشان داده شده است . مختصات نقطه ای که در تقاطع این سه محور وجود داشته باشد ( 0 و 0 و 0 ) می باشد . یعنی X آن برابر صفر و Y آن برابر صفر و Z آن برابر صفر است یا می توان گفت ( X = 0 , Y = 0 , Z = 0 ) . ولی اگر مطابق شکل بالا فاصله ی نقطه ی P از محور X ها 10 و از محور Y ها 12 و از محور Z ها 14 در نظر بگیریم ، مختصات نقطه ی P برابر ( 14 و 12 و 10 ) خواهد بود .
آزمایش عملی در فضای سه بعدی : کدهای زیر را اجرا می کنیم . سپس موس را به بالا و پائین و چپ و راست حرکت می دهیم . همچنین می توانیم با حرکت چرخ مابین دکمه های موس به پایین و بالا ، در مجموع موقعیت یک کره را در مختصات سه بعدی تغییر دهیم .
Make Object Sphere 1,10 Position Camera 0,0,-300 Do (OPX = Object Position X(1 (OPY = Object Position Y(1 (OPZ = Object Position Z(1 ()MMX = MouseMoveX ()MMY = MouseMoveY ()MMZ = MouseMoveZ ()Position Object 1,OPX+MMX(),OPY+MMY()*-1,OPZ+MMZ (OSX=Object Screen X(1 (OSY=Object Screen Y(1 (If OBJECT IN SCREEN(1 "("+(Text OSX(1),OSY(1),"(X="+Str$(OPX)+",Y="+Str$(OPY)+",Z="+Str$(OPZ EndIf If OPX > 150 Then Position Object 1,150,OPY,OPZ If OPX < -150 Then Position Object 1,-150,OPY,OPZ If OPY > 150 Then Position Object 1,OPX,150,OPZ If OPY < -150 Then Position Object 1,OPX,-150,OPZ If OPZ > 240 Then Position Object 1,OPX,OPY,240 If OPZ < -240 Then Position Object 1,OPX,OPY,-240 Loop
فعلا با دستورات نوشته شده ی این کد ها کاری نداریم . فقط آنها را تایپ و اجرا می کنیم . با اجرای این مثال و حرکت موس و چرخ مابین کلید های آن ، مختصات این کره بر روی صفحه چاپ خواهد شد . یعنی با حرکت موس به بالا و پائین موقعیت Y و با حرکت موس به چپ و راست موقعیت X و با حرکت چرخ مابین دو کلید موس ، موقعیت Z کره تغییر خواهد کرد . البته ما حرکت کره را محدود کردیم ، تا از صفحه زیاد دور نشود .
نکته ی تکراری : برای اینکه طول بعضی از خطوط برنامه آن قدر بلند است که در عرض جا نمی شود ، ما تمام خطوطی که متعلق به یک خط در برنامه است را در این وبلاگ به رنگ نارنجی نوشتیم .
اشیاء سه بعدی در DarkBASIC : اشیاء سه بعدی در DarkBasic به دو بخش تقسیم می شوند . بخش اول ، اشیاء ساده و بخش دوم اشیاء پیچیده .
1- اشیاء ساده : اشیای ساده شامل جعبه ، کره ، مکعب ، مخروط و ... می باشند . مانند شکل زیر :
دستور MAKE OBJECT BOX این دستور جعبه سه بعدی می سازد . مانند دستورالعمل زیر :
MAKE OBJECT BOX ObjectNumber,Width,Height,Depth
طبق این دستورالعمل به جای ObjectNumber یک عدد در محدوده ی مثبت Integer یعنی یک تا 2,147,483,647 قرار می دهیم . در واقع با ایجاد هر شیء باید یک عدد نیز به آن اختصاص دهیم که به معنای نام آن شیء می باشد . با وجود این عدد که به معنی نام آن شیء است ، می توانیم در خطوط بعدی ، دستورات لازم را به شیء اعمال کنیم . یعنی توسط همین عدد ، شیء را تحت کنترل در بیاوریم . و به جای Width عرض و به جای Height ارتفاع و به جای Depth عمق جعبه را قرار می دهیم . مانند مثال زیر :
ObjectNumber = 1 Make Object Box ObjectNumber,10,20,30 Wait Key
با اجرای این مثال جعبه ای با عرض 10 و ارتفاع 20 و عمق 30 ایجاد خواهد شد .
نکته : ما نمی توانیم دو شیء را با یک عدد نامگذاری کنیم . مثلا اگر مثال زیر نوشته شود ، برنامه با خطا روبرو خواهد شد .
Make Object Box 2,10,5,30 Make Object Box 2,40,160,75
در این مثال ابتدا در خط اول یک جعبه ایجاد می شود ولی در خط دوم چون عدد اختصاصی به جعبه ی دوم توسط جعبه ی اول رزرو شده بود ، برنامه دچار خطا شد . یعنی به جای عدد 2 باید عدد دیگری قرار می دادیم . مثلا 5
دستور MAKE OBJECT CONE این دستور مخروط سه بعدی می سازد . مانند دستورالعمل زیر :
MAKE OBJECT CONE ObjectNumber,Size
طبق این دستورالعمل به جای ObjectNumber یک عدد برای نام مخروط و به جای Size سایز مخروط را قرار می دهیم . مانند مثال زیر :
Make Object Cone 2,10 Wait Key
دستور MAKE OBJECT CUBE این دستور مکعب سه بعدی ( جعبه ای که هر سطح آن مربع و به یک اندازه باشد ) می سازد . مانند دستورالعمل زیر :
MAKE OBJECT CUBE ObjectNumber,Size
طبق این دستورالعمل به جای ObjectNumber یک عدد برای نام مکعب و به جای Size سایز مکعب ( سایز هر ضلع آن ) را قرار می دهیم . مانند مثال زیر :
Make Object Cube 3,100 Wait Key
دستور MAKE OBJECT CYLINDER این دستور استوانه ی سه بعدی می سازد . مانند دستورالعمل زیر :
MAKE OBJECT CYLINDER ObjectNumber,Size
طبق این دستورالعمل به جای ObjectNumber یک عدد برای نام استوانه و به جای Size سایز استوانه ( قطر و ارتفاع استوانه هر دو به یک اندازه و به مقدار Size خواهند بود ) را قرار می دهیم . مانند مثال زیر :
Make Object Cylinder 3,70 Wait Key
دستور MAKE OBJECT PLAIN این دستور صفحه ای در فضا بشکل مستطیل می سازد . مانند دستورالعمل زیر :
MAKE OBJECT PLAIN ObjectNumber,Width,Height
طبق این دستورالعمل به جای ObjectNumber یک عدد برای نام صفحه و به جای Width عرض و به جای Height ارتفاع صفحه را قرار می دهیم . مانند مثال زیر :
Make Object Plain 70,10,10 Wait Key
دستور MAKE OBJECT SPHERE این دستور کره ی سه بعدی می سازد . مانند دستورالعمل زیر :
MAKE OBJECT SPHERE ObjectNumber,Size
طبق این دستورالعمل به جای ObjectNumber یک عدد برای نام کره و به جای Size اندازه ی قطر کره را قرار می دهیم . مانند مثال زیر :
Make Object Sphere 70,40 Wait Key
کره از سطوحی تشکیل شده است که با استفاده از دستورالعمل زیر می توانیم تعداد سطوح عمودی و افقی کره را تنظیم کنیم .
MAKE OBJECT SPHERE ObjectNumber,Size,Rows,Columns
طبق این دستورالعمل به جای ObjectNumber یک عدد برای نام کره و به جای Size اندازه ی قطر کره و به جای Rows تعداد سطوح افقی و به جای Columns تعداد سطوح عمودی کره را قرار می دهیم . مانند مثال زیر :
Make Object Sphere 1,40,10,10 Wait Key Make Object Sphere 2,40,30,30 Wait Key
با اجرای این مثال ابتدا یک کره با 10 سطح افقی و 10 سطح عمودی ساخته شد و با زدن یک کلید کره ی بعدی با 30 سطح افقی و 30 سطح عمودی ساخته شد . چون تعداد سطوح در کره ی دومی بیشتر بود ، پس کیفیت آن بالاتر از کیفیت کره ی اول خواهد بود . مانند شکل زیر :
دستور MAKE OBJECT TRIANGLE با این دستور می توانیم مثلت در فضای سه بعدی ایجاد کنیم . مانند دستورالعمل زیر :
MAKE OBJECT TRIANGLE ObjectNumber,X1,Y1,Z1,X2,Y2,Z2,X3,Y3,Z3
طبق این دستورالعمل به جای ObjectNumber یک عدد برای نام مثلث و به جای X1 و Y1 و Z1 مختصات یکی از گوشه های مثلت و به جای X2 و Y2 و Z2 مختصات گوشه ی دوم مثلث و به جای X3 و Y3 و Z3 مختصات گوشه ی سوم مثلت را قرار می دهیم . مانند مثال زیر :
MAKE OBJECT TRIANGLE 2,3.5,6,7,2,0,3,5,0,3 Wait Key
مثلث بالا در مختصات فضای سه بعدی توسط شکل زیر ، شبیه سازی شده است . ![]() دستور DELETE OBJECT
با این دستور شیء مورد نظرمان را حذف می کنیم . مانند دستورالعمل زیر :
DELETE OBJECT ObjectNumber
طبق این دستورالعمل به جای ObjectNumber شماره ی شیء مورد نظر را قرار می دهیم تا حذف شود . مانند مثال زیر :
Make Object Box 1,10,20,30
Make Object Sphere 2,25
Wait 2000
Delete Object 1
Wait Key
با اجرای این مثال شی جعبه با شماره ی 1 و کره با شماره ی 2 ایجاد شدند . سپس پس از 2 ثانیه شیء جعبه با شماره ی 1 حذف شد .
درباره وبلاگ به وبلاگ من خوش آمدید موضوعات آرشيو وبلاگ پيوندها نويسندگان |
|||
|
|
نام کاربری یا ایمیل خود را وارد کنید
کد ۶ رقمی ارسالشده به ایمیل و رمز عبور جدید را وارد کنید.
در چند ثانیه حساب کاربری خود را بسازید
دیدگاه خود را با ما در میان بگذارید
ورود کاربران
خوش آمدید! لطفا وارد حساب خود شوید