آموزش ساخت بازی سه بعدی به زبان 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 حذف شد .



 
 
 

ورود کاربران

خوش آمدید! لطفا وارد حساب خود شوید

رمز عبور را فراموش کرده‌اید؟
حساب کاربری ندارید؟

فراموشی رمز عبور

نام کاربری یا ایمیل خود را وارد کنید

یا

ثبت نام کاربران

در چند ثانیه حساب کاربری خود را بسازید

قبلا ثبت نام کرده‌اید؟

نظرات کاربران

دیدگاه خود را با ما در میان بگذارید