آموزش ساخت بازی سه بعدی به زبان Basic با دارک بیسیک Dark Basic
تهیه و آموزش نرم افزار دارک بیسیک
 
 
شنبه 30 فروردين 1392برچسب:, :: 23:59 ::  نويسنده : ابوالفضل
دستور SYNC
این دستور باعث بهبود روند اجرای بازی خواهد شد . یعنی می تواند محتویات صحنه را تحت زمان های مشخص شده ای ، از نو ترسیم و محاسبه کند . ابتدا با استفاده از دستور Sync On دستور را فعال و با دستور Sync Rate سرعت فریم ها را در هر ثانیه تنظیم و با دستور Sync محاسبات را انجام می دهیم . مانند مثال زیر :
 
SYNC ON
SYNC RATE 30
DO
"PRINT "keep to approximately 30 frames per second
SYNC
LOOP
Sync Off
 
در این مثال ، ابتدا دستور در خط اول فعال شد . و در خط دوم سرعت 30 فریم در ثانیه را تنظیم کردیم و در حلقه ی Do … Loop سرعت ترسیم و محاسبات ، هر ثانیه 30 بار توسط دستور Sync به روز رسانی می شوند .
 
در واقع این دستور یکی از مهم ترین دستورات DarkBasic می باشد . چون اگر دقت کرده باشید ، هر سیستمی سرعت خاص خود را دارد . مثلا کامپیوتری با CPU پنتیوم 3000 و یا AMD 4000 و یا هر سیستم دیگری قدرت و سرعت خود را دارد . یعنی بازی نوشته شده ، در هر کامپیوتری با یک سرعت خاص اجرا خواهد شد . یعنی در یک کامپیوتر ضعیف بازی ما ضعیف و کند حرکت و اجرا می شود و در کامپیوتر قوی تر ، خیلی تیز و سریع اجراء خواهد شد . با استفاده از دستور Sync ، بازی در تمامی کامپیوتر ها با یک سرعت ثابت اجرا خواهد شد . یعنی اگر ما Sync Rate را بر روی 30 تنظیم کرده باشیم . دستورات بین حلقه ی Do و Loop در هر ثانیه تنها 30 بار اجرا خواهند شد .
 
دستور IF
این دستور با استفاده از عملگرها ( + و – و And و Or و > و ... که قبلا راجع به آنها گفتیم ) به بررسی و مقایسه ی مقادیر اعداد و متغیرها و روابط بین آنها در برنامه می پردازد ، تا مسیر اجرای برنامه را تحت کنترل ما در بیاورد . یعنی در برابر شرایط ایجاد شده تصمیم بگیرد و در پی آن اقدامی انجام دهد  . در واقع این دستور جزء دستورات شرطی برنامه ی DarkBasic است که بصورت های مختلفی می توان از آن استفاده کرد . از جمله دستورالعمل زیر :
 
If Condition Then Statement
 
طبق این دستورالعمل ابتدا دستور کلیدی If را تایپ می کنیم و به جای Condition شرط مورد نظرمان را قرار می دهیم . سپس بعد از تایپ کلمه ی کلیدی Then به جای Statement فرمان مورد نیازمان را قرار می دهیم . یعنی اگر شرط Condition درست و منطقی بود ، فرمان Statement اجرا شود . همانند مثال زیر :
 
A = 20
"If A > 10 Then Print "A Is > 10
Wait Key
 
با اجرای این مثال ، ابتدا عدد 20 در متغیر A ذخیره می شود و در خط دوم دستور If عبارت A > 10 را بررسی می کند . اگر درست و منطقی بود ، فرمان نوشته شده بعد از Then انجام می شود . یعنی عبارت A Is > 10 چاپ خواهد شد . اگر متغیر A از 10 کوچکتر باشد دستور نوشته شده بعد از Then اجرا نخواهد شد و DarkBasic آن را رها خواهد کرد و به اجرای خطوط بعدی برنامه خواهد پرداخت .
 
در مثال بالا بعد از کلمه ی کلیدی Then تنها یک دستور تایپ و اجرا شد . در برخی مواقع نیاز داریم چندین خط بعد از بررسی اجرا شود . در این صورت مانند دستورالعمل زیر عمل می کنیم :
 
If Condition
Statement
EndIf
 
طبق این دستورالعمل ، بعد از دستور If به جای Condition شروط مورد نظرمان را تایپ می کنید و در خط بعد به جای Statement فرمان های مورد نظرمان را قرار می دهیم . عبارت EndIf جزئی از دستور If بحساب می آید که پایان شرط را مشخص می کند . یعنی ما می توانیم هر تعداد دستوری را که نیاز داشتیم ، بین If Condition و EndIf قرار دهیم . مانند مثال زیر :
 
$Input Character
"If Character$ = "a
 " ---------- " Print
$Print "Character Is ";Character
"Print "Thank You
EndIf
Wait Key
 
در این مثال بین خط دوم و ششم سه خط دستور قرار دادیم که می توان آن را کم و زیاد کرد . تا الان با استفاده از دستور If به بررسی درستی عبارات پرداختیم تا در قبال آن فرامینی را اجرا کنیم . دستور If را می توان به صورتی استفاده کرد که پس از بررسی عبارات به درستی و نادرستی عبارات بپردازد تا در قبال هر کدام فرامینی مربوط به هر حالت را بطور جداگانه ، اجرا کند . مانند دستورالعمل زیر :
 
If Condition
Statement1
Else
Statement2
EndIf
 
طبق این دستورالعمل شرط Condition بررسی می شود . اگر درست و منطقی بود ، دستور Statement1 انجام می شود ، و اگر ( شرط Condition ) نادرست و غیرمنطقی بود ، دستور  Statement2 انجام می شود . مانند مثال زیر :
 
Input "Input Number ?" ; Number
If Number = 1
"Print "True
Else
"Print "False
EndIf
Wait Key
 
با اجرای این مثال ، یک عدد از کاربر گرفته شده و داخل متغیر Number ذخیره می شود . سپس دستور If مقدار آن متغیر را بررسی می کند . اگر مقدار متغیر Number برابر 1 بود ، عبارت True و اگر هر مقدار دیگری به غیر از 1 باشد ، عبارت False چاپ خواهد شد . یعنی اگر شرط نوشته شده روبروی دستور If یعنی Number = 1 درست باشد ، دستورات نوشته شده بین دستور If و Else اجرا می شود و در غیر اینصورت دستورات نوشته شده بین Else و EndIf اجرا خواهند شد .
 
دستور If می تواند چندین عبارت را ( با هم در یک خط ) بررسی کند . مانند مثال زیر :
 
Number = 100
"strName$ = "Sam
Age = 20
If Number=100 And strName$<>"Jone" Or Age>=10
"Print "Ok
EndIf
Wait Kay
 
دستور SELECT
در دستور If تنها دو حالت قابل بررسی بود ( یکی حالت درست و دیگری حالت نادرست ) . اما در دستور Select حالت های زیادی قابل بررسی و پیش بینی هستند . برای استفاده از دستور Select طبق دستورالعمل زیر عمل می کنیم :
 
Select Expression
Case Value
Statement
EndCase
EndSelect
 
طبق این دستورالعمل عبارت Expression مورد بررسی قرار می گیرد . اگر عبارت Expression دقیقا برابر Value بود . دستور Statement انجام می شود . مانند مثال زیر :
 
Number = 2
Select Number
Case 2
"Print "Two
EndCase
EndSelect
Wait Key
 
در این مثال مقدار داخل متغیر Number که روبروی دستور Select تایپ شده ، بررسی می شود ، اگر مقدار داخل آن برابر 2 باشد ، دستورات نوشته شده بین Case 2 و EndCase همگی اجرا خواهند شد . یعنی در این مثال عبارت Two چاپ می شود .  ما می توانیم موارد زیادی را نیز بررسی کنیم . مانند مثال زیر :
 
numDay = 4
Select numDay
Case 0
"Print "Sat
EndCase
Case 1
"Print "Sun
EndCase
Case 2
"Print "Mon
EndCase
Case 3
"Print "Tue
EndCase
Case 4
"Print "Wed
EndCase
Case 5
"Print "Tur
EndCase
Case 6
"Print "Fri
EndCase
EndSelect
Wait Key
 
در این مثال پیش بینی شده ، که اگر متغیر numDay عددی در محدوده ی 0 تا 6 باشد ، نام آن روز طبق شماره اش چاپ شود . در این مثال چون مقدار داخل متغیر numDay برابر 4 است ، دستورات تایپ شده بین Case 4 و EndCase ( دو خط بعدی اش ) اجرا خواهد شد . یعنی عبارت Wed چاپ می شود . ولی اگر متغیر numDay مقداری خارج از محدوده ی 0 تا 6 در خود داشته باشد ، و ما بخواهیم آن حالت خاص را هم مورد بررسی قرار دهیم ، باید گزینه ی Case Default را به دستورمان اضافه کنیم . مانند مثال زیر :
 
$Input Character
$Select Character
 
   "Case "A
      Print 1
   EndCase
   "Case "B
      Print 2
   EndCase
   Case Default
      "Print "Input 1 Or 2
   EndCase
EndSelect
Wait Key
 
با اجرای این مثال یک عبارت از کاربر دریافت و داخل متغیر $Character ذخیره می شود . اگر مقدار آن برابر عبارت A باشد ، عدد 1 و اگر مقدار آن برابر عبارت B باشد ، عدد 2 چاپ می شود . درغیر اینصورت هر عبارت دیگری وارد متغیر $Character شود ، عبارت Input 1 Or 2 چاپ خواهد شد .
 
دستور WAIT
این دستور اجرای برنامه را به اندازه ی عددی که به آن اختصاص می دهیم ، به تاخیر می اندازد . مانند دستورالعمل زیر :
 
Wait Delay
 
طبق این دستورالعمل دستور Wait اجرای برنامه را به مقدار Delay میلی ثانیه به تاخیر می اندازد . Delay یک عدد از نوع Integer است که اگر مقدار آن را 1 بدهیم یک هزارم ثانیه و اگر 1000 قرار دهیم برنامه را بمدت یک ثانیه نگه می دارد . سپس دستورات بعدی اجرا می شوند . مانند مثال زیر :
 
"Print "Wait For 5 Seconds
Wait 5000
 
End
 
دستور SLEEP
این دستور دقیقا مانند دستور گذشته عمل می کند و به مقدار عدد اختصاصی به آن برنامه را متوقف می کند . مانند مثال زیر :
 
".Print "Please Wait Five Second
Sleep 5000
 
دستور WAIT KEY
این دستور برنامه را آن قدر نگه می دارد تا کلیدی از کیبورد فشرده شود . مانند مثال زیر :
 
"PRINT "press any key to end
WAIT KEY
END
 
با اجرای این مثال ابتدا عبارت press any key to end چاپ شده ، سپس برنامه توسط دستور WAIT KEY در خط دوم نگه داشته می شود . در این هنگام با زدن یکی از دکمه های کیبورد اجرای برنامه ادامه پیدا می کند و با اجرای دستور END برنامه به پایان می رسد .
 
دستور SUSPEND FOR KEY
این دستور دقیقا همان دستور WAIT KEY را انجام می دهد و برنامه را تا زمان فشرده شدن یک کلید از کیبورد متوقف می کند . مانند مثال زیر :
 
"PRINT "press any key to end
SUSPEND FOR KEY
 
END
 
دستور WAIT MOUSE
این دستور مانند دستور قبلی ( Wait Key ) اجرای برنامه را متوقف می کند . منتهی تا زمانی که یکی از دکمه های موس زده شود ! مانند مثال زیر :
 
"PRINT "press any mouse button
WAIT MOUSE
 
 
دستور SUSPEND FOR MOUSE
این دستور مانند دستور قبلی ( Wait Mouse ) اجرای برنامه را تا زمان فشرده شدن یکی از دکمه های موس متوقف می کند . مانند مثال زیر :
 
"PRINT "click mouse to end
SUSPEND FOR MOUSE
END
 
دستور INC
این دستور مقدار مشخصی عدد را به یک متغیر از نوع عدد اضافه می کند . مانند دستورالعمل زیر :
 
Inc Variable,Value
 
طبق این دستورالعمل ، هر بار به مقدار Value به متغیر Variable اضافه می شود . مانند مثال زیر :
 
A# = -2
Do
Inc A#,0.5
#Print A
wait 500
Loop
 
دستور DEC
این دستور شباهت زیادی به دستور قبلی ( Inc ) دارد . با این تفاوت که به جای افزایش به مقدار متغیر ، مقداری را هر بار از آن کم می کند . مانند مثال زیر :
 
myNumber = 10
Do
Dec myNumber,1
Print myNumber
wait 500
Loop
 
زمان استفاده از دستور Inc و Dec اگر بخواهیم تنها یک واحد از متغیرها زیاد یا کم شود ، میتوانیم تنها از نام Inc و Dec و نام متغیر بعد از آن استفاده کنیم . مانند مثال زیر :
 
A = 10
B = 10
Inc A
Dec B
Print "A = ";A;" B = ";B
Wait Key
 
دستور DATA
با این دستور می توان مقادیری داده ( شامل عدد یا کاراکتر ) را بطور متوالی در خطوط برنامه یادداشت کنیم ، تا بعد ها از آن داده ها استفاده کنیم . مانند مثال زیر :
 
DATA 17,"NINE",9.0
DATA 0,"Yes",300
DATA -100,"I Am A Boy",200.05
 
دستور READ
در دستور گذشته مقادیری را در خطوط برنامه یادداشت کردیم . با استفاده از این دستور ، می توانیم آن مقادیر را ، با استفاده از متغیر ها ، استفاده کنیم . مانند مثال زیر :
 
DATA 17,"NINE",9.0
DATA 0,"Yes",300
DATA -100,"I Am A Boy",200.05
#Read a,s$,b
Print a
$Print s
#Print b
Wait Key
 
با اجرای این مثال عدد 17 و عبارت NINE و عدد 9.0 چاپ می شوند . با توجه به مثال برای فراخوانی داده ها از متغیری همنوع همان داده استفاده کردیم . برای خواندن داده های خوط بعدی باید دستور Read را تکرار کنیم مانند مثال زیر :
 
DATA 17,"NINE",9.0
DATA 0,"Yes",300
DATA -100,"I Am A Boy",200.05
 
#Read a,s$,b
#Print a;s$;b
#Read a,s$,b
#Print a;s$;b
#Read a,s$,b
#Print a;s$;b
Wait Key
 
دستور RESTORE
می توانیم با ایجاد برچسب ، داده ها را نامگذاری و بعد با دستور Restore از قسمت فراخوانی نام برچسب ، از داده ها دوباره استفاده کنیم . مانند مثال زیر :
 
:Lotterydata
DATA 12,23,34,45,56,67
DATA 23,34,45,56,67,11
DATA 34,45,56,67,33,22
:Ticketdata
DATA 01,02,03,04,05,06
DATA 21,32,43,24,13,22
 
RESTORE lotterydata
READ a,b,c,d,e,f
PRINT "LOTTERY ",a,b,c,d,e,f

RESTORE ticketdata
READ a,b,c,d,e,f
PRINT "TICKET ",a,b,c,d,e,f
Wait Key


پنج شنبه 29 فروردين 1392برچسب:, :: 1:5 ::  نويسنده : ابوالفضل

 

این فصل شامل دستوراتی برای پخش آهنگ با فرمت های گوناگون ، از جمله MP3 و MID از روی فایل می باشد . ما می توانیم آهنگ ها را ایجاد و یا حذف کنیم . همچنین می توانیم میزان بلندی صدا و سرعت پخش هر آهنگ را کم و زیاد کنیم .

 

دستور LOAD MUSIC

با این دستور آهنگ مورد نظرمان را از روی فایل صدا می کنیم و یک عدد به آن اختصاص دهیم . مانند دستورالعمل زیر :

 

LOAD MUSIC Filename,MusicNumber

 

طبق این دستورالعمل به جای Filename مسیر و نام فایل مورد نظرمان را قرار می دهیم . و به جای MusicNumber یک عدد در محدوده ی 1 تا 65535 قرار می دهیم تا توسط آن عدد در خطوط بعدی به آهنگمان کنترل داشته باشید . مانند مثال زیر :

 

Load Music "C:Program FilesDark Basic Professional XPMediaMusicMP3Music fun.mp3" , 1

Wait Key

 

در این مثال موزیکی با نام Music fun با فرمت mp3 که در مسیر C:Program FilesDark Basic Professional XPMediaMusicMP3 بود بر روی حافظه فراخوانی کردیم . در واقع عدد یک اختصاص داده شده در مثال بالا ، نام موزیک ما می باشد و در هر جایی از برنامه این موزیک توسط همین عدد قابل ردیابی است و می توانیم فرامین مختلفی را توسط این عدد به موزیکمان اعمال کنیم .

 

تابع MUSIC EXIST

این تابع بررسی می کند که آیا موزیک مورد نظرمان بر روی حافظه موجود است یا نه . اگر بر روی حافظه فراخوانی شده باشد ، تابع مقدار یک و اگر فراخوانی نشده باشد ، تابع مقدار صفر را برمی گرداند . مانند مثال زیر :

 

Load Music "C:Program FilesDark Basic Professional XPMediaMusicMP3Music fun.mp3",1

".If Music Exist(1) Then Print "Music 1 Is Exist

(Print Music Exist(2

Wait Key

 

دستور PLAY MUSIC

اگر موزیکی را قبلا ( توسط دستور Load Music ) بر روی حافظه فراخوانی کرده باشیم و عددی به آن اختصاص داده باشیم ، با این دستور می توانیم با اشاره به عدد اختصاصی به آن موزیک آن را پخش کنیم . مانند دستورالعمل زیر :

 

PLAY MUSIC MusicNumber

 

طبق این دستورالعمل به جای MusicNumber عدد اختصاصی به موزیکمان را قرار می دهیم . یعنی اگر سه موزیک در حافظه فراخوانی کرده باشیم و به هر کدام یک عدد اختصاص داده باشیم . می توانیم با این دستور و همچنین قرار دادن عدد اختصاصی به موزیک ، آن را پخش کنیم . مانند مثال زیر :

 

Load Music "C:Program FilesDark Basic Professional XPMediaMusicMP3Music fun.mp3" , 1

Load Music "C:Program FilesDark Basic Professional XPMediaMusicMP3music space.mp3" , 2

Load Music "C:Program FilesDark Basic Professional XPMediaMusicMP3music misty room.mp3" , 3

Play Music 2

Wait Key

 

در این مثال سه موزیک بر روی حافظه فراخوانی شد و در آخر موزیک شماره ی 2 پخش شد . در یک زمان چندین موزیک می توانند با هم در حال پخش باشند . مانند مثال زیر :

 

Load Music "C:Program FilesDark Basic Professional XPMediaMusicMP3Music fun.mp3" , 1

Load Music "C:Program FilesDark Basic Professional XPMediaMusicMP3music space.mp3" , 2

Load Music "C:Program FilesDark Basic Professional XPMediaMusicMP3music misty room.mp3" , 3

Play Music 1

Play Music 2

Play Music 3

Wait Key

 

تابع MUSIC PLAYING

این تابع بررسی می کند که آیا موزیک مورد نظرمان درحال پخش است یا نه . اگر موزیک در حال پخش باشد ، تابع عدد یک و اگر در حال پخش نباشد ، تابع عدد صفر را برمی گرداند . مانند مثال زیر :

 

Load Music "C:Program FilesDark Basic Professional XPMediaMusicMP3Music fun.mp3" , 1

Load Music "C:Program FilesDark Basic Professional XPMediaMusicMP3music space.mp3" , 2

Play Music 1

(Print Music Playing(1

(Print Music Playing(2

Wait Key

 

دستور STOP MUSIC

این دستور باعث توقف کامل موزیک می شود . مانند مثال زیر :

 

Load Music "C:Program FilesDark Basic Professional XPMediaMusicMP3Music fun.mp3" , 100

Play Music 100 : Print "Playing Music ." : Wait 2000

Stop Music 100

Cls : Print "Stop Music . Press Any Key To Exit ." : Wait Key

 

 

دستور PAUSE MUSIC

این دستور باعث توقف موزیک بطور موقت می شود . یعنی اگر نصف موزیک پخش شده باشد ، با این دستور پخش موزیک متوقف شده و در خطوط بعدی می توانیم موزیک متوقف شده را از همانجا پخش کنیم . مانند مثال زیر :

 

Load Music "C:Program FilesDark Basic Professional XPMediaMusicMP3Music fun.mp3" , 25

Play Music 25

Print "Playing Music" : Wait 2000

Pause Music 25

Wait Key

 

تابع MUSIC PAUSED

این تابع بررسی می کند که آیا موزیک مورد نظرمان موقتا متوقف شده یا نه . اگر موقتا متوقف شده باشد ، تابع مقدار یک و اگر متوفق نشده باشد ، تابع مقدار صفر را برمی گرداند . مانند مثال زیر :

 

Load Music "C:Program FilesDark Basic Professional XPMediaMusicMP3Music fun.mp3",25

Play Music 25

Print "Playing Music" : Wait 2000

Pause Music 25

".If Music Paused(25)=1 Then Print "Music Paused

Wait Key

 

دستور RESUME MUSIC

اگر موزیک مورد نظر را توسط دستور Pause Music متوفق کرده باشیم ، می توانیم با این دستور ادامه ی موزیک را از همان جا پخش کنیم . مانند مثال زیر :

 

Load Music "C:Program FilesDark Basic Professional XPMediaMusicMP3Music fun.mp3" , 10

Play Music 10

Print "Playing Music" : Wait 2000

Pause Music 10

Print "Pause Music" : Wait 2000

Resume Music 10

Print "Resume Music" : Wait 2000

Wait Key

 

دستور LOOP MUSIC

این دستور باعث پخش متوالی موزیک می گردد . یعنی موزیک مورد نظر را پخش می کند و اگر موزیک تمام شود ، دوباره از اول بطور خودکار پخش خواهد شد . پخش موزیک مورد نظر تا زمانی که دستور توقف در خطوط بعدی صادر نشده باشد ، ادامه خواهد داشت . مانند مثال زیر :

 

Load Music "C:Program FilesDark Basic Professional XPMediaMusicMP3Music fun.mp3" , 4

Loop Music 4

Print "Press Any Key To Pause Music ." : Wait Key

Stop Music 4

Cls : Print "Press Any Key To Exit ." : Wait Key

 

تابع MUSIC LOOPING

این تابع بررسی می کند که آیا موزیک مورد نظر بطور متوالی در حال پخش است یا نه . یعنی اگر دستور Loop Music در باره ی موزیک مورد نظرمان اجرا شده باشد ، تابع مقدار یک و اگر اجرا نشده باشد ، تابع مقدار صفر را برمی گرداند . مانند مثال زیر :

 

Load Music "C:Program FilesDark Basic Professional XPMediaMusicMP3Music fun.mp3" , 4

Loop Music 4

".If Music Looping(4)=1 Then Print "Music Looping

Wait Key

 

دستور DELETE MUSIC

با این دستور موزیک مورد نظرمان را که از فایل به حافظه فراخوانده بودیم ، از حافظه پاک می کنیم . مانند مثال زیر :

 

Load Music "C:Program FilesDark Basic Professional XPMediaMusicMP3Music fun.mp3",50

Play Music 50 : Print "Playing Music ." : Wait 2000

Stop Music 50 : Print "Stop Music ." : Wait 2000

Delete Music 50

Print "Delete Music ." : Wait 2000 : End

 

 با پاک شدن موزیک از حافظه ، موزیک قابل پخش نمی باشد و برای پخش دوباره ، موزیک باید دوباره به حافظه فراخوانی شود .

 

دستور SET MUSIC SPEED

با این دستور می توانیم سرعت پخش موزیک را تنظیم کنیم . مانند دستورالعمل زیر :

 

SET MUSIC SPEED MusicNumber,Speed

 

طبق این دستورالعمل به جای MusicNumber عدد موزیک و به جای Speed سرعت پخش موزیک را قرار می دهیم که پیش فرض آن 100 است . یعنی اگر سرعت موزیک را 50 قرار دهیم موزیک با نصف سرعت و اگر 200 قرار دهیم با دو برابر سرعت پخش خواهد شد و اگر 100 باشد با سرعت عادی پخش خواهد شد . مانند مثال زیر :

 

Load Music "C:Program FilesDark Basic Professional XPMediaMusicMP3Music fun.mp3",50

".Play Music 50 : Print "Playing Music Normal Speed

Wait 2000 : Cls

Set Music Speed 50,200

".Print "Playing Music 2X Speed

Wait 2000 : Cls

Set Music Speed 50,50

".Print "Playing Music Half Speed

Wait Key

 

تابع MUSIC SPEED

این تابع مقدار سرعت پخش موزیک مورد نظرمان را برمی گرداند . مانند مثال زیر :

 

Load Music "C:Program FilesDark Basic Professional XPMediaMusicMP3Music fun.mp3",50

Set Music Speed 50,200

(Print "Music Speed = " ; Music Speed(50

Wait Key

 

دستور SET MUSIC VOLUME

با این دستور ، بلندی صدای موزیک مورد نظرمان را کم و زیاد کنیم . مانند دستورالعمل زیر :

 

SET MUSIC VOLUME MusicNumber,Volume

 

طبق این دستورالعمل به جای MusicNumber شماره موزیک و به جای Volume مقدار بلندی صدا را قرار می دهیم که پیش فرض آن 100 می باشد . یعنی اگر بلندی صدای موزیک را 50 قرار دهیم صدای پخش موزیک نصف و اگر 100 قرار دهیم ، بلندی صدای موزیک معمولی خواهد شد . مانند مثال زیر :

 

Load Music "C:Program FilesDark Basic Professional XPMediaMusicMP3Music fun.mp3",50

".Play Music 50 : Print "Playing Music Normal Volume

Wait 2000 : Cls

Set Music Volume 50,50

".Print "Playing Music Half Volume

Wait 2000 : Cls

Set Music Volume 50,100

".Print "Playing Music Normal Volume

Wait Key

 

تابع MUSIC VOLUME

این تابع مقدار بلندی صدای موزیک مورد نظرمان را برمی گرداند . مانند مثال زیر :

 

Load Music "C:Program FilesDark Basic Professional XPMediaMusicMP3Music fun.mp3",40

Play Music 40

Set Music Volume 40,50

(Print "Music Volume = " ; Music Volume(40

Wait Key

 



سه شنبه 27 فروردين 1392برچسب:, :: 23:14 ::  نويسنده : ابوالفضل

 این فصل شامل دستوراتی برای ایجاد و حذف و ویرایش تصاویری با فرمت های BMP ، JPG ، TGA ، DDS ، DIB و PNG می باشد . می توان تصویر را از روی فایل فراخوانی کرد . کاربرد بیتمپ معمولا برای نمایش عکس و یا لوگوی تصویر اولیه بازی است .

 

دستور LOAD BITMAP

این دستور تصویری را از روی فایل بر روی صفحه فراخوانی می کند . مانند دستورالعمل زیر :

 

LOAD BITMAP Filename,BitmapNumber

 

طبق این دستورالعمل به جای Filename آدرس و نام و فرمت فایل تصویری و به جای BitmapNumber شماره ای بین 0 تا 32 قرار می دهیم . توسط همین شماره می توانیم در خطوط بعدی ، تصویر مورد نظرمان را کنترل کنیم . مانند مثال زیر :

 

Load Bitmap "C:Program FilesDark Basic SoftwareDark Basic ProfessionalProjectsRoomDemomedia oomWalld.bmp" , 1

Wait Key

 

اگر به جای BitmapNumber عدد صفر را قرار دهیم و یا هیچ گونه عددی قرار ندهیم ، تصویر بر روی صفحه نمایش ، نشان داده می شود . مانند مثال زیر :

 

Load Bitmap "C:Program FilesDark Basic SoftwareDark Basic ProfessionalProjectsRoomDemomedia oomWalld.bmp" , 0

Wait Key

 

نکته : در این دستور اگر به جای BitmapNumber عدد صفر قرار دهیم ، در حالت گرافیک قرار می گیریم . یعنی می توانیم از دستورات گرافیکی و چاپی استفاده کنیم . سایر اعداد برای محاسبات تصویری کاربرد دارند . یعنی اگر از این دستور استفاده کنیم و عددی بالا تر از صفر قرار دهیم ، فرامین چاپی و گرافیکی دیده نخواهند شد .

 

دستور CREATE BITMAP

با این دستور می توانیم یک تصویر خالی با سایز دلخواه بسازیم . مانند دستورالعمل زیر :

 

CREATE BITMAP BitmapNumber,Width,Height

 

طبق این دستورالعمل به جای BitmapNumber یک عدد قرار می دهید تا در خطوط بعدی بر روی تصویرمان کنترل داشته باشیم . و به جای Width اندازه ی پهنای تصویر و به جای Height اندازه ی ارتفاع تصویر را قرار می دهیم . مانند مثال زیر :

 

CREATE BITMAP 1,640,480

WAIT KEY

 

در این مثال تصویری با شماره ی یک و طول 640 و ارتفاع 480 ایجاد شد .

 

دستور SET CURRENT BITMAP

این دستور تصویر دلخواهمان را از بین دیگر تصاویر ، فعال می کند . مانند مثال زیر :

 

Load Bitmap "C:Program FilesDark Basic SoftwareDark Basic ProfessionalProjectsRoomDemomedia oomWalld.bmp" , 0

CREATE BITMAP 1,640,480

SET CURRENT BITMAP 0

WAIT KEY

 

اگر تصویر شماره صفر فعال باشد ، دستورات چاپی و گرافیکی قابل دیدن خواهند بود .

 

دستور DELETE BITMAP

این دستور تصاویر ایجاد شده و یا خوانده شده از فایل را حذف می کند . در مانند دستورالعمل زیر :

 

DELETE BITMAP BitmapNumber

 

طبق این دستورالعمل به جای BitmapNumber شماره تصویر را قرار می دهیم تا تصویر مورد نظر حذف شود . مانند مثال زیر :

 

CREATE BITMAP 1,640,480

Load Bitmap "C:MyBitmap.bmp",2

DELETE BITMAP 1

WAIT KEY

 

در این مثال تصویر شماره ی 1 حذف می شود . البته از روی Ram حذف می شود، نه اینکه فایل از بین برود .

 

دستور COPY BITMAP

این دستور تصویری را در تصویر دیگری کپی می کند . مانند دستورالعمل زیر :

 

COPY BITMAP FromBitmap,ToBitmap

 

طبق این دستورالعمل به جای FromBitmap شماره ی تصویری که می خواهیم از آن کپی تهیه کنیم و به جای ToBitmap شماره ی تصویری را که می خواهیم در آن بچسبانیم ، قرار می دهیم . مانند مثال زیر :

 

Load Bitmap "C:Program FilesDark Basic SoftwareDark Basic ProfessionalProjectsRoomDemomedia oomWalld.bmp" , 1

Create Bitmap 2,200,200

Copy Bitmap 1,2

Wait Key

 

در این مثال تصویر شماره ی 1 در تصویر شماره ی 2 کپی می شود . از این دستور می توان به شکل دیگری هم استفاده کرد . مانند دستورالعمل زیر :

 

COPY BITMAP FromBitmap,LEFT,TOP,RIGHT,BOTTOM,ToBitmap,left,top, right,bottom

 

در این روش مختصات تصویر انتخابی از تصویر اول در مختصات تصویر انتخابی در تصویر دوم کپی می شود . مانند مثال زیر :

 

Load Bitmap "C:Program FilesDark Basic SoftwareDark Basic ProfessionalProjectsRoomDemomedia oomWalld.bmp",1

Create Bitmap 2,200,200

COPY BITMAP 1,50,50,100,100,2,0,0,50,50

COPY BITMAP 2,0

Set Current Bitmap 0

WAIT KEY

 

دستور MIRROR BITMAP

این دستور تصویر را حول محور عمودی انعکاس می دهد . مانند تصویر در آینه عمودی . مانند مثال زیر :

 

Load Bitmap "C:Program FilesDark Basic SoftwareDark Basic ProfessionalProjectsRoomDemomedia oomWalld.bmp",0

Do

MIRROR BITMAP 0

Wait 500

Loop

 

دستور FLIP BITMAP

این دستور تصویر را حول محور افقی انعکاس می دهد . مانند تصویر در آینه افقی . مانند مثال زیر :

 

Load Bitmap "C:Program FilesDark Basic SoftwareDark Basic ProfessionalProjectsRoomDemomedia oomWalld.bmp" , 0

Do

Flip BITMAP 0

Wait 500

Loop

 

دستور FADE BITMAP

این دستور باعث محو شدن تصویر می شود ( تمایل به رنگ سیاه ) . مانند دستورالعمل زیر :

 

FADE BITMAP BitmapNumber,FadeValue

 

طبق این دستورالعمل به جای BitmapNumber عدد مربوط به تصویر و به جای FadeValue مقدار محوشدگی تصویر را قرار می دهیم که عددی در محدوده ی صفر تا 100 می باشد که این عدد درصد شفافیت تصویر را مشخص می کند . یعنی اگر عدد 90 را قرار دهیم ، تنها 90 درصد از شفافیت تصویر باقی خواهد ماند . مانند مثال زیر :

 

Load Bitmap "C:Program FilesDark Basic SoftwareDark Basic ProfessionalProjectsRoomDemomedia oomWalld.bmp" , 0

For I = 1 To 10

Fade BITMAP 0,90

Wait 500

Next I

 

دستور BLUR BITMAP

این دستور باعث تار شدن تصویر می شود . مانند دستورالعمل زیر :

 

BLUR BITMAP BitmapNumber,BlurValue

 

طبق این دستورالعمل به جای BitmapNumber عدد مربوط به تصویر و به جای BlurValue مقدار تار شدگی تصویر را قرار می دهیم که عددی در محدوده ی 1 تا 6 می باشد که این عدد شدت تارشدگی تصویر را مشخص می کند . یعنی اگر عدد 1 را قرار دهیم ، تصویر به مقدار کم تار می شود و اگر بیشترین عدد یعنی 6 را قرار دهیم ، تصویر به مقدار زیاد ، تار خواهد شد . مانند مثال زیر :

 

Load Bitmap "C:Program FilesDark Basic SoftwareDark Basic ProfessionalProjectsRoomDemomedia oomWalld.bmp" , 0

Wait 1000

Blur BITMAP 0,5

Wait Key

 

تابع CURRENT BITMAP

این تابع شماره ی تصویر فعال را برمی گرداند . مانند مثال زیر :

 

CREATE BITMAP 1,640,480

SET CURRENT BITMAP 0

()PRINT CURRENT BITMAP

WAIT KEY

 

تابع BITMAP EXIST

این تابع مشخص می کند که آیا تصویر مورد نظر در حافظه موجود است یا نه . مانند مثال زیر :

 

CREATE BITMAP 1,640,480

Set Current Bitmap 0

(PRINT BITMAP EXIST(1

WAIT KEY

 

در این مثال چون تصویری با شماره ی یک در حافظه ایجاد شده ، تابع مقدار 1 و اگر این شماره تصویر در حافظه نباشد ( مثلا با دستور Delete Bitmap حذف شده باشد ) ، تابع مقدار صفر را برمی گرداند .

 

تابع BITMAP WIDTH و تابع BITMAP HEIGHT و تابع BITMAP DEPTH

این سه تابع به ترتیب پهنا و ارتفاع و عمق رنگ ( تعداد رنگ های تشکیل دهنده ی تصویر ، مثلا 32 بیت یعنی حدود 16 میلیون رنگ ) تصویر مورد نظر را برمی گردانند . مانند مثال زیر :

 

Load Bitmap "C:Program FilesDark Basic SoftwareDark Basic ProfessionalProjectsRoomDemomedia oomWalld.bmp" , 0

(Print "Bitmap Width = " ; Bitmap Width(0

(Print "Bitmap Height = " ; Bitmap Height(0

(Print "Bitmap Depth = " ; Bitmap Depth(0

Wait Key

 

تابع BITMAP MIRRORED

این تابع مشخص می کند که آیا تصویر مورد نظر در راستای محور افقی انعکاس پیدار کرده یا نه ( یعنی آیا از دستور MIRROR BITMAP استفاده شده است یا نه ) . مانند مثال زیر :

 

Load Bitmap "C:Program FilesDark Basic SoftwareDark Basic ProfessionalProjectsRoomDemomedia oomWalld.bmp" , 0

Do

Wait 2000

MIRROR BITMAP 0

If BITMAP MIRRORED(0)=1

   "Print "Bitmap Mirrored

Else

      "Print "Bitmap Not Mirrored

EndIf

Loop

 

تابع BITMAP FLIPPED

این تابع مشخص می کند که آیا تصویر مورد نظر در راستای محور عمودی انعکاس پیدار کرده یا نه ( یعنی آیا از دستور FLIPP BITMAP استفاده شده است یا نه ) . مانند مثال زیر :

 

Load Bitmap "C:Program FilesDark Basic SoftwareDark Basic ProfessionalProjectsRoomDemomedia oomWalld.bmp" , 0

Do

Wait 2000

Flip BITMAP 0

If BITMAP Flipped(0)=1

   "Print "Bitmap Flipped

Else

   "Print "Bitmap Not Flipped

EndIf

Loop



سه شنبه 27 فروردين 1392برچسب:, :: 1:44 ::  نويسنده : ابوالفضل

 این فصل شامل دستوراتی برای رسم اشکال دو بعدی مانند نقطه دایره خط و . . . می باشد . همچنین می توانیم رنگ قلم و زمینه آن را نیز مشخص کنیم .

 

تابع RGB

با این تابع می توانیم عبارات عددی و یا کراکتری و همچنین اشکال دو بعدی و اشیاء سه بعدی را با رنگ دلخواهمان چاپ و یا رسم کنیم . این تابع سه ورودی دارد مانند دستورالعمل زیر :

 

(NumberColor = RGB(Red,Green,Blue

 

در کامپیوتر رنگ ها از سه رنگ اصلی قرمز و سبز و آبی بوجود آمده اند . یعنی هر رنگی یک شماره ی منحصر به فرد دارد  . در تابع می توانیم به هر کدام از رنگ های اصلی ( قرمز و سبز و آبی ) عددی بین 0 تا 255 اختصاص دهیم و آن را وارد این تابع کنیم ، تا رنگ کل که خود یک عدد است توسط این تابع ایجاد شود . بعد می توانیم از آن عدد برای مشخص کردن رنگ قلم برای چاپ و ترسیم استفاده کنیم .

طبق این دستورالعمل به جای Red ( به معنای شدت رنگ قرمز ) عددی در محدوده ی 0 تا 255 و به جای Green ( به معنای شدت رنگ سبز ) عددی در محدوده ی 0 تا 255 و به جای Blue ( به معنای شدت رنگ آبی ) عددی در محدوده ی 0 تا 255 قرار می دهیم . تابع با توجه به مقادیر وارده عددی تولید می کند که حاصل مخلوط این سه عدد ( این سه رنگ اصلی ) است . یعنی این تابع با توجه به اعداد ورودی 16777216 رنگ تولید می کند . مانند مثال های زیر :

 

(NumberColor = Rgb(255,0,0

 

در این مثال شدت رنگ قرمز 255 و شدت رنگ سبز 0 و شدت رنگ آبی 0 می باشد . در نتیجه عدد NumberColor به دلیل شدت رنگ بالای قرمز عددی را برمی گرداند که آن عدد کد رنگ قرمز پررنگ می باشد .

 

اگر (Rgb (255,0,0 باشد ، عدد NumberColor رنگ قرمز را مشخص می کند .

اگر (Rgb (0,255,0 باشد ، عدد NumberColor رنگ سبز را مشخص می کند .

اگر (Rgb (0,0,255 باشد ، عدد NumberColor رنگ آبی را مشخص می کند .

اگر (Rgb (0,0,0 باشد ، عدد NumberColor رنگ سیاه را مشخص می کند .

اگر (Rgb (255,255,255 باشد ، عدد NumberColor رنگ سفید را مشخص می کند .

اگر (Rgb (255,0,255 باشد ، عدد NumberColor رنگ صورتی را مشخص می کند .

اگر (Rgb (255,255,0 باشد ، عدد NumberColor رنگ زرد را مشخص می کند .

اگر (Rgb (255,0,255 باشد ، عدد NumberColor رنگ فیروزه ای را مشخص می کند . 

برای ایجاد سایر رنگ ها باید عدد هایی بین صفر تا 255 را در تابع قرار دهیم .

 

برای تعیین رنگ راه راحت تری هم وجود دارد . 

 

1 – ابتدا دستور مربوط به انتخاب رنگ مثلا INK را تایپ می کنیم . 

2 – بعد از قرار داد یک فاصله ( فشردن دکمه ی Space ) ، کلیک سمت راست موس را فشار می دهیم . و گزینه ی ...Insert RGB Colour را از منوی ظاهر شده انتخاب می کنیم . کادری مانند شکل زیر باز خواهد شد .

 

 

 

 

می توانیم رنگ مورد دلخواهمان را انتخاب کنیم . با فشردن دکمه ی Ok تابع ()RGB بطور خودکار مقدار دهی می شود . به همین سادگی می توانیم رنگ مورد نظر مان را تنظیم کنیم .

 

دستور CLS

این دستور کل صفحه نمایش را با رنگ دلخواه ما پاک می کند . مانند دستورالعمل زیر :

 

CLS NumberColor

 

طبق این دستورالعمل به جای NumberColor کد رنگ مورد نظرمان را قرار می دهیم . می توانیم از تابع ()RGB برای ایجاد کد رنگ استفاده کنیم . مثلا می خواهیم کل صفحه نمایش را با رنگ سبز پاک کنیم . 

 

(CLS Rgb(255,0,0

Wait Key

 

دستور INK

با این دستور می توانیم رنگ قلم و رنگ زمینه را برای چاپ متون و ترسیمات دو بعدی انتخاب کنیم . مانند دستورالعمل زیر :

 

INK ForegroundColor,BackgroundColor

 

طبق این دستورالعمل به جای ForegroundColor رنگ قلم و به جای BackgroundColor رنگ پشت زمینه را  قرار می دهیم . مانند مثال زیر :

 

(Ink Rgb(0,0,255),Rgb(0,255,0

"Print "ForeGround Color Is Blue And BackGround Color Is Green

Wait Key

 

دستور DOT

با این دستور می توانیم بر روی صفحه نمایشگر نقطه رسم کنیم . مانند دستورالعمل زیر :

 

DOT X,Y

 

طبق این دستورالعمل به جای X فاصله ی نقطه از سمت چپ صفحه ی نمایشگر و به جای Y فاصله ی نقطه از بالای صفحه ی نمایشگر را قرار می دهیم . مانند مثال زیر :

 

(Ink Rgb(255,255,255),Rgb(0,0,0

Dot 100,100

Wait Key

 

بصورت زیر هم می توان نمای زیبایی ایجاد کرد .

 

For I = 0 To 255

   For J = 0 To 255

      INK RGB(I,J,0),0

       Dot I*2 , J*2

   Next J

Next I

Wait Key

 

دستور LINE

از این دستور برای رسم خط استفاده می کنیم . مانند دستورالعمل زیر :

 

LINE X1,Y1,X2,Y2

 

طبق این دستورالعمل برای رسم یک خط مختصات دو نقطه 1 و 2 را وارد می کنیم . یعنی به جای X1 فاصله ی نقطه ی اول از چپ صفحه و به جای Y1 فاصله ی نقطه ی اول از بالای صفحه و به جای X2 فاصله ی نقطه ی دوم از چپ صفحه و به جای Y2 فاصله ی نقطه ی دوم از بالای صفحه را قرار می دهیم و دستور LINE یک خط از نقطه ی اول به نقطه ی دوم رسم می کند . مانند مثال زیر :

 

Ink Rgb (255,0,255) , 0

Line 100,100,200,200

Wait Key

 

با اجرای این مثال خطی با رنگ صورتی از نقطه ی 100 و 100 به نقطه ی 200 و 200 رسم می شود .

 

در هر یک از توابع و دستوراتی که از اول تا الان گفته شد ، می توانیم به جای اعداد از متغیز هم استفاده کنیم . مانند مثال زیر :

 

Do

Ink Rgb(Rnd(255),Rnd(255),Rnd(255)) , 0

(intAng = Rnd(360

(Line 320,240,320+Sin(intAng)*Rnd(400),240+Cos(intAng)* Rnd(400

Loop

Wait Key

 

دستور BOX

از این دستور برای رسم مستطیل استفاده می کنیم . مانند دستورالعمل زیر :

 

BOX Left,Top,Right,Bottom

 

طبق این دستورالعمل به جای Left فاصله ی ظلع چپ مستطیل تا ظلع چپ صفحه نمایش و به جای Top فاصله ی ظلع بالای مستطیل تا ظلع بالای صفحه نمایش و به جای Right فاصله ی ظلع راست مستطیل تا ظلع چپ صفحه نمایش و به جای Bottom فاصله ی ظلع پائین مسطیل تا ظلع بالای صفحه نمایش را قرار می دهیم . یعنی برای رسم یک مستطیل که طول آن 50 و ارتفاع آن 50 و فاصله ی آن تا بالای صفحه 50 و فاصله ی آن تا چپ صفحه 50 باشد ، باید مانند مثال زیر عمل کنید :

 

(Ink Rgb(0,255,0

Box 50,50,100,100

WAIT KEY

 

دستور Box را می توان بشکل دیگری هم استفاده کرد . مانند زیر :

 

BOX Left,Top,Right,Bottom,Color1,Color2,Color3,Color4

 

در این دستورالعمل به جای Color1 و Color2 و Color3 و Color4 کد چها رنگ مختلف را قرار می دهیم تا هر گوشه از مستطیل به هر کدام از این رنگ ها گرایش پیدا کند . مانند مثال زیر :

 

(BOX 50,50,250,250,RGB(255,0,0),RGB(0,255,0),RGB(0,0,255),RGB(0,255,255

WAIT KEY

 

دستور CIRCLE

با این دستور دایره رسم می کنیم . مانند دستورالعمل زیر :

 

CIRCLE X,Y,Radius

 

طبق این دستورالعمل به جای X فاصله ی مرکز دایره از چپ صفحه نمایش و به جای Y فاصله ی مرکز دایره تا بالای صفحه نمایش و به جای Radius شعاع دایره را قرار می دهیم . مانند مثال زیر :

 

CIRCLE 320,240,100

WAIT KEY

 

در این مثال دایره ای با شعاع 100 در مختصات 320 و 240 رسم می شود .

 

دستور ELLIPSE

با این دستور بیضی رسم می کنیم . مانند دستورالعمل زیر :

 

ELLIPSE X,Y,XRadius,YRadius

 

طبق این دستورالعمل به جای X فاصله ی مرکز بیضی از چپ صفحه نمایش و به جای Y فاصله ی مرکز بیضی تا بالای صفحه نمایش و به جای XRadius اندازه ی شعاع افقی (موازی محور X ها ) و به جای YRadius اندازه ی شعای عمودی (موازی محور Y ها ) بیضی را قرار می دهیم . مانند مثال زیر :

 

ELLIPSE 320,240,100,50

WAIT KEY

 

تابع POINT

با این تابع ، شماره کد رنگ نقطه ای را در مختصات خاصی از صفحه نمایش ، بدست می آوریم . مانند دستورالعمل زیر :

 

(ColorNumber = POINT(X,Y

 

طبق این دستورالعمل به جای X فاصله ی نقطه از چپ صفحه ( محور افقی ) و به جای Y فاصله ی نقطه از بالای صفحه ( محور عمودی ) را قرار می دهیم . مانند مثال زیر .

 

(CLS RGB(128,64,0

(PRINT POINT(320,240

WAIT KEY

 

تابع RGBR

این تابع شدت رنگ قرمز را از کد کلی رنگ بدست می آورد . مانند دستورالعمل زیر :

 

(CLS RGB(128,64,255

((PRINT "AMOUNT OF RED = " ; RGBR(POINT(320,240

WAIT KEY

 

تابع RGBG

این تابع شدت رنگ سبز را از کد کلی رنگ بدست می آورد . مانند دستورالعمل زیر :

 

(CLS RGB(128,164,255

(ColorNumber = POINT(320,240

(PRINT "AMOUNT OF GREEN = " ; RGBG(ColorNumber

WAIT KEY

 

تابع RGBB

این تابع شدت رنگ آبی را از کد کلی رنگ بدست می آورد . مانند دستورالعمل زیر :

 

(CLS RGB(128,64,5

((PRINT "AMOUNT OF BLUE = " ; RGBB(POINT(320,240

WAIT KEY



شنبه 24 فروردين 1392برچسب:, :: 1:2 ::  نويسنده : ابوالفضل

 این فصل شامل دستوراتی برای کنترل صفحه نمایشگر ( رزولوشن : مختصات طولی و عرضی ) و همچنین حالت پنجره ای که بازی در آن اجرا می شود ، می باشد .

 

دستور PERFORM CHECKLIST FOR GRAPHICS CARDS

با این سلسله از دستورات می توانیم تعداد و نام کارت های گرافیکی شناخته شده توسط کامپیوتر ( که به کامپیوتر وصل شده اند ) را بدست آوریم . مانند مثال زیر :

 

Perform Checklist For Graphics Cards

"Print "Graphics Cards

()For T = 1 To CheckList Quantity

(Print T;":"+CheckList String$(T

Next T

Wait Key

 

دستور PERFORM CHECKLIST FOR DISPLAY MODES

با این سلسله از دستورات می توانیم تعداد حالت های پشتیبانی شونده از مختصات طولی و عرضی ( رزولوشن صفحه نمایش ) را بدست آوریم . مثلا کامپیوتر ما ممکن است از چندین رزولوشن مانند 480*640 و 1280*1024 و 600*800 و 768*1024 و ... برای مشخص کردن تعداد نقطه های طولی و عرضی برای صفحه ی نمایش پشتیبانی کند . ولی کامپیوتر دیگر که از نوع لپ تاپ است فقط از رزولوشن 1280*1024 ( یعنی تعداد 1024 نقطه در عرض و 1280 نقطه در طول ) پشتیبانی می کند . این سلسله از دستورات بطور خودکار در هر کامپیوتر تعداد حالت ها را بدست می آورند . مانند مثال زیر :

 

Perform Checklist For Display Modes

"Print "Display Modes

()For T = 1 To CheckList Quantity

(Print "Mode ";T;" : "+CheckList String$(T

Next T

Wait Key

 

با اجرای این مثال برای هر حالت موجود ، طول و عرض و عمق رنگ ( 16 بیت و 32 بیت ) مربوط به آن ، چاپ خواهد شد .

 

دستور SET DISPLAY MODE

قبلا برای تنظیم مختصات طولی وعرضی ( رزولوشن ) صفحه ی نمایشگر از پنجره ی Project Maneger استفاده می کردیم . با این دستور ، می توانیم حین اجرای برنامه ، رزولوشن صفحه ی نمایشگر ( Monitor ) را تغییر دهیم . مانند دستورالعمل زیر :

 

SET DISPLAY MODE Width,Height,Depth

 

طبق این دستورالعمل به جای Width مختصات طولی صفحه نمایشگر ( تعداد نقات از چپ به راست صفحه ) و به جای Height مختصات عرضی صفحه نمایشگر (تعداد نقات از بالا به پایین صفحه ) و به جای Depth عمق رنگ صفحه نمایشگر ( 16 بیت یعنی تعداد رنگ های کم و 32 بیت یعنی تعداد رنگ های زیاد که حدود 16 میلیون رنگ می باشد ) را مشخص می کنیم . مانند مثال زیر :

 

Set Display Mode 800,600,32

Wait Key

 

در این مثال ، تعداد نقات طولی 800 و تعداد نقات عرضی 600 با بالاترین تعداد رنگ ها ( 32 بیت معادل 16777216 رنگ ) مشخص شدند .

 

نکته : همیشه از سایز های استاندارد برای این دستور استفاده کنید . مانند 768*1024 و 1280*1024 و 600*800 و 480*640 و از این قبیل .

 

تابع CHECK DISPLAY MODE

برای آنکه بفهمیم آیا نمایشگر توانایی قرار گرفتن در رزولوشن پیشنهادی ما را دارد یا نه از تابعCHECK DISPLAY MODE استفاده می کنیم . طول و عرض مختصات پیشنهادی و همچنین عمق رنگ ( 16 و یا 32 بیت ) را وارد تابع می کنیم . اگر تابع عدد یک را برگرداند ، معلوم می شود که قابلت قرار گرفتین در این مختصات و رنگ را دارد و اگر مقدار صفر برگردانده شود ، یعنی توانایی قرار گرفتن در چنین مختصاتی را ندارد . مانند مثال زیر :

 

"Print "Please Wait To Change Resolotion To 1024*768,32

Wait 5000

If Check Display Mode(1024,768,32) = 1

      Set Display Mode 1024,768,32

      "Print "Change Successfully

Else

      "Print "Not Change

EndIf

Wait Key

 

دستور SET WINDOW ON

این دستور صفحه ی اجرای بازی را به حالت پنجره تبدیل می کند . که می توان آن را حرکت داد و یا بزرگ و کوچک کرد . مانند مثال زیر .

 

Set Window On

"Print "Window Mode Is On

Wait key

 

دستور SET WINDOW OFF

اگر با استفاده از دستور قبلی (SET WINDOW ON ) ، صفحه ی اجرای بازی را به حالت پنجره درآورده باشیم ، با این دستور می توانیم صفحه را به حالت عادی درآوریم . مانند مثال زیر :

 

Set Window On

"... Print "Window Mode Is On . Please Wait

Wait 2000

Set Window Off

"Cls : Print "Window Mode Is Off

Wait key

 

دستور SET WINDOW TITLE

با این دستور می توانیم برای پنجره ی بازی یک تیتر ( عنوان در بالای پنجره ) قرار دهیم . مانند مثال زیر :

 

Set Window On

"Set Window Title "MY WINDOW TEXT

Wait 2000

 

با اجرای این مثال عبارت MY WINDOW TEXT در بالاترین قسمت پنجره یعنی نوار عنوان قرار خواهد گرفت .

 

دستور SET WINDOW SIZE

با این دستور می توانیم طوع و ارتفاع پنجره ای که بازی در آن اجرا می شود را ، مشخص کنیم . مانند دستورالعمل زیر :

 

SET WINDOW SIZE Width,Height

 

طبق این دستورالعمل به جای Width اندازه ی طول پنجره و به جای Height اندازه ی ارتفاع پنجره را قرار می دهیم . مانند مثال زیر :

 

Set Window On

Print "Please Wait To Sizable Window ." : Wait 2000 : Cls

Set Window Size 500,400

Wait Key

 

دستور MINIMIZE WINDOW

این دستور اندازه ی صفحه ی اجرای بازی را به حداقل اندازه ممکن می رساند . یعنی تنها عنوان آن در نوار وظیفه ی ویندوز قابل مشاهده خواهد بود . مانند مثال زیر :

 

Minimize Window

Wait key

 

دستور MAXIMIZE WINDOW

این دستور اندازه ی صفحه ی اجرای بازی را به بیشترین اندازه ممکن می رساند . یعنی به اندازه ی کل صفحه ی نمایشگر . مانند مثال زیر :

 

Minimize Window

Wait 2000

Maximize Window

Wait key

 

دستور RESTORE WINDOW

این دستور پنجره ی اجرای بازی را از حالت حداکثر و یا حداقل به حالت معمولی تبدیل می کند . مانند مثال زیر :

 

Set Window On

Maximize Window

Wait 2000

Restore Window

Wait Key

 

دستور HIDE WINDOW و دستور SHOW WINDOW

با دستور HIDE WINDOW می توانیم صفحه ی اجرای بازی را مخفی و با دستور SHOW WINDOW می توانیم آن را دوباره آشکار کنیم . مانند مثال زیر :

 

Set Window On

Wait 2000

Hide Window

Wait 2000

Show Window

Wait Key

 

دستور SET WINDOW POSITION

اگر صفحه ی اجرای بازی توسط دستور Set Window On بصورت پنجره درآمده باشد ، با این دستور می توانیم فاصله ی پنجره ی بازی را از بالا و از سمت چپ صفحه ی نمایش ، تنظیم کنیم . مانند دستورالعمل زیر :

 

SET WINDOW POSITION X,Y

 

طبق این دستورالعمل به جای X فاصله ی پنجره ی بازی تا قسمت چپ صفحه ی نمایشگر و به جای Y فاصله ی پنجره ی بازی تا قسمت بالای صفحه ی نمایشگر را قرار می دهیم . مانند مثال زیر :

 

Set Window On

SET WINDOW POSITION 100,100

Wait Key

 

تابع SCREEN WIDTH و تابع SCREEN HEIGHT و تابع SCREEN DEPTH

تابع ()Screen Width تعداد نقات تشکیل دهنده ی طول صفحه ی اجرای بازی

و تابع ()Screen Height تعداد نقاط تشکیل دهنده ی ارتفاع صفحه ی اجرای بازی

و تابع ()Screen Depth مقدار رنگ های تشکیل دهنده ی صفحه ی اجرای بازی ( 16 بیت و یا 32 بیت ، که 32 بیت همان 16777216 رنگ می باشد ) را برمی گرداند . مانند مثال زیر :

 

Set Display Mode 800,600,32

(()Print "Screen Width = " + Str$(Screen Width

(()Print "Screen Height = " + Str$(Screen Height

(()Print "Screen Depth = " + Str$(Screen Depth

Wait Key

 

تابع SCREEN FPS

این تابع تعداد فریم های اجرای بازی را در هر ثانیه را برمی گرداند . مانند مثال زیر :

 

Sync On

Sync Rate 45

Do

Sync

(()Print "Screen Fps = " + Str$(Screen fps

Loop



جمعه 23 فروردين 1392برچسب:, :: 1:12 ::  نويسنده : ابوالفضل

 در این فصل یاد می گیریم تا بر روی فایل ها و پوشه های موجود در Hard کامپیوتر کار کنیم . مثلا فایل یا پوشه ای را کپی ، ایجاد ، حذف ، تغییر نام و ... را انجام دهیم .

 

دستور DIR

این دستور اسامی تمامی فایل ها و پوشه هایی را که در مسیر جاری وجود دارند ، بر روی صفحه ی نمایشگر چاپ می کند . یعنی اگر مسیر جاری C:Example باشد ، اسامی فایل ها و پوشه های موجود در این مسیر چاپ خواهد شد . مانند مثال زیر :

 

Dir

Do

Loop

 

دستورات PERFORM CHECKLIST FOR FILES

این سلسله از دستورات ، مانند دستور قبلی ( یعنی دستور DIR ) اسامی تمامی فایل ها و پوشه هایی را که در مسیر جاری وجود دارند را برمی گرداند . با این تفاوت که علاوه بر نمایش آنها ، توابع این دستورات کنترل بیشتری بر روی داده ها به ما خواهد داد . مانند مثال زیر :

 

Perform Checklist For Files

()For T = 1 to CheckList Quantity

(Print "Files = " + CheckList String$(T

Next T

Wait Key

 

تابع GET DIR

با استفاده از این تابع می توانیم مسیر جاری را پیدا کنیم . مانند مثال زیر :

 

()$Print "Current Dir = " + Get Dir

Wait Key

 

دستور SET DIR

با این دستور می توانیم مسیر جاری را تغییر دهیم . یعنی اگر مسیر بر روی /:C تنظیم شود ، با استفاده از دستور Dir می توانیم اسامی فایل ها و پوشه های موجود در این مسیر را نمایش دهیم . مانند مثال زیر :

 

"/:Set Dir "C

Dir

Wait Key

 

با اجرای این مثال اسامی تمامی فایل ها و پوشه های موجود در مسیر /:C نمایش داده خواهد شد .

 

تابع WINDIR

این تابع مسیری که ویندوز در آن نصب شده باشد را برمی گرداند . مانند مثال زیر :

 

()$Print "Current Windows Directory = " + WinDir

Wait Key

 

تابع APPNAME

این تابع نام و مسیر برنامه ی ما را در حالت اجرا برمی گرداند . یعنی اگر برنامه ای که می نویسیم در هر مسیری وجود داشته باشد . موقع اجرای برنامه ، تابع APPNAME مسیر و نام برنامه ی ما را برمی گرداند . مانند مثال زیر :

 

()$Print "AppName = " + AppName

Wait Key

 

دستور DRIVELIST

این دستور اسامی درایو های موجود در HARD را چاپ می کند . مانند مثال زیر :

 

DriveList

do

loop

 

دستورات PERFORM CHECKLIST FOR DRIVES

این تابع همانند دستور قبلی نام درایو های موجود را برمی گرداند . مانند مثال زیر :

 

Perform Checklist For Drives

()For T = 1 to CheckList Quantity

(Print "Drives = " + Checklist String$(T

Next T

Wait Key

 

تفاوت این دستورات با دستور قبلی ( Drive List ) در توابع آن می باشد . یعنی با این دستورات و توابع می توانیم کنترل بیشتری بروی نام و تعداد درایو ها داشته باشیم .

 

دستور MAKE FILE

با این دستور می توانیم فایل خالی با فرمت دلخواه در هر مسیری ایجاد کنیم . مانند دستورالعمل زیر :

 

MAKE FILE fileName

 

طبق این دستورالعمل به جای fileName نام درایو و مسیر موجود و نام فایل و فرمت آن را قرار می دهیم . مانند مثال زیر :

 

"Make File "C:MyDirectoryMyFile.txt

 

با اجرای این مثال فایلی با نام MyFile با فرمت txt در مسیر C:MyDirectory ایجاد می شود .

نکته 1 : اگر فایلی قبلا با همین نام و فرمت در همین مسیر وجود داشته باشد . آن فایل پاک خواهد شد و یک فایل خالی جایگزین آن می شود .

 

نکته 2 : اگر مسیر انتخابی برای ایجاد فایل وجود نداشته باشد ، هیچ فایلی ایجاد نخواهد شد . در این مثال اگر دارکتوری MyDirectory در درایو C وجود نداشته باشد ، هیچ فایلی ایجاد نخواهد شد .

 

دستور MAKE DIRECTORY

با این دستور می توانیم یک دایرکتوری خالی ( پوشه ای برای نگه داشتن پوشه ها و فایل ها ) ایجاد کنیم . مانند دستورالعمل زیر :

 

MAKE DIRECTORY DirectoryName

 

طبق این دستورالعمل به جای DirectoryName مسیر و نام دایرکتوری ( پوشه ) جدید را قرار می دهیم . مانند مثال زیر :

 

"Make Directory "C:/oldDirectory/NewDirectory

 

با اجرای این مثال دارکتوری NewDirectory در مسیر C:/oldDirectory ایجاد می شود .

نکته : اگر مسیری برای ایجاد داریکتوری وجود نداشته باشد ، داریکتوری جدید ایجاد نخواهد شد .

 

دستور DELETE FILE

با این دستور می توانیم فایلی را که از قبل ایجاد شده را ، حذف کنیم ( از بین ببریم ) . مانند دستورالعمل زیر :

 

DELETE FILE Filename

 

طبق این دستورالعمل به جای Filename مسیر و نام فایل مورد نظر را جهت پاک شدن قرار می دهیم . مانند مثال زیر :

 

"Delete File "C:/MyDirectory/File.dat

با اجرای این مثال فایل File.dat موجود در مسیر C:/MyDirectory حذف می شود .

 

دستور COPY FILE

این دستور فایلی که قبلا ایجاد شده باشد را ، در مسیری دلخواه کپی می کند . مانند دستوالعمل زیر :

 

COPY FILE SourceFilename,DestinationFilename

 

طبق این دستورالعمل به جای SourceFilename مسیر و نام فایلی که می خواهیم از روی آن کپی ایجاد کنیم را ، قرار می دهیم و به جای DestinationFilename مسیر و نام فایل جدید را قرار می دهیم .

می توانیم در قسمت DestinationFilename نام جدیدی برای فایل جدید در نظر بگیریم ، منتهی مسیر مورد نظر برای فایل جدید باید وجود داشته باشد .

 

"Copy File "C:/data.dat","D:/MyDirextory/backupdata.dat

 

با اجرای این مثال فایلی جدید با نام backupdata.dat در مسیر D:/MyDirextory از روی فایل data.dat موجود در مسیر :C ایجاد خواهد شد .

 

دستور MOVE FILE

با این دستور می توانیم فایل موجود را به مسیر جدید انتقال دهیم . همچنین می توانیم نام جدیدی را هم در نظر بگیریم . مانند دستورالعمل زیر :

 

MOVE FILE SourceFilename,DestinationFilename

 

طبق این دستورالعمل به جای SourceFilename مسیر و نام فایلی را که می خواهیم انتقال دهیم ، قرار می دهیم و به جای DestinationFilename مسیر و نام جدیدی را برای انتقال در نظر می گیریم .

 

نکته : مسیر مورد نظر برای انتقال فایل باید وجود داشته باشد .

 

"Move File "C:oldfile.txt","d:oldfile.txt

 

یا

 

"Move File "C:oldfile.txt","d: ewfile.txt

 

دستور RENAME FILE

با استفاده این دستور می توانیم فایل مورد نظرمان را تغییر نام دهیم . مانند دستورالعمل زیر :

 

RENAME FILE SourceFilename,NewFilename

 

طبق این دستورالعمل به جای SourceFilename نام و مسیر فایل مورد نظرمان را قرار می دهیم و به جای NewFilename نام جدیدی را وارد می کنیم . مانند مثال زیر :

 

"Rename File "C:Data.txt","C: ewData.txt

 

نکته : طبق دستورالعمل اگر به جای NewFilename مسیر جدیدی را قرار دهیم ، فایل به مسیر جدید و با نام جدید نقل مکان خواهد کرد . مانند مثال زیر :

 

"Rename File "C:Data.txt","D: ewData.txt

 

در این مثال علاوه بر این که نام فایل از Data به newData تغییر پیدار کرد . خود فایل هم از مسیر :C به مسیر :D انتقال پیدا کرد .

 

دستور EXECUTE FILE

از این دستور برای اجرای فایل ها استفاده می کنیم . مانند دستورالعمل زیر :

 

EXECUTE FILE Filename,Commandline,Directory

 

طبق این دستورالعمل به جای Filename نام و مسیر فایل اجرایی مورد نظرمان را قرار می دهیم . مانند مثال زیر :

 

"","","EXECUTE FILE "C:WINDOWSNotePad.exe

Wait Key

 

با اجرای این مثال برنامه ی NotePad اجرا خواهد شد . این برنامه فایلی است با فرمت Exe و به تنهایی اجرا می شود . ولی فایل هایی هم هستند که اجرایی نیستند ؛ بلکه اطلاعاتی را برای برنامه های دیگر نگه می دارند . مانند فایل هایی با فرمت Doc که توسط برنامه ی Microsot Word ایجاد شده اند . پس برای استفاده و باز کردن این فایل باید به جای Directory نام و مسیر فایل برنامه ی Microsoft Word را هم قرار دهیم . مانند مثال زیر :

 

EXECUTE FILE "C:MyFile.Doc","","C:Program FilesMicrosoft 

"OfficeOffice10WinWord.Exe

Wait Key

 

اگر برنامه ی Microsoft Word از قبل نصب شده باشد . می توانیم تنها نام و مسیر فایل را قرار دهیم . مانند مثال زیر :

 

"","","EXECUTE FILE "C:MyFile.Doc

Wait Key

 

تابع FILE EXIST

با استفاده از این تابع می توانیم بفهمیم که آیا فایل مورد نظرمان وجود دارد یا خیر . مانند دستورالعمل زیر :

 

(ReturnInteger = FILE EXIST(Filename

 

طبق این روش به جای Filename نام و مسیر فایل مورد نظرمان را قرار می دهیم . اگر فایل مورد نظر در مسیر وجود داشته باشد ، ReturnInteger برابر یک و اگر وجود نداشته باشد ، ReturnInteger برابر صفر خواهد بود . مانند مثال زیر :

 

"myFile$ = "C:MyDirectoryFile.exe

"If File Exist(myFile$)=1 Then Print "Yes" Else Print "No

Wait Key

 

با اجرای این مثال اگر فایل File با فرمت exe در مسیر C:MyDirectory ، وجود داشته باشد ، عبارت Yes و اگر وجود نداشته باشد ، عبارت No چاپ خواهد شد .

 

تابع PATH EXIST

با این تابع می توانیم بررسی کنیم که آیا مسیر مورد نظرمان وجود دارد یا خیر . مانند دستورالعمل زیر :

 

(ReturnInteger = PATH EXIST(PATH

 

طبق این دستورالعمل به جای PATH مسیر مورد نظرمان را قرار می دهیم . اگر مسیر مورد نظر وجود داشته باشد ، ReturnInteger برابر یک و اگر وجود نداشته باشد ، ReturnInteger برابر صفر خواهد بود . مانند مثال زیر :

 

"myPath$ = "C:MyDirectoryDirect

"If Path Exist(myPath$)=1 Then Print "Yes" Else Print "No

Wait Key

 

با اجرای این مثال اگر مسیر C:MyDirectoryDirect وجود داشته باشد ، عبارت Yes و اگر وجود نداشته باشد ، عبارت No چاپ خواهد شد .

 

دستور OPEN TO WRITE و دستور ClOSE FILE

با استفاده از این دستور می توانیم فایلی را جهت نوشتن اطلاعات در آن باز کنیم . مانند دستورالعمل زیر :

 

OPEN TO WRITE FileNumber,Filename

 

طبق این دستورالعمل به جای Filename نام و مسیر فایل مورد نظرمان را قرار می دهیم . و به جای FileNumber یک عدد بین 1 تا 32 قرار می دهیم و در برنامه توسط همین شاخص عددی می توانیم به فایل باز شده ، فرمان خواندن و یا نوشتن اطلاعات را بدهیم . در واقع برای هر فایل باز شده در برنامه ، باید یک عدد به آن فایل اختصاص پیدا کند . مانند مثال زیر :

 

"Open To Write 1,"C:Data.dat

Close File 1

 

با اجرای این مثال فایل Data.dat را با هدف نوشتن اطلاعات در آن باز کردیم و عدد یک را به آن اختصال دادیم . و در خط بعدی با توجه به عددی که به فایل باز شده اختصاص داده بودیم ، فایل را بستیم . فایل باز شده بعد از اتمام کار باید بسته شود تا از آسیب دیدگی آن جلوگیری بعمل آید .

 

تابع FILE OPEN

این تابع باز و یا بسته بود فایل را بررسی می کند . یعنی طبق عددی را که در برنامه به هر فایل اختصاص داده بودیم ، آن عدد در این تابع وارد شود ، اگر فایل مورد نظر باز بوده باشد ، مقدار این تابع عدد یک و در غیر اینصورت اگر فایل بسته باشد ، عدد صفر توسط این تابع برگردانده خواهد شد . یعنی اگر از دستور Close File استفاده شده باشد ، عدد صفر توسط این تابع برگردانده خواهد شد . مانند مثال زیر :

 

"Open To Write 1,"C:Data.dat

"If File Open(1)=1 Then Print "File Is Open" Else Print "File Is Close

Close File 1

"If File Open(1)=1 Then Print "File Is Open" Else Print "File Is Close

Wait Key

 

در این مثال در خط اول ، فایل Data.dat موجود در مسیر :C جهت نوشتن اطلاعت باز شد و در خط دوم تابع ()File Open به دلیل باز بودن فایل عدد یک را برگرداند و عبارت File Is Open چاپ شد و در خط سوم فایل بسته شد . به همین دلیل تابع ()File Open به دلیل بسته بودن فایل عدد صفر را برگرداند و عبارت File Is Close چاپ شد .

 

توجه ! اگر فایل Data.dat وجود نداشت ، با دستور Open To Write بطور خودکار ایجاد و باز می شد .

 

دستور WRITE WORD

با این دستور می توانیم عددی را در محدوده ی متغیر از نوع Word ، داخل فایل بنویسیم . مانند دستورالعمل زیر :

 

WRITE WORD FileNumber,Variable

 

طبق این دستورالعمل به جای FileNumber عدد اختصاص داده شده به فایل و به جای Variable عددی با محدوده متغیر Word یعنی عددی بین 0 تا 65535 جهت ذخیره شدن در Hard قرار می دهیم . مانند مثال زیر :

 

"Open To Write 1,"Data.dat

If File Open(1)=1

   write word 1,42

EndIf

Close File 1

 

در این مثال ابتدا فایل Data.dat را جهت نوشتن اطلاعات باز می کنیم . سپس قبل از نوشتن اطلاعات داخل فایل بررسی می کنیم که آیا فایل برای نوشته شدن اطلاعات باز است یا بسته . در صورت باز بودن ، می توانیم اطلاعات را در آن بنویسیم و بعد فایل را ببندیم .

 

نکته : در این مثال فرض بر این است که فایل Data.dat در پوشه ی پروژه است ( یعنی فایل Data.dat کنار فایل اجرایی است ) . به خاطر همین مسیر فایل را تایپ نکردیم .

 

دستور OPEN TO READ

با استفاده از این دستور می توانیم فایلی را جهت خواندن اطلاعات از آن باز کنیم . مانند دستورالعمل زیر :

 

OPEN TO READ FileNumber,Filename

 

طبق این دستورالعمل به جای Filename نام و مسیر فایل مورد نظرمان را قرار می دهیم . و به جای FileNumber یک عدد بین 1 تا 32 قرار می دهیم . مانند مثال زیر :

 

"Open To Read 1,"C:Data.dat

Close File 1

 

با اجرای این مثال فایل Data.dat را با هدف خواندن اطلاعات از آن باز کردیم و عدد یک را به آن اختصال دادیم . و در خط بعدی با توجه به عددی که به فایل باز شده اختصاص داده بودیم ، فایل را بستیم . دقت کنید تا فایل باز شده بعد از اتمام کار حتما بسته شود تا از آسیب دیدن جلوگیری شود .

 

دستور READ WORD

با این دستور می توانیم عددی را در محدوده ی متغیری از نوع Word ، که از قبل داخل فایل نوشته بودیم ، بخوانیم . مانند دستورالعمل زیر :

 

READ WORD FileNumber,Variable

 

در این مثال به جای FileNumber عدد اختصاص داده شده به فایل و به جای Variable متغیری با محدوده متغیر Word قرار می دهید . مانند مثال زیر :

 

"Open To Read 1,"Data.dat

If File Open(1)=1

Read word 1,A

Print A

EndIf

Close File 1

 

در این مثال ابتدا فایل را جهت خواندن اطلاعات باز می کنیم . سپس قبل از خواندن اطلاعات داخل فایل بررسی می کنیم که آیا فایل برای خواندن اطلاعات از آن باز است یا نه . در صورت باز بودن ، می توانیم اطلاعات را از آن بخوانیم و بعد فایل را ببندیم . در این مثال ما یک متغیر به نام َA ایجاد کردیم تا از داده استفاده کنیم .

 

نکته : در مثال های اخیر ما مسیر فایل را مشخص نکردیم . یعنی عبارت , "Data.dat" به این معنی است که فایل در همان مسیری ایجاد شود که برنامه ما هم اکنون در آن مسیر در حال اجراست . یعنی اگر مسیر پروژه ی ما در آدرس زیر

C:Program FilesDark Basic SoftwareDark Basic ProfessionalProjectsprjExample

 ایجاد شده باشد . با اجرای برنامه ، فایل Data.dat در همین مسیر ایجاد خواهد شد . و اگر فایل را Compile کنیم . یعنی آن را اجرایی کنیم و فایلی با فرمت Exe ایجاد گردد ، می توانیم آن فایل را در هر مسیری و در هر کامپیوتری کپی کنیم و فایل Data.dat هم با این روش کنار فایل اجرایی یعنی در همان پوشه ای که فایل اجرایی در آن وجود دارد ایجاد خواهد شد . از این روش در تمامی دستورات مربوط به کار با فایل ها در تمامی وبلاگ می توان استفاده کرد . مگر اینکه مسیر جاری توسط دستور SET DIR تغییر پیدا کند .

 

دستور WRITE BYTE

با این دستور می توانیم عددی در محدوده ی متغیری از نوع Byte ، داخل فایل بنویسیم . مانند دستورالعمل زیر :

 

WRITE Byte FileNumber,Variable

 

دستور READ BYTE

با این دستور می توانیم عددی را در محدوده ی متغیری از نوع Byte ، که از قبل داخل فایل نوشته بودیم ، بخوانیم . مانند دستورالعمل زیر :

 

READ BYTE FileNumber,Variable

 

دستور WRITE LONG

با این دستور می توانیم عددی در محدوده ی متغیری از نوع Integer ، داخل فایل بنویسیم . مانند دستورالعمل زیر :

 

WRITE LONG FileNumber,Variable

 

دستور READ LONG

با این دستور می توانیم عددی را در محدوده ی متغیری از نوع Integer ، که از قبل داخل فایل نوشته بودیم ، بخوانیم . مانند دستورالعمل زیر :

 

READ WORD FileNumber,Variable

 

دستور WRITE FLOAT

با این دستور می توانیم عددی اعشاری ( ممیزدار ) را در محدوده ی متغیری از نوع Float ، داخل فایل بنویسیم . مانند دستورالعمل زیر :

 

WRITE Float FileNumber,Variable

 

دستور READ FLOAT

با این دستور می توانیم عددی را در محدوده ی متغیری از نوع Float ، که از قبل داخل فایل نوشته بودیم ، بخوانیم . مانند دستورالعمل زیر :

 

READ Float FileNumber,Variable

 

برای اینکه مقدار عدد ممیز دار درست خوانده شود باید از متغیری ممیز دار نیز برای خواندن استفاده شود ، مانند مثال زیر که از متغیر #a استفاده می کنیم :

 

"Open To Read 1,"data.dat

If File Open(1)=1

#Read Float 1,a

(#Print "value = "+str$(a

EndIf

Close File 1

Wait Key

 

دستور WRITE STRING

با این دستور می توانیم عبارتی کاراکتری را ، داخل فایل بنویسیم . مانند دستورالعمل زیر :

 

WRITE STRING FileNumber,Variable

 

طبق این دستورالعمل به جای FileNumber عدد اختصاص داده شده به فایل و به جای Variable عبارتی کاراکتری قرار می دهیم ( بصورت عبارت و یا متغیر کاراکتری ) . مانند مثال زیر :

 

"Open To Write 1,"Data.dat

If File Open(1)=1

   ".Write String 1,"This Is A Data

EndIf

Close File 1

 

دستور READ STRING

با این دستور می توانیم عبارتی را که از قبل داخل فایل نوشته بودیم ، بخوانیم . مانند دستورالعمل زیر :

 

READ STRING FileNumber,Variable

 

طبق این دستورالعمل به جای FileNumber عدد اختصاص داده شده به فایل و به جای Variable متغیر کاراکتری قرار می دهیم . مانند مثال زیر :

 

"Open To Read 1,"Data.dat

If File Open(1)=1

$Read String 1,A

$Print A

EndIf

Close File 1

 

تابع FILE SIZE

این تابع اندازه ی فایل مورد نظرمان را بر حسب بایت برمی گرداند . هر 1000 بایت 1 کیلو بایت می باشد . مانند مثال زیر :

 

("Print File Size("C:data.dat



پنج شنبه 22 فروردين 1392برچسب:, :: 1:46 ::  نويسنده : ابوالفضل

 در این فصل به چگونگی کنترل بازی توسط کاربر می پردازیم . دستورات و توابعی را یاد می گیریم تا وردی ها را کنترل کنیم . مثلا در عوض فشرده شدن کلید های موس و کیبورد یا حرکت موس ، کار خاصی را انجام دهیم .

 

دستور HIDE MOUSE

این دستور باعث مخفی شدن شکل موس ( فلش متحرک ) بر روی صفحه ی نمایشگر می شود . مانند مثال زیر :

 

HIDE MOUSE

Wait Key

 

با اجرای این مثال زمانی که برنامه در حالت اجراست ، شکل موس دیده نخواهد شد .

 

دستور SHOW MOUSE

اگر از دستور گذشته ( HIDE MOUSE ) در برنامه استفاده کرده باشیم . می توانیم با این دستور شکل موس ( فلش متحرک ) را دوباره در صفحه نمایشگر ظاهر کنیم . مانند مثال زیر :

 

HIDE MOUSE

"PRINT "Hide Mouse

WAIT 5000

"CLS : PRINT "Show Mouse

SHOW MOUSE

WAIT KEY

 

در این مثال در خط اول شکل موس مخفی و پس از 5 ثانیه در خط پنجم شکل موس دوباره آشکار خواهد شد .

 

دستور POSITION MOUSE

با استفاده از این دستور ، می توانیم موقعیت مکانی موس را بر روی صفحه ی نمایشگر مشخص کنیم . مانند دستورالعمل زیر :

 

POSITION MOUSE X,Y

 

طبق این دستورالعمل به جای X موقعیت طولی ( فاصله ی موس تا چپ صفحه ) و به جای Y موقعیت عرضی ( فاصله ی موس تا بالای صفحه ) را قرار  می دهیم . تعیین موقعت موس با این دستور بستگی به مختصات طولی و عرضی دارد . یعنی اگر برای مثال ، مختصات طولی و عرضی نمایشگر ( رزولوشن ) را روی 480*640 تنظیم کرده باشیم ( قبلا در فصل سوم زمان معرفی دستور Set Cursor توضیح داده شد ) ، کمترین مقدار X صفر و بیشترین مقدار آن 639 و همچنین کمترین مقدار Y صفر و بیشترین مقدار آن 479 خواهد بود . مانند مثال زیر :

 

Do

Position Mouse 100,100

WAIT 500

Position Mouse 400,400

WAIT 500

Loop

 

در این مثال ، هر 500 میلی ثانیه ، موقعیت موس با دستور Position Mouse تغییر خواهد کرد . 

 

دستور CHANGE MOUSE

با این دستور می توانیم شکل موس را تغییر دهیم . مانند دستور العمل زیر :

 

CHANGE MOUSE CursorNumber

 

طبق این دستورالعمل ، اگر به جای CursorNumber عدد صفر را قرار دهیم ، شکل موس به شکل ساعت شنی در می آید و اگر به جای CursorNumber عدد یک را قرار دهیم ، شکل موس به حالت عادی اش ( به شکل فلش ) برمی گردد . مانند مثال زیر :

 

"... Print "Please Wait

CHANGE MOUSE 1

Wait 2500

"Cls : Print "Thank You

CHANGE MOUSE 0

Do : Loop

 

با اجرای این مثال در خط دوم ، موس بشکل ساعت شنی در می آید و در خط پنجم ، موس بشکل عادی اش برمی گردد . زمانی که محاسبات سنگینی را انجام می دهیم ، از این روش برای نشان دادن حالت انجام محسابات استفاده می کنیم .

 

دستور WRITE TO CLIPBOARD

با استفاده از این دستور ، می توانیم یک عبارت کاراکتری را به حافظه ی موقت ویندوز (Clipboard  ) انتقال دهیم . مانند مثال زیر :

 

"WRITE TO CLIPBOARD "This Is A Example

Wait Key

 

در این مثال ، برای نمونه عبارت This Is A Example را به حافظه ی موقت ویندوز (Clipboard  ) انتقال دادیم . می توانیم در برنامه های دیگر از آن استفاده کنیم ( بچسبانیم . یعنی به جای دیگری Paste کنیم ) . تا زمانی که حافظه ی Clipboard توسط این برنامه یا برنامه های دیگر دوباره تغیر نکرده باشد ، عبارت This Is A Example در حافظه ی Clipboard باقی خواهد ماند .

 

تابع $GET CLIPBOARD

اگر قبلا در حافظه موقت ویندوز ( Clipboard ) عبارتی ذخیره شده باشد ( از دستورWRITE TO CLIPBOARD و یا توسط دیگر برنامه ها ) ، با این تابع می توانیم مقدار آن را بخوانیم . مانند مثال زیر :

 

"A$ = "Hello

$WRITE TO CLIPBOARD A

()$retStr$ = GET CLIPBOARD

$Print retStr

Suspend For Key

 

با اجرای این مثال ، عبارت Hello در حافظه ی موقت ویندوز ( Clipboard ) ذخیره شد و در خط سوم ، به متغیر $retStr انتقال پیدا کرد و در خط چهارم چاپ شد .

 

تابع MOUSECLICK

با این تابع می توانیم کیک شدن دکمه ی سمت چپ موس را بررسی کنیم . یعنی اگر مقدار این تابع برابر یک بود یعنی کلید سمت چپ موس فشرده شده و اگر مقدار این تابع برابر صفر بود ، یعنی کلید سمت چپ موس فشرده نشده ، مانند مثال زیر :

 

Do

Cls

"If MouseClick() Then Text 10,10,"Click

"If MouseClick() = 0 Then Text 20,20,"No Click

Loop

 

با اجرای این مثال اگر دکمه ی سمت چپ موس فشرده شود ، عبارت Click چاپ می شود . و اگر دکمه ی سمت چپ موس فشرده نشده باشد ، عبارت No Click چاپ خواهد شد .

 

تابع MOUSEX و تابع MOUSEY

این دو تابع موقعیت طولی و عرضی موس را برمی گردانند . یعنی اگر موس در هر موقعیتی در صفحه ی نمایشگر باشد . مقدار تابع ()MouseX موقعیت طولی و مقدار تابع ()MouseY موقعیت عرضی موس را برمی گردانند ( حساب خواهند کرد ) . مانند مثال زیر :

 

Do

Cls

Set Cursor 10,10

()Print "Position X = " ; MouseX

Set Cursor 10,20

()Print "Position Y = " ; MouseY

Loop

 

با اجرای این مثال موقعیت طولی و عرضی موس بر روی صفحه ی نمایشگر چاپ خواهد شد . یعنی اگر موس در هر جایی از صفحه باشد ، مقدار فاصله ی آن تا سمت چپ صفحه بعنوان طول ( X ) و مقدار فاصله ی آن از بالای صفحه بعنوان عرض ( Y ) چاپ خواهد شد .

 

تابع MOUSEZ

هر زمان که چرخ مابین دو کلید چپ و راست موس را به بالا و پایین حرکت می دهیم ، مقدار این تابع کم و زیاد خواهد شد ( هر بار مقدار 120 واحد ) . می توانیم در بازی برای زوم کردن از آن استفاده کنیم . مانند مثال زیر :

 

Do

Cls

Set Cursor 10,10

()Select MouseZ

   Case 0

      "Print "No Zoom

   EndCase

   Case 120

      "Print "1X Zoom

   EndCase

   Case 240

      "Print "2X Zoom

   EndCase

   Case 360

      "Print "3X Zoom

   EndCase

   Case Default

      "Print "4X Zoom

   EndCase

EndSelect

()Print "Position Y = " ; MouseZ

Loop

 

تابع MOUSEMOVEX و تابع MOUSEMOVEY

تابع ()MouseMoveX مقدار حرکت موس را ، در جهت مختصات طولی ( محور X نمایشگر ) ، و تابع ()MouseMoveX مقدار حرکت موس را ، در جهت مختصات عرضی ( محور Y نمایشگر ) در هر لحظه از زمان محاسبه کرده و مقدار آن را برمی گرداند . مانند مثال زیر :

 

do

Cls

()X# = MouseMoveX

(#Text 10,10,"MouseMoveX = " + Str$(X

(()Text 10,30,"MouseMoveY = " + Str$(MouseMoveY

wait 100

Loop

 

این مثال را تایپ و اجرا کنید . هم اکنون با حرکت دادن موس ، مقدار حرکت موس در هر لحظه بر روی صفحه ی مانیتور نمایش داده خواهد شد . ما در این مثال از دستور wait استفاده کردیم تا برنامه کمی کند اجرا شود ، تا شما اعداد این دو تابع را به خوبی ببینید .

 

تابع MOUSEMOVEZ

هر زمان که چرخ مابین دو کلید چپ و راست موس را به بالا و پایین حرکت می دهیم ، مقدار حرکت این چرخ در هر لحظه توسط این تابع محاسبه و بصورت یک عدد برگردانده می شود . ( هر بار مقدار 120 واحد ) . مانند مثال زیر :

 

Do

Cls

()Print "MouseMoveZ = " ; MouseMoveZ

Wait 100

Loop

 

تابع UPKEY

در صفحه ی کیبورد کامپیوتر ، چهار کلید ، جهات ( بالا و پایین و چپ و راست ) را نشان می دهند ، که به Arrow Keys معروف هستند .  زمانی که دکمه جهت بالا فشرده شده باشد ، تابع ()UpKey مقدار یک و زمانی که این دکمه رها شده باشد ، تابع ()UpKey مقدار صفر را در خود نگه خواهد داشت . همانند مثال زیر :

 

do

Cls

"if upkey() = 1 Then print "Up Key Has Been Pressed

"if upkey() = 0 Then print "Up Key Has Not Be Pressed

loop

 

با اجرای این مثال اگر دکمه ی جهت بالا فشرده شده باشد ، عبارت Up Key Has Been Pressed چاپ خواهد شد و اگر رها شده باشد ، عبارت Up Key Has Not Be Pressed چاپ خواهد شد . پس ما با استفاده از این گونه توابع می توانیم فشرده و یا رها شدن دکمه ها را کنترل کنیم .

 

تابع DOWNKEY

زمانی که دکمه جهت پائین فشرده شده باشد ، تابع ()DownKey مقدار یک و زمانی که همین دکمه رها شده باشد ، تابع ()DownKey مقدار صفر را برمی گرداند . مانند مثال زیر :

 

do

Cls

"if Downkey() = 1 Then print "Down Key Has Been Pressed

"if Downkey() = 0 Then print "Down Key Has Not Be Pressed

loop

 

تابع LEFTKEY

زمانی که دکمه جهت چپ فشرده شده باشد ، تابع ()LeftKey مقدار یک و زمانی که این دکمه رها شده باشد ، تابع ()LeftKey مقدار صفر را برمی گرداند . مانند مثال زیر :

 

do

Cls

"if Leftkey() = 1 Then print "Left Key Has Been Pressed

"if Leftkey() = 0 Then print "Left Key Has Not Be Pressed

loop

 

تابع RIGHTKEY

زمانی که دکمه جهت راست فشرده شده باشد ، تابع ()RightKey مقدار یک و زمانی که این دکمه رها شده باشد ، تابع ()RightKey مقدار صفر را برمی گرداند . مانند مثال زیر :

 

do

Cls

"if Rightkey() = 1 Then print "Right Key Has Been Pressed

"if Rightkey() = 0 Then print "Right Key Has Not Be Pressed

loop

 

تابع CONTROLKEY

زمانی که دکمه ی کنترل ( دو دکمه ای که عبارت Ctrl بر روی آنهاست ) فشرده شده باشد ( یکی یا هر دو ) ، تابع ()ControlKey مقدار یک را برمی گرداند و زمانی که این دکمه ( یکی یا هر دو ) رها شده باشد ، تابع ()ControlKey مقدار صفر را برمی گرداند . مانند مثال زیر :

 

do

Cls

"if ControlKey() = 1 Then print "Ctrl Key Has Been Pressed

"if Controlkey() = 0 Then print "Ctrl Key Has Not Be Pressed

loop

 

تابع SHIFTKEY

زمانی که دکمه ی شیفت ( دو دکمه ای که عبارت Shift بر روی آنهاست ) فشرده شده باشد ( یکی یا هر دو ) ، تابع ()ShiftKey مقدار یک را برمی گرداند و زمانی که این دکمه ( یکی یا هر دو ) رها شده باشد ، تابع ()ShiftKey مقدار صفر را برمی گرداند . مانند مثال زیر :

 

do

Cls

if ShiftKey() = 1

   "print "Shift Key Has Been Pressed

Else

   "print "Shift Key Has Not Be Pressed

EndIf

loop

 

تابع RETURNKEY

زمانی که دکمه Enter فشرده شده باشد ، تابع ()ReturnKey مقدار یک و زمانی که این دکمه رها شده باشد ، تابع ()ReturnKey مقدار صفر را برمی گرداند مانند مثال زیر :

 

do

Cls

"if Returnkey() = 1 Then print "Return Key Has Been Pressed

"if Returnkey() = 0 Then print "Return Key Has Not Be Pressed

loop

 

تابع SPACEKEY

زمانی که دکمه Space ( بزرگ ترین دکمه در کیبورد ) فشرده شده باشد ، تابع ()SpaceKey مقدار یک و زمانی که این دکمه رها شده باشد ، تابع ()SpaceKey مقدار صفر را برمی گرداند . مانند مثال زیر :

 

do

Cls

"if Spacekey() = 1 Then print "Space Key Has Been Pressed

"if Spacekey() = 0 Then print "Space Key Has Not Be Pressed

loop

 

تابع ESCAPEKEY

زمانی که دکمه Esc فشرده شده باشد ، تابع ()EscapeKey مقدار یک و زمانی که این دکمه رها شده باشد ، تابع ()EscapeKey مقدار صفر را برمی گرداند . مانند مثال زیر :

 

do

Cls

"if Escapekey() = 1 Then print "Escape Key Has Been Pressed

"if Escapekey() = 0 Then print "Escape Key Has Not Be Pressed

loop

 

نکته بسیار مهم :

زمانی که دکمه ی Esc را فشار می دهیم . از برنامه هم خارج می شویم . دلیل آن چیست ؟ دلیل آن این است که این خاصیت جزء رفتار های DarkBasic می باشد ، یعنی در هر زمان با زدن Esc از بازی خارج می شویم . حتی اگر نخواهیم . پس برای اینکه این خاصیت خروج سریع با زدن Esc را غیر فعال کنیم ، از کد زیر استفاده می کنیم . مانند مثال زیر :

 

Disable EscapeKey

do

Cls

"if Escapekey() = 1 Then print "Escape Key Has Been Pressed

"if Escapekey() = 0 Then print "Escape Key Has Not Be Pressed

loop

 

این مثال را اجرا می کنیم و دکمه ی Esc را چند بار می زنیم . حالا چگونه باید از برنامه خارج شویم ؟ می توانیم با فشردن سه کلید Ctrl و Alt و Delete بطور هم زمان برنامه را از مدار خارج کنیم . همچنین می توانیم مانند مثال زیر خروج از برنامه را تحت کنترل خود در بیاوریم .

 

Disable EscapeKey

do

Cls

if Inkey$() = "Q" Or Inkey$() = "q" Then End

"Print "Q Key To Exit Program

loop

 

در این مثال اگر دکمه ی [Q] را فشار دهیم ، از برنامه خارج خواهیم شد .

 

تابع INKEY

در مثال بالا از تابع ()$Inkey استفاده کردیم . یعنی اگر در هر زمان ، هر کدام از دکمه های حروف فشرده شود ، تابع ()$Inkey همان حرف را بصورت یک عبارت تک کاراکتری برمی گرداند . مانند مثال زیر :

 

do

Cls

()$Text 20,20,Inkey

loop

 

این مثال را اجرا کنید و چند دکمه ( دکمه های حروف ) را بزنید ( دکمه های A تا Z ) . با زدن هر دکمه حرف مربوط به آن دکمه چاپ خواهد شد . البته اگر دکمه ی Shift را نگه دارید و یا دکمه ی Caps Lock را قبلا روشن کرده باشید ، حالت کوچک و یا بزرگ بودن حروف تغییر خواهد کرد .

 

تابع SCANCODE

هر یک از دکمه های کیبورد ( تمامی دکمه ها بدون استثنا ) یک شماره ی کد مخصوص به خود را دارد . در صورت فشرده شدن هر کدام از دکمه ها ، تابع ()ScanCode در هر زمان شماره ی مخصوص همان دکمه را بصورت یک عدد برمی گرداند . مانند مثال زیر :

 

cls

do

if scancode() > 0

()print scancode

endif

loop

 

با اجرای این مثال می توانیم شناسایی کنیم که هر کدام از دکمه ها چه کدی دارد . مثلا با اجرای این مثال دکمه ی F1 را فشار می دهیم و برنامه عدد 59 را نشان می دهد . پس با این مثال فهمیدیم که کد دکمه ی F1 برابر 59 می باشد . پس اگر خواستیم از دکمه ی F1 بعنوان راهنما ( Help ) در بازی استفاده کنیم ، از این کد استفاده می کنیم . مانند مثال زیر :

 

Do

Cls

"Print "Press F1 To Help

"If ScanCode() = 59 Then Print "Help View

Loop




چهار شنبه 21 فروردين 1392برچسب:, :: 5:21 ::  نويسنده : ابوالفضل
در این فصل با چگونگی چاپ متن بر روی صفحه نمایشگر ( Monitor ) آشنا خواهیم شد . همچنین با استفاده از دستوارت این فصل قادر خواهیم بود تا ویژگی های مربوط به متنمان ، شامل نوع خط ( Font ) ، اندازه ، رنگ و ... را مشخص کنیم .
 
دستور TEXT
این دستور عبارتی را با توجه به مختصات طولی و عرضی داده شده ، بر روی صفحه ی نمایشگر ( Monitor ) چاپ می کند . مانند دستورالعمل زیر :
 
TEXT X,Y,String
 
طبق این دستورالعمل ابتدا عبارت کلیدی TEXT سپس به جای X مقدار فاصله ی متن از سمت چپ نمایشگر و به جای Y مقدار فاصله ی متن از بالا را بصورت دو عدد قرار می دهیم و به جای String عبارت مورد نظرمان را وارد می کنید . مانند مثال زیر :
 
"strText$ = "center
"TEXT 10,10,"top left
$TEXT 320,240,strText
WAIT KEY
 
در این مثال عبارت top left در مخصات ( طول = 10 و عرض = 10 ) و center در مختصات ( طول 320 و عرض 240 ) بر روی صفحه ی نمایشگر چاپ می شوند .
 
دستور CENTER TEXT
این دستور همانند دستور گذشته ، متن مورد نظر را در مختصات داده شده چاپ می کند . با این تفاوت که اگر متن مورد نظر را داخل یک مستطیل در نظر بگیریم ، مختصات نقطه ای که در وسط ضلع بالای آن مستطیل است ، دقیقا منطبق بر مختصات داده شده ی X و Y می شود . مانند مثال زیر :
 
"CENTER TEXT 320,10,"top
"CENTER TEXT 320,240,"center
WAIT KEY
 
دستور SET TEXT FONT
این دستور فونت عبارات مورد نظرمان را قبل از چاپ آن عبارت مشخص می کند . مانند دستورالعمل زیر :
 
SET TEXT FONT Fontname
 
طبق این دستورالعمل به جای Fontname نام فونت مورد نظرمان را قرار می دهیم . البته نام فونتی را که در ویندوز نصب شده باشد . مانند مثال زیر :
 
"SET TEXT FONT "verdana
"PRINT "hello verdana
 
WAIT KEY
 
در این مثال ابتدا در خط اول نوع فونت ( برای مثال verdana ) انتخاب و سپس متن مورد نظر با همان فونت چاپ خواهد شد . یعنی فونت باید قبل از چاپ مشخص شود .
 
دستور SET TEXT SIZE
با استفاده از این دستور می توانیم اندازه ی فونت عبارات مورد نظرمان را قبل از چاپ عبارات مشخص کنیم . مانند دستور العمل زیر :
 
SET TEXT SIZE size
 
طبق این دستورالعمل به جای size اندازه ی فونت مورد نظرمان را بصورت عدد وارد می کنیم . مانند مثال زیر :
 
"SET TEXT FONT "verdana
SET TEXT SIZE 30
 
"PRINT "hello verdana
WAIT KEY
 
با اجرای این مثال در خط اول ابتدا فونت verdana مشخص و در خط دوم اندازه ی فونت برابر 30 شد و در خط سوم عبارت hello verdana با فونت verdana و اندازه ی 30 چاپ شد .
 
دستور SET TEXT TO BOLD
با این دستور می توانیم عبارات مورد نظرمان را جهت چاپ ضخیم کنیم . مانند مثال زیر :
 
"CENTER TEXT 320,240,"No Bold
SET TEXT TO BOLD
"CENTER TEXT 320,260,"Bold
WAIT KEY
 
در این مثال عبارت No Bold چاپ و بعد از ضخیم شدن فونت توسط دستور SET TEXT TO BOLD در خط دوم عبارت Bold بصورت ضخیم چاپ شد .
 
دستور SET TEXT TO ITALIC
از این دستور برای زیرخط دار کردن عبارات جهت چاپ ، استفاده می کنیم . مانند مثال زیر :
 
SET TEXT TO ITALIC
"CENTER TEXT 320,240,"HELLO WORLD
WAIT KEY
 
دستور SET TEXT TO BOLDITALIC
به جای استفاده از دو دستور قبلی ( یعنی SET TEXT TO BOLD و SET TEXT TO ITALIC ) می توانیم از این دستور استفاده کنیم . مانند مثال زیر :
 
SET TEXT TO BOLDITALIC
"CENTER TEXT 320,240,"HELLO WORLD
WAIT KEY
 
 
دستور SET TEXT TO NORMAL
این دستور عملکرد های سه دستور گذشته ( یعنی SET TEXT TO BOLD و SET TEXT TO ITALIC و SET TEXT TO BOLDITALIC ) را خنثی می کند . مانند مثال زیر :
 
SET TEXT TO BOLD
SET TEXT TO ITALIC
"CENTER TEXT 320,240,"Bold And Italic
SET TEXT TO NORMAL
"CENTER TEXT 320,260,"No Bold And No Italic
WAIT KEY
 
دستور SET TEXT OPAQUE
با این دستور می توانیم عبارت مورد نظرمان را برای چاپ مجهز به رنگ پس زمینه کنیم . مانند مثال زیر :
 
For I = 1 To 200 Step 2
      CIRCLE 320,250,I
Next I
SET TEXT SIZE 30
"CENTER TEXT 320,220,"Text
SET TEXT OPAQUE
"CENTER TEXT 320,250,"Text OPAQUE
WAIT KEY
 
در این مثال در خطوط اول تا سوم 100 تا دایره رسم کردیم که بعدا راجع به ترسیم داره صحبت خواهیم کرد . بعد عبارت Text را چاپ و بعد از دستور SET TEXT OPAQUE عبارت Text OPAQUE بصورت پس زمینه دار چاپ شد . در اینجا پس زمینه عبارت Text OPAQUE سیاه رنگ است . بعد ها استفاده از رنگ های مختلف را برای چاپ متن و غیره ، آموزش خواهیم داد .
 
دستور SET TEXT TRANSPARENT
با بکار بردن این دستور می توانیم پس زمینه عبارتمان را برای چاپ حذف کنیم .
یعنی برعکس دستور SET TEXT OPAQUE . مانند مثال زیر :
 
For I = 1 To 200 Step 2
      CIRCLE 320,250,I
Next I
SET TEXT SIZE 30
"CENTER TEXT 320,220,"Text
SET TEXT OPAQUE
"CENTER TEXT 320,250,"Text OPAQUE
SET TEXT TRANSPARENT
"CENTER TEXT 320,280,"Text TRANSPARENT
WAIT KEY
 
دستور PERFORM CHECKLIST FOR FONTS
با استفاده از این سلسله دستورات ، میتوانیم تعداد و نام تمامی فونت های نصب شده بر روی ویندوز را بدست آوریم . مانند مثال زیر :
 
PERFORM CHECKLIST FOR FONTS
()FOR C = 1 TO CHECKLIST QUANTITY
(PRINT CHECKLIST STRING$(C
NEXT C
WAIT KEY
 
با اجرای این مثال ، ابتدا در خط اول توسط دستور PERFORM CHECKLIST FOR FONTS لیست مرکزی برنامه ی DarkBasic از اسامی فونت های نصب شده پر می شود . و دستور For … Next توسط تابع CHECKLIST QUANTITY که تعداد فونت ها را مشخص می کند . متغیر C را از یک تا تعداد فونت ها می شمارد . سپس در خط سوم مقدار تابع ()$CHECKLIST STRING با ورودی C ، که شامل نام فونت هاست توسط دستور PRINT چاپ می شود .
 
تابع TEXT FONT
این تابع نام فونت جاری را بصورت عبارت متنی برمی گرداند . یعنی نام آخرین فونتی که انتخاب شده . مانند مثال زیر :
 
"SET TEXT FONT "verdana
"PRINT "verdana
 
"SET TEXT FONT "Arial
"PRINT "Arial
()$PRINT "Current Font Is : " ; TEXT FONT
WAIT KEY
 
در این مثال نام آخرین فونت انتخاب توسط تابع ()$TEXT FONT چاپ می شود .
 
تابع TEXT SIZE
این تابع آخرین سایز انتخابی متن را برمی گرداند . مانند مثال زیر :
 
SET TEXT SIZE 10
SET TEXT SIZE 20
()PRINT TEXT SIZE
WAIT KEY
 
تابع TEXT STYLE
این تابع عددی را برمی گرداند که نشان دهنده ی نوع فونت ( Bold و Italic و BoldItalic ) می باشد . یعنی اگر آخرین بار از دستور SET TEXT TO ITALIC استفاده شده باشد ، عدد 1 و اگر آخرین بار از دستور SET TEXT TO BOLD استفاده شده باشد ، عدد 2 و اگر آخرین بار از دستور SET TEXT TO BOLDITALIC استفاده شده باشد ، عدد 3 توسط این تابع برگردانده می شود . مانند مثال زیر :
 
SET TEXT TO ITALIC
()PRINT TEXT STYLE
SET TEXT TO BOLD
()PRINT TEXT STYLE
SET TEXT TO BOLDITALIC
()PRINT TEXT STYLE
WAIT KEY
 
تابع TEXT WIDTH
این تابع اندازه ی طول عباراتمان را بر روی صفحه نمایشگر پیش بینی کرده و بصورت یک عدد برمیگرداند . مانند مثال زیر :
 
("PRINT TEXT WIDTH("Hello World
WAIT KEY
 
در این مثال طول عبارت Hello World با توجه به نوع فونت و اندازه ی آن بدست آمد . برای مثال ، اگر خواستیم عبارتی را در قسمت راست صفحه چاپ کنیم ( تحت هر مختصات طولی و عرضی نمایشگر ) می توانیم از این تابع استفاده کنیم . مانند مثال زیر :
 
"TEXT SCREEN WIDTH()-TEXT WIDTH("Hello World"),0,"Hello World
WAIT KEY
 
در این مثال طول عبارت Hello World توسط تابع ()TEXT WIDTH از طول مختصات طولی نمایشگر توسط تابع ()SCREEN WIDTH کم شد و توسط دستور TEXT عبارت Hello World در قسمت راست نمایشگر چاپ می شود . یعنی رزولوشن نمایشگر ( مختصات طولی و عرضی مانیتور ) هر مقداری باشد ، عبارت فوق با کمک این تابع در سمت راست نمایشگر چاپ خواهد شد .
 
تابع TEXT HEIGHT
این تابع اندازه ی ارتفاع عباراتمان را بر روی صفحه نمایشگر پیش بینی کرده و بصورت یک عدد برمی گرداند .  مانند مثال زیر :
 
("PRINT TEXT HEIGHT("Hello World
WAIT KEY
 
 
در این مثال ارتفاع عبارت Hello World با توجه به نوع فونت و اندازه ی آن بدست آمد . پس اگر خواستیم عبارتی را در قسمت پایین صفحه چاپ کنیم ( تجت هر مختصات طولی و عرضی نمایشگر ) می توانیم از این تابع استفاده کنیم . مانند مثال زیر :
 
"TEXT 0,SCREEN HEIGHT()–TEXT HEIGHT("Hello World"),"Hello World
WAIT KEY
 
تابع ASC
این تابع یک عبارت تک کاراکتری را دریافت کرده و شماره ی آن را به صورت یک عدد برمی گرداند . مانند مثال زیر :
 
("*")PRINT ASC
WAIT KEY
 
مانند مثال بالا ، هر کاراکتری طبق جدول زیر ( اسکی کد ASCII code ) دارای شماره ی منحصر به فردی می باشد .
 
جدول اسکی کدها ( ASCII CODES )
 
 
تابع CHR
این تابع شماره ی کاراکتری را بصورت یک عدد دریافت و کاراکتر همان شماره را طبق جدول اسکی کدها بصورت تک کاراکتر ، برمی گرداند . مانند مثال زیر :
 
(PRINT CHR$(42
WAIT KEY
 
 
تابع BIN
این تابع عددی از نوع Integer دریافت و مقدار عددی آن بر مبنای 2 را بصورت عبارتی از نوع کاراکتر برمی گرداند . مانند مثال زیر :
 
(PRINT BIN$(42
WAIT KEY
 
تابع HEX
این تابع عددی از نوع Integer دریافت کرده و عددی بر مبنای هگزادسیمال آن بصورت کاراکتر برمی گرداند . مانند مثال زیر :
 
(PRINT HEX$(42
WAIT KEY
 
 
تابع LEFT
این تابع دو ورودی دریافت می کند . یک عبارت کاراکتری ( متن / String ) و یک عدد از نوع Integer . سپس به مقدار عدد دریافتی از سمت چپ عبارت ورودی کاراکتر جدا می کند . مانند دستورالعمل زیر :
 
(strLeft$ = LEFT$(strValue,intValue
 
طبق این دستورالعمل به مقدار intValue از سمت چپ عبارت strValue کاراکتر جدا شده و تابع ()$LEFT مقدار آن را بر می گرداند . مانند مثال زیر :
 
(PRINT LEFT$("hello world",5
WAIT KEY
 
 
با اجرای این مثال 5 کاراکتر از سمت چپ عبارت hello world جدا شده . یعنی عبارت  hello توسط تابع ()$LEFT برگردانده شده و سپس توسط دستور PRINT نمایش داده می شود .
 
تایع RIGHT
این تابع همانند تابع ()$LEFT عمل می کند . با این تفاوت که از سمت راست عبارت ، کاراکتر جدا می کند . مانند مثال زیر :
 
"myString$ = "hello world
(A$ = RIGHT$(myString$,5
 
$PRINT A
WAIT KEY
 
تابع MID
این تابع مانند تابع های گذشته دو ورودی کاراکتری و عددی دریافت می کند . با این تفاوت که عبارت ورودی را در نظر گرفته و از سمت چپ کاراکتر ها را به مقدار عدد ورودی می شمارد و تنها همان یک کاراکتر را بر می گرداند . مانند مثال زیر :
 
(PRINT MID$("hello world",7
WAIT KEY
 
با اجرای این مثال هفتمین کاراکتر عبارت ورودی hello world از سمت چپ ، یعنی w توسط تابع ()$MID برگردانده شده ( بدست می آید ) و توسط دستور PRINT چاپ می شود .
 
تابع LEN
این تابع عبارت کاراکتری را بعنوان ورودی دریافت می کند و تعداد کاراکتر های تشکیل دهنده آن را می شمارد . مانند مثال زیر :
 
("PRINT LEN("hello world
WAIT KEY
 
با اجرای این مثال تعداد کاراکتر های تشکیل دهنده ی عبارت hello world که 11 کاراکتر است ، توسط تابع ()LEN برگردانده شده و توسط دستور PRINT چاپ می شود . فضاها هم جزء کاراکترهای یک عبارت متنی محسوب می شوند . یعنی بین hello و world یک فضا قرار داده شده که آن هم جزء کاراکتر ها حساب می شود .
 
تابع Val
اگر به جدول اسکی کد ها نگاه کنیم ، خواهیم دید که تعدادی از کاراکتر ها شبیه اعداد می باشند . این تابع عباراتی را که به شکل عدد است ، بصورت عبارت کاراکتری دریافت کرده و بصورت عدد ، برمی گرداند . مانند مثال زیر :
 
PRINT VAL("42")+1
WAIT KEY
 
همانطور که می بینید ، تابع VAL عبارت 42 را که شبیه عدد 42 است ، به عدد تبدیل کرد . در این مثال عدد برگشت داده شده با عدد 1 جمع و نتجه آن که 43 باشد ، چاپ می شود .
 
تابع $SPACE
این تابع یک عدد دریافت کرده و به مقدار آن عدد فضای خالی ( SPACE ) ایجاد میکند و فضاهای خالی را بصورت یک عبارت کاراکتری برمی گرداند . مانند مثال زیر :
 
"PRINT "Place ten spaces" + SPACE$(10) + "here
WAIT KEY
 
 
با اجرای این مثال با قرار دادن تابع ()$SPACE بین دو عبارت Place ten spaces و here به مقدار 10 کاراکتر فضای خالی ایجاد کردیم .
 
تابع UPPER و تابع LOWER
در حروف انگلیسی ، هر حرف به دو شکل کوچک و یا بزرگ نوشته می شود . مثلا A و a . تابع ()$UPPER تمامی کاراکتر های عبارت ورودی اش را به شکل بزرگ آن تبدیل میکند و تابع ()$LOWER تمامی کاراکتر های عبارت ورودی اش را به شکل کوچک تبدیل میکند . مانند مثال زیر :
 
 ("PRINT LOWER$("ALL lower CASE")+" "+UPPER$("all upper case
WAIT KEY
 
مهم ترین کاربرد این دستور زمانی است که می خواهیم از کاربر ( فردی که بازی را انجام می دهد ) عبارتی را دریافت کنیم . برای آنکه در قبال ورودی از کاربر تصمیم خاصی را بگیریم از دستور زیر استفاده می کنیم :
 
$Input "Please Inter Password Key ? " ; Key
"If  Key$ = "Cls" Then Print "Ok" Else Print "No
Wait Key
 
با اجرای این مثال اگر دقیقا عبارت Cls توسط بازیکن وارد شود ، کلمه ی Ok چاپ می شود . مگرنه اگر هر کدام از عبارات CLS و cls و cLS و ClS و ... را وارد کنیم ، عبارت Ok چاپ نخواهد شد . اگر توابع UPPER و LOWER نبودند ، ما مجبور بودیم به این شکل برنامه را بنویسیم .
 
$Input "Please Inter Password Key ? " ; Key
$Select Key
"Case "cls
"Print "Ok
   EndCase
"Case "CLS
"Print "Ok
   EndCase
"Case "cLS
"Print "Ok
   EndCase
   ..
   ..
   Case Default
"Print "No
   EndCase
EndSelect
Wait Key
 
ولی با استفاده از یکی از این دو تابع می توانیم به جای خطوط بیشمار بالا از کدهای زیر استفاده کرد .
 
$Input "Please Inter Password Key ? " ; Key
"If  UPPER$( Key$) = "CLS" Then Print "Ok" Else Print "No
Wait Key
 
با اجرای این مثال عبارت دریافتی با شکل بزرگ در نظر گرفته شده و با عبارت CLS که با حروف بزرگ است مقایسه می شود . حالا فرقی نمی کند که موقع ورود عبارت دکمه ی Caps Lock روشن و یا خاموش باشد و یا اینکه کاربر دکمه ی Shift را نگه داشته باشد .
 

 



چهار شنبه 21 فروردين 1392برچسب:, :: 5:19 ::  نويسنده : ابوالفضل
برای توضیح راجع به تابع مثالی می زنیم . فرض کنید دوستی داریم که نامش علی است . به او یاد می دهیم تا هر موقع به او عددی را گفتیم ، آن عدد را به توان 2 برساند و جواب را به ما بگوید . در واقع ما یک تابع با نام علی ایجاد کردیم ( علی تابع ما شد ) و یک ورودی شامل یک عدد به او دادیم و یک عدد از او می گیریم . در DarkBasic توابع به همین سادگی ایجاد می شوند . مانند دستورالعمل زیر :
 
(...,Function FunctionName(Value1,Value2
...+Return = Value1+Value2
EndFunction Return
 
طبق این دستورالعمل به جای FunctionName نام تابع و داخل پرانتز به جای Value1 و Value2 و ... هر تعداد ورودی نیاز داشته باشیم به همان تعداد متغیر قرار می دهیم . البته تابع می توانید فاقد ورودی هم باشد ، بین دستور Function و EndFunction دستورات و محاسبات روی ورودی ها صورت می گیرد و روبروی دستور EndFunction خروجی تابع را قرار می دهیم . مانند مثال زیر .
 
(FUNCTION Tvalue(Value
Value = Value ^ 2
ENDFUNCTION Value
 
در این مثال با استفاده از دستور FUNCTION در خط اول شروع یک تابع را آغاز و با نام Tvalue آن تابع را نامگذاری کردیم . متغیر Value را بین دو پرانتز بعد از نام Tvalue به عنوان ورودی تابع مشخص کردیم . ما می توانیم هر نام و یا متغری را به دلخواه به جای Tvalue و Value بنویسیم . سپس با استفاده از دستور ENDFUNCTION اتمام تابع خود را مشخص کردیم و متغیر نوشته شده در آخر ( Value ) که روبروی دستور ENDFUNCTION تایپ شده ، مقدار برگشتی تابع را مشخص می کند . به مثال زیر دقت کنید :
 
REM Start of program
("Print BetterPrint(10,10,"Hello world
Wait Key
END
($FUNCTION BetterPrint(x,y,t
Z = x * y
$PRINT t
ENDFUNCTION Z
 
با اجرای این مثال در خط پنجم تابعی با نام BetterPrint با سه وردی ( دو ورودی x و y از نوع عدد و $t از نوع کاراکتر ) ایجاد و داخل تابع ورودی x و y در هم ضرب شدند ، و در Z ذخیره شد و در خط هفتم مقدار ورودی $t چاپ شد و در خط هشتم توسط دستور EndFunction تابع به اتمام رسید و متغیر موجود روبروی دستور ENDFUNCTION ( یعنی Z ) مقدار برگشتی تابع را مشخص می کند که در خط دوم توسط دستور Print چاپ شد .
 
لزومی ندارد که توابع حتما مقدار ورودی و خروجی داشته باشند . مانند مثال زیر :
 
()Example
Wait Key
End
()FUNCTION Example
"PRINT "Hello
ENDFUNCTION
 
با اجرای این مثال عبارت Hello چاپ خواهد شد .
 
دستور EXITFUNCTION
از این دستور برای خروج ناگهانی از تابع می توان استفاده کرد . یعنی شرایطی به وجود می آید که ما مجبور می شویم تا قبل از رسیدن به دستور ENDFUNCTION از تابع خارج شویم . مانند مثال زیر :
 
(Function myAdad(x
If x<2 Then ExitFunction
For I = 1 To x
Print I
Next I
EndFunction
 
توابع داخلی DarkBasic
تا الان چگونگی ایجاد و بکارگیری توابع را یاد گرفتیم . DarkBasic خود نیز توابع گوناگونی دارد که بسیار کاربردی و سودمندند . این توابع همگی مخفی و غیر قابل ویرایش هستند . برای استفاده از آنها کافی است با نام و کاربرد هر یک آشنا شویم که عبارتند از :
 
تابع COS
این تابع کسینوس زاویه ای را برمی گرداند . مانند دستورالعمل زیر :
 
(Return = COS(Value
 
طبق این دستورالعمل کسینوس زاویه ی Value در متغیر Return از نوع Float ذخیره می شود . مانند مثال زیر :
 
myValue As Float
(myValue = Cos(45
Print myValue
Wait key
 
با اجرای این مثال کسینوس زاویه ی 45 درجه در متغیر myValue ذخیره می شود . دقت داشته باشید که متغیر myValue حتما از نوع اعشاری ( Float یا Real ) باشد . زیرا برای مثال کسینوس زاویه ی 45 درجه که برابر 0.707107 است در یک متغیر از نوع Integer نشان داده نمی شود و برابر صفر ذخیره خواهد شد .
 
تابع SIN
این تابع سینوس زاویه ای را برمی گرداند . مانند دستورالعمل زیر :
 
(Return = Sin(Value
 
طبق این دستورالعمل سینوس زاویه ی Value در متغیر Return از نوع Float ذخیره می شود . مانند مثال زیر :
 
myNumber As Float
(myNumber = Sin(40
Print myNumber
 
Wait key
 
با اجرای این مثال سینوس زاویه ی 40 درجه در متغیر myNumber ذخیره می شود . دقت داشته باشید که متغیر myNumber حتما از نوع اعشاری ( Float یا Real ) باشد . زیرا برای مثال سینوس زاویه ی 40 درجه که برابر 0.642788 است در متغیر از نوع Integer نشان داده نمی شود و برابر صفر ذخیره خواهد شد .
 
تابع TAN
این تابع تانژانت عددی را برمی گرداند . مانند دستورالعمل زیر :
 
(Return = Tan(Value
 
طبق این دستورالعمل تانژانت زاویه ی Value در متغیر Return از نوع Float ذخیره می شود . مانند مثال زیر :
 
myNumber As Float
(myNumber = Tan(40
Print myNumber
Wait key
 
تابع ACOS
این تابع آرک کسینوس عددی را برمی گرداند . مانند دستورالعمل زیر :
 
(Return = ACos(Value
 
طبق این دستورالعمل آرک کسینوس Value در متغیر Return از نوع Float ذخیره می شود .
 
تابع ASIN
این تابع آرک سینوس عددی را برمی گرداند . مانند دستورالعمل زیر :
 
(Return = ASin(Value
 
طبق این دستورالعمل آرک سینوس Value در متغیر Return از نوع Float ذخیره می شود .
 
تابع ATAN
این تابع آرک تانژانت زاویه ای ( محدوده ی 0 تا 360 درجه ) را برمی گرداند .
 
تابع HCOS
این تابع هایپر بولیک کوسینوس عددی را برمی گرداند .
 
تابع HSIN
این تابع هایپر بولیک سینوس عددی را برمی گرداند .
 
تابع HTAN
این تابع هایپربولیک عددی را برمی گرداند .
 
تابع SQRT
این تابع رادیکال عددی را برمی گرداند . مثلا رادیکال 64 برابر 8 است .
 
تابع ABS
این تابع قدرمطلق عددی را برمی گرداند . مثلا قدر مطلق 500- برابر 500 است .
 
تابع INT
این تابع مقدار صحیح ( Integer ) عددی را بر می گرداند . یعنی مقدار بعد از اعشار آن عدد را حذف می کند . مثلا مقدار صحیح عدد 1.23 برابر 1 است .
 
تابع RND
این تابع عددی تصادفی بین صفر و مقداری که در این تابع وارد شده را که از نوع Integer است ، برمی گرداند . مانند مثال زیر :
 
()RANDOMIZE TIMER
A As Integer
DO
(A=Rnd(640
Sleep 100
PRINT A
LOOP
 
با اجرای این مثال اعدادی بین 0 و 640 بصورت تصادفی چاپ خواهند شد . ما می توانیم به جای 640 عدد دلخواهمان را قرار دهیم تا اعداد مابین صفر تا آن عدد چاپ شود .
دستور ()RANDOMIZE TIMER نوشته شده در اولین خط باعث می شود تا اعداد بدست آمده با تایمر بایوس مطابقت کنه و تابع ()Rnd کاملا تصادفی باشد .
 
تابع ATANFULL
این تابع زاویه ی بین دو نقطه را در صفحه بر می گرداند . برای مثال اگر دو نقطه ی ( x1 و y1 ) و ( x2 و y2 ) داشته باشیم . زاویه ی بین این دو نقطه از طریق زیر بدست می آید :
 
x1# = 0
y1# = 0
x2# = 640
y2# = 480
(dx# = ABS(x1#-x2#
(dy# = ABS(y1#-y2#
(#angle# = ATANFULL(dx#,dy
#PRINT angle
WAIT KEY
 
تابع TIMER
این تابع با استفاده از تایمر سیستم ( Main Board ) عددی از نوع Integer برمی گرداند ، که دائما و بطور دقیق هر یک هزارم ثانیه یک واحد به آن اضافه می شود . یعنی هر ثانیه 1000 واحد به آن عدد اضافه می شود . مانند مثال زیر :
 
Do
()Print Timer
Loop
 
تابع INKEY
این تابع یک عبارت تک کاراکتری ( از نوع String ) را برمی گرداند که معادل فشرده شدن کلیدی از کیبورد است . یعنی اگر کلید [G] از کیبورد ( Key Board ) را فشار دهیم . تابع ()$Inkey مقدار g را بر می گرداند . مانند مثال زیر :
 
DO
CLS
()$PRINT INKEY
LOOP
 
این مثال را اجرا کنید . سپس چند کلید را بطور دلخواه فشار دهید . خواهید دید که هر کلیدی را فشار می دهید ، حرف چاپ شده بر روی همان دکمه از کیبورد بر روی مانیتور نمایش داده می شود .
 
تابع GET TIME
این تابع مقدار ساعت جاری سیستم را بصورت یک عبارت 8 کاراکتری از نوع String برمی گرداند . یعنی ساعتی که در نوار TaskBar ویندوز مشاهده می کنید ، توسط تابعی در ویندوز از روی چیپستی که در Main Board نصب شده خوانده می شود . در DarkBasic هم می توان توسط دستور ()$Get Time ساعت سیستم را خواند . مانند مثال زیر :
 
Do
()$Print Get Time
Loop
 
با اجرای این مثال ، خواهید دید که یک عبارت رشته ای 8 کاراکتری ، ساعت سیستم را نمایش می دهد ،
که کاراکتر اول و دوم ساعت ، کاراکتر سوم ثابت با علامت ( : ) ، کاراکتر چهارم و پنجم دقیقه ، کاراکتر ششم ثابت با علامت ( : ) و کاراکتر هفتم و هشتم ثانیه را نشان می دهند .
 
تابع GET DATE
عملکرد این تابع مانند تابع قبلی ( ()$Get Time ) می باشد . با این تفاوت که این تابع تاریخ جاری سیستم را بصورت عبارت کاراکتری ( از نوع String ) بر می گرداند . مانند مثال زیر :
 
()$strDate$ = Get Date
$Print strDate
Wait Key
 
تابع FLOOR
این تابع اعداد ممیزدار را رند می کند و بصورت عددی از نوع Flooat برمی گرداند . البته به سمت کمتر . یعنی حاصل 1.5 را 1 و حاصل 1.5- را 2- برمی گرداند . مانند مثال زیر :
 
(Print "Floar (1.5) = " ; Floor(1.5
(Print "Floar (1) = " ; Floor(1
(Print "Floar (0) = " ; Floor(0
(Print "Floar (-1.5) = " ; Floor(-1.5
(Print "Floar (-1) = " ; Floor(-1
Wait Key
 
تابع CEIL
این تابع مانند تابع قبل اعداد ممیز دار را رند می کند و بصورت عددی از نوع Flooat بر می گرداند . البته به سمت بیشتر . یعنی حاصل 1.5 را 2 و حاصل 1.5- را 1- برمی گرداند . مانند مثال زیر :
 
(Print "Ceil 1.5 = " ; Ceil(1.5
(Print "Ceil 1 = " ; Ceil(1
 
(Print "Ceil 0 = " ; Ceil(0
(Print "Ceil -1.5 = " ; Ceil(-1.5
(Print "Ceil -1 = " ; Ceil(-1
Wait Key
 
تابع EXP
این تابع  eرا به توان عدد ورودی در تابع می رساند . مانند مثال زیر :
 
(Print Exp(10
Wait Key
 
 
تابع WRAPVALUE
این تابع عدد ورودی اش را بر حسب 0 تا 359 درجه حساب می کند . یعنی فرض می کند که اعداد بر روی دایره ای با 360 درجه در حال زیاد شدن و یا کم شدن هستند . مثلا اگر عدد از 0 گذشت و شد 361 آن را 1 در نظر می گیرد . و یا اگر عدد برابر 400 شد ، آن را 40 ( 40=360-400 ) در نظر می گیرد
و اگر عدد برابر 50- بود ، آن را 310 (310=[50-]-360) در نظر می گیرد . مانند مثال زیر :
 
A = 0
Do
A = A + 1
Set Cursor 10,10
Print "A : ";A
Set Cursor 10,30
(Print "WrapValue(A) : ";WrapValue(A
Wait 20
Cls
Loop
 
نکته : همیشه بعد از نام توابع ، پرانتز باز و پرانتز بسته ی آنها را هم قرار دهید . هرچند تابع ورودی نداشته باشد .


چهار شنبه 21 فروردين 1392برچسب:, :: 5:17 ::  نويسنده : ابوالفضل

 دستورات این فصل شامل فرامینی هستند که روند اجرای برنامه را کنترل می کنند . برای نوشتن هر برنامه ای ، یادگیری این دستورات الزامی است . با استفاده از دستورات این فصل می توانیم به سادگی برنامه های سودمندی ایجاد کنیم .

 
دستور Print ( چاپ )
این دستور متن ، عدد ، مقادیر ذخیره شده درون متغیر های عددی و کاراکتری را روی صفحه ی نمایشگر ( Monitor ) چاپ می کند . مانند دستورالعمل زیر :
 
PRINT PrintStatements
 
طبق این دستورالعمل ابتدا دستور PRINT را تایپ و بعد از قرار دادین یک فضای خالی ( فشردن دکمه ی Space ) به جای PrintStatements عبارت مورد نظرمان را تایپ می کنیم . مانند مثال زیر :
 
Print 123
 
در این مثال عدد 123 چاپ خواهد شد . همانطور که قبلا هم گفتیم ، این دستور توانای چاپ عبارات گوناگون از نوع عدد و کارکتر ، همچنین مقادیر مختلف متغیر ها را نیز دارد . مانند مثال زیر .
 
intAdad = -12
"strText$ = "Example
Print 34.65
"Print "Hellow Word
Print intAdad
$Print strText
Wait Key
 
این دستورات را تایپ و اجرا می کنیم ، تا نتیجه را ببینیم . در خط اول متغیر intAdad از نوع Integer ایجاد و مقدار 12- در آن ذخیره شد . در خط دوم متغیر $strText ( توسط نماد $ ) از نوع String ایجاد و عبارت Example چون عدد نیست توسط دو نماد " و " ( به نام کوتیشن ) در آن ذخیره شد . در خط سوم عدد 34.65 چاپ و در خط چارم عبارت Hellow Word چاپ شدند . در خط پنجم مقدار متغیر عددی intAdad و در خط ششم مقدار متغیر کاراکتری $strText که در خطوط یک و دو مقداردهی شده بودند ، چاپ شدند و در خط هفتم بوسیله ی دستور Wait Key مفسر DarkBasic منتظر می ماند تا ما دکمه ای را فشار دهیم . به محض فشار دادن هر دکمه از کیبورد ، برنامه تمام می شود .
 
با قرار دادن علامت ( ; ) یا ( , ) بین چند عبارت و یا متغیر می توانیم تمامی آنها را با هم در یک سطر چاپ کنیم . مانند مثال زیر :
 
"myName$ = "Hamid Reza
myAge = 20
"Print "My Name Is " ; myName$ ; " And My Age Is " , myAge , " Year
Wait Key
 
با اجرای این مثال خواهیم دید که تمامی عبارات و متغیر ها در کنار هم چاپ می شوند .
 
توجه ! بدلیل اینکه طول برخی از خطوط برنامه آن قدر بلند است که در عرض کتاب جا نمی شود ، بعد از این برای اینکه بتوانیم تمامی دستورات نوشته شده در یک خط از برنامه را در این کتاب نمایش دهیم ، ما ادامه ی آن خط را در خط بعدی اش چاپ و زیر تمامی آنها خط تیره می کشیم تا معلوم شود که خطوط خط دار نوشته شده در این کتاب ، متعلق به یک خط در برنامه ی DarkBasic می باشد . یعنی خطوط برنامه ی بالا در کامپیوتر بصورت زیر بوده است .
 
"myName$ = "Hamid Reza
myAge = 20
"Print "My Name Is " ; myName$ ; " And My Age Is " , myAge , " Year
Wait Key
 
همانطور که می بینید خط سوم این برنامه همان خطوط سوم و چهارم مثال پیشین است .
 
دستور SET CURSOR
با استفاده از دستور Print هر عبارتی را چاپ می کردیم . منتهی عبارات به ترتیب از بالا به پائین و از چپ به راست چاپ می شدند . با استفاده از این دستور می توانیم قبل از چاپ عبارات ، مختصاتی را بر روی صفحه چاپ مشخص کنیم تا عبارت در آن مختصات ( موقعت مکانی در صفحه نمایشگر ) چاپ شوند . مانند دستورالعمل زیر :
 
Set Cursor X,Y
 
طبق این دستورالعمل ابتدا عبارت Set Cursor و بعد به جای X مختصات افقی ( مقدار فاصله ی عبارت از قسمت چپ صفحه ی نمایشگر ) و به جای Y مختصات عمودی ( مقدار فاصله ی عبارت از قسمت بالای صفحه ی نمایشگر ) را قرا می دهیم مانند مثال زیر :
 
Set Cursor 40,50
"Print "Hello
Wait Key
 
در این مثال کرسر به مقدار 40 پیکسل از سمت چپ صفحه به سمت راست و به مقدار 50 پیکسل از سمت بالای صفحه به پایین حرکت کرد و در موقعیت ( 50 و 40 ) قرار گرفت و عبارت Hello توسط دستور Print در همان موقعیت چاپ شد . برای فهم بیشتر به شکل زیر نگاه کنید :
 
 

در این شکل یک شبکه ی فرضی را می بینیم که قسمت کوچکی از مختصات طولی و عرضی صفحه ی نمایش را نشان می دهد . در این مختصات برای مثال دو نقطه در نظر گرفته شده . یکی در بالا و سمت چپ که مختصات آن ( 0 و 0 ) است و دیگری کمی پایین تر و سمت راست که مختصات آن ( 2 و 6 ) می باشد . یعنی به مقدار 6 واحد از مختصات X به سمت راست و به مقدار 2 واحد از مختصات Y به سمت پایین حرکت کرده و هم اکنون در موقعت ( 2 و 6 ) قرار دارد .

 

دستورات زیر را در نظر بگیرید :

 

Set Cursor 350,100

"Print "H

Wait Key

 

با اجرای این مثال عبارت H در موقعیت 350 و 100 چاپ می شود . یعنی اگر عبارت H را داخل یک مربع در نظر بگیریم ، گوشه ی بالا و سمت چپ آن مربع دقیقا بر روی موقعیت Y = 100 و X = 350 منطبق می شود . مانند شکل زیر :

 

 

در این مثال عبارت H در مختصات 100 و 350 چاپ شد . بیشترین اعدادی که برای تعیین مختصات X و Y مشخص می کنیم بستگی به تنظیمات پروژه دارد .

دستور INPUT
از این دستور برای گرفتن ورودی ( عدد یا عبارت متنی ) از کاربر ( فردی که بازی می کند ) در حین اجرای برنامه ( بازی ) استفاده می کنیم . یعنی در حین اجرای برنامه می توانیم عدد و یا هر عبارتی را توسط کیبورد ، داخل متغیر ها ذخیره کنیم . مانند دستورالعمل زیر :
 
INPUT PrintStatements;InputVariable
 
طبق این دستورالعمل ابتدا کلمه ی کلیدی INPUT را تایپ و سپس به جای PrintStatements توضیحاتی راجع به ورودی بصورت متن ، و یا متغیر کاراتری ( String ) قرار می دهیم و بعد از علامت ( ; ) به جای InputVariable نام متغیر را تایپ می کنیم . نوع متغیر انتخاب شده بستگی به نیازمان دارد . اگر به عدد نیاز داشتیم متغیری از نوع عدد و اگر عبارت مورد نیازمان بود ، متغیری از نوع کاراکتر ( String ) قرار می دهیم . مانند مثال زیر :
 
$INPUT "enter your name ?";name
$PRINT "your name is ";name
WAIT KEY
 
با اجرای این مثال ابتدا عبارت ? enter your name چاپ شده و ما می توانیم نامی را تایپ کنیم . بعد از زدن دکمه ی Enter عبارت تایپ شده در متغیر $name ذخیره خواهد شد و در خط دوم ، عبارت your name is همراه با مقدار ذخیره شده در متغیر $name چاپ خواهد شد .
قرار دادن عبارت در دستور Input اختیاری است . یعنی می توان از دستور Input بصورت زیر استفاده کرد .
 
Input MyNumber
 
در این مثال یک عدد از کاربر گرفته می شود و در متغیر MyNumber ذخیره خواهد شد .
 
دستور CLS
با استفاده از این دستور می توان صفحه ی نمایشگر را از متون نوشته شده ی قبلی پاک کرد . یعنی هر آنچه که از قبل در صفحه ی نمایشگر چاپ شده بود ، پاک می شود . مانند مثال زیر :
 
"Print "Hello
"Print "World
Cls
"Print "DarkBasic
Wait Key
 
با اجرای این مثال عبارات چاپ شده قبل از دستور Cls ، یعنی Hello و World پاک شده ، و بعد عبارت DarkBasic چاپ خواهد شد .
 
دستور REM
با استفاده از این دستور ، می توانیم توضیحاتی داخل خطوط برنامه ، یادداشت کنیم . مفسر DarkBasic توضیحات نوشته شده بعد از این دستور ( در همان خط ) را نادیده می گیرد و بی تفاوت از آن عبور می کند . مانند دستورالعمل زیر :
 
Rem Comments
 
طبق این دستورالعمل به جای Comments ، عبارت مورد نظرمان را می نویسیم . DarkBasic هر عبارتی را که بعد از دستور Rem نوشته شده باشد را ، نادیده گرفته و از آن عبور می کند . ما می توانیم بهر تعدادی که نیاز داشته باشیم ، از این دستور در خطوط برنامه استفاده کنیم . مانند مثال زیر :
 
.Rem This is a comment that doesn't do anything
"Print "Hello
Wait Key
 
با اجرای این مثال خواهیم دید که تنها نوشته ی ( Hello ) چاپ شد و خط اول بی تاثیر می ماند .
 
توجه !  دستور Rem مزایای فراوانی دارد . ما می توانیم برای غیر فعال کردن یک یا چند خط از برنامه ، بطور موقت ، این دستور را ابتدای آن خطوط تایپ و یا به جای کلمه ی Rem از علامت ( ` ) هم می توانیم استفاده کنیم ( همان دکمه ای که علامت ~ هم روی آن است ) . مانند مثال زیر :
 
"Print "Hello`
"Print "Word
Wait Key
 
با اجرای این مثال تنها خطوط دوم و سوم اجرا خواهند شد .
 
دستور REMSTART و REMEND
در برخی مواقع نیاز داریم ، تعدادی از خطوط برنامه را ( که پشت سر هم هستند ) غیر فعال کنیم . تا مفسر DarkBasic آن ها را نادیده گرفته و از آن ها عبور کند . مثلا می خواهیم توضیحاتی راجع به برنامه ، در ابتدای خطوط متن برنامه یادداشت کنیم ( مثلا ده خط پشت سر هم ) . برای این کار از دستور RemStart برای شروع و RemEnd برای اتمام غیرفعال سازی خطوط پشت سر هم در برنامه ، استفاده می کنیم . مانند مثال زیر :
 
REMSTART
----------------------------------------------
Author : Hamid Reza Heidary
Date : April 3 , 2009
.Description : Demonstrates the use of comments
REMEND
"Print "Test
Wait key
 
با اجرای این مثال می بینیم که فقط کلمه ی Test چاپ شد و اتفاق دیگری نیفتاد . یعنی خطوط نوشته شده بین دستور REMSTART و REMEND نادیده گرفته شدند . اگر بخواهیم تعداد زیادی از خطوط را غیر فعال کنیم ، استفاده از این دو دستور راحت تر است از اینکه بخواهیم برای هر خط ، از دستور Rem استفاده کنیم .
 
دستور END
این دستور برنامه را می بندد ( یعنی با این دستور از برنامه خارج می شویم ) . ما می توانیم در هر خطی از برنامه از این دستور استفاده کنیم . منتها باید بدانیم که چه موقعی می خواهیم از برنامه خارج شویم . مانند مثال زیر :
 
Rem Start Of Program
"Print "One
Wait Key
End
"Print "Two
Wait Key
 
با اجرای این مثال کلمه ی One برروی صفحه ی مانیتور چاپ خواهد شد . مفسر DarkBasic بر روی دستور Wait Key می ایستد و منتظر می ماند تا کلیدی را فشار دهیم . بعد از فشار دادن یکی از دکمه های کیبورد از برنامه خارج می شویم زیرا با زدن یکی از کلید ها مفسر DarkBasic به خط بعد از فرمان Wait Key مراجعه می کند و با اجرای دستور End از برنامه خارج می شویم و بقیه ی برنامه بدون اجرا رها خواهد شد .
 
نکته ! مفسر DarkBasic به بزرگی و کوچکی حروف نوشته شده ی دستورات حساس نمی باشد . یعنی می توانیم ، دستور End را بصورت های END ، end ، EnD ، eNd و ... هم تایپ کنیم .
 
دستور GOTO
در حالت عادی ، مفسر DarkBasic برنامه را خط به خط از بالا به پائین اجرا می کند . با استفاده از این دستور می توانیم مفسر DarkBasic را به خط مورد نظرمان بفرستیم . تنها کافی است یک برچسب در آن خط مورد نظر ایجاد ، سپس از دستور Goto برای پرش به آن خط ، استفاده می کنیم . مانند مثال زیر :
 
:MyLabel
"PRINT "Hello World
GOTO MyLabel
 
با اجرای این مثال می بینیم که عبارت Hello World دائما در حال چاپ شدن است . دلیل آن این است که در خط اول برچسبی ( برای مثال ) با نام MyLabel ایجاد کردیم و بعد از آن علامت ( : ) را قرار دادیم . زمانی که مفسر DarkBasic به دستور Goto می رسد ، عبارت نوشته شده ی ( برای مثالMyLabel ) جلوی دستور Goto را می خواند و به دنبال خطی با همان عبارت ( برچسب با عنوان :MyLabel ) می گردد . سپس به آن خط پرش می کند و برنامه را از آنجا ادامه می دهد . علامت ( : ) بعد از نام برچسب باید تایپ شود .
 
دستور GOSUB
عملکرد دستور Gosub شباهت زیادی با دستور Goto دارد . با این تفاوات که دستور Gosub بلوک خاصی از برنامه را اجرا می کند و سپس به همان خطی که آن را ترک کرده بود باز می گردد . مانند مثال زیر :
 
"PRINT "Hello
GOSUB MySubroutine
Wait Key
END

:MySubroutine
"PRINT "World
RETURN
 
در مثال بالا ، در خط ششم یک برچسب با نام MySubroutine توسط علامت ( : ) ایجاد کردیم . با اجرای این مثال ابتدا عبارت Hello چاپ می شود . سپس دستور Gosub با توجه به عبارت نوشته شده ی جلوی خود ( یعنی عبارت MySubroutine ) به برچسبی با همین عنوان ( :MySubroutine ) یعنی به خط هفتم جهش می کند . سپس دستورات بعدی را اجرا می کند . یعنی عبارت World را چاپ می کند و زمانی که به دستور RETURN نوشته شده در خط هشتم می رسد ، دوباره به مکان ترک شده ( یعنی به خط دوم ) برمی گردد . یعنی دستور خط سوم به بعد را اجرا می کند . ما می توانیم بین خط :MySubroutine و دستور RETURN هر تعداد دستوری را که نیاز داشته باشیم ، اضافه کنیم تا همگی اجرا شوند .
 
دستور DO … LOOP
در واقع این دستور به دو دستور Do و Loop تقسیم می شود که جزء دستورات حلقه ای محسوب می شوند . به مثال زیر دقت کنید تا بعد از آن به توضیح دستور Do … Loop بپردازیم .
 
:Label7
"PRINT "Hello World
GOTO Label7
 
در این مثال عبارت Hello World دائما چاپ می شود . یعنی مفسر DarkBasic در خط سوم توسط دستور Goto به خط اول پرش می کند و عبارت Hello World مجددا چاپ می شود و این کار تا ابد ادامه دارد . یعنی اجرای دستورات نوشته شده بین خطوط یکم و سوم دائما تکرار می شوند . می توان به جای ایجاد این برچسب ( یعنی :Label7 ) و استفاده از دستور Goto از دستور Do … Loop استفاده کنیم مانند مثال زیر :
 
Do
"PRINT "Hello World
Loop
 
با اجرای این مثال ، دستورات نوشته شده بین دو دستور Do و Loop دائما در حال اجرا شدن می باشند . یعنی عبارت Hello World دائما در حال چاپ شدن خواهد بود . ما می توانیم به جای دستور Print تعداد زیادی دستور بین Do و Loop قرار دهیم تا دائما اجرا شوند .
 
دستور EXIT
این دستور در واقع جزئی از دستور Do … Loop است که می توان بنا به ضرورت از آن استفاده کرد . وظیفه ی این دستور خروج از حلقه ی Do … Loop می باشد . مانند مثال زیر :
 
A = 1
Do
A = A + 1
Print A
If A >= 10000 Then Exit
Loop
 
با اجرای این مثال زمانی که متغیر A به 10000 می رسد ، برنامه توسط دستور Exit از حلقه ی Do … Loop خارج شده و چون از دستور Wait Key استفاده نکردیم ، کامپایلر رها شده و از برنامه خارج خواهیم شد .
 
دستور FOR … NEXT
در دستور پیشین ( Do … Loop ) دستورات نوشته شده بین Do و Loop دائما در حال اجرا شدن بودند . ولی اگر بخواهیم این دستورات به تعداد معینی تکرار شوند ، از دستور For … Next استفاده می کنیم . مانند دستورالعمل زیر :
 
For Counter = StartValue To EndValue Step StepValue
Next Counter
 
طبق این دستورالعمل به جای Counter یک متغیر قرار می دهیم . دستور For متغیر Counter را از شماره ی StartValue تا EndValue می شمارد و هر بار به اندازه ی StepValue به مقدار Counter اضافه می کند و دستور Next انتهای حلقه را مشخص می کند . یعنی ما می توانیم دستورات مورد نظرمان را بین این دو خط تایپ کنیم . مانند مثال زیر :
 
I As Integer
For I = 1 To 7 Step 2
Print I
Next I
Wait Key
 
با اجرای این مثال متغیر I از 1 تا 7 بین خطوط دوم و پنجم  شمرده می شود و هر بار توسط دستور Step به مقدار 2 عدد به متغیر I اضافه می شود . هر بار متغیر مقدار دهی شده ی I ، توسط دستور Print چاپ می شود .
 
اگر در هر شمارش بخواهیم تنها یک عدد به متغیرمان اضافه شود ، می توانیم Step StepValue را ننویسیم . یعنی اگر بخواهیم اعداد 5- تا 5 را چاپ کنیم ، مانند مثال زیر عمل می کنیم .
 
For intValue = -5 To 5
Print intValue
Next intValue
Wait Key
 
دستور For … Next می تواند متغیر ها را بصورت معکوس هم بشمارد مانند زیر :
 
For k = 10 To -2 Step -2
Print k
Next K
Wait Key
 
دستور REPEAT … UNTIL
این دستور یکی دیگر از دستورات حلقه ای DarkBASIC می باشد . با این تفاوت که دستورات نوشته شده بین Repeat و Until دائما تکرار می شوند ، تا اینکه شرط نوشته شده روبروی دستور Until منطقی شود . یعنی تا زمانی که شرط منتقی نباشد ، دستورات بین Repeat و Until دائما اجرا خواهند شد . مانند مثال زیر :
 
myNumber = 0
REPEAT
myNumber = myNumber + 1
"... PRINT "Please Wait
UNTIL myNumber = 3000
 
با اجرای این مثال دستور نوشته شده بین دستور REPEAT و UNTIL یعنی خطوط سوم تا چهارم دائما اجرا میشوند تا زمانی که شرط نوشته شده روبروی دستور UNTIL درست و منطقی باشد . یعنی در این مثال اگر myNumber برابر 3000 شود ، DarkBasic از حلقه خارج می شود .
 
می توانیم روبروی دستور UNTIL به جای یک شرط از چندین شرط هم استفاده کنیم ، مانند مثال زیر :
 
A = 0
Repeat
print "a = ";a;" b = ";b
a = a + 1
b = 1000
Until a > 3000 And b = 1000
 
دستور WHILE … ENDWHILE
این دستور شباهت زیادی با دستور گذشته ( Repeat … Until ) دارد . با این تفاوت که در دستور گذشته دستورات مابین Repeat و Until تا زمانی اجرا می شوند که شرط روبروی Until درست نباشد . ولی در این دستور فرامین بین دستورات While … EndWhile تا زمانی اجرا می شوند که شرط نوشته شده روبروی While منطقی باشد . مانند مثال زیر :
 
A = 0
While A < 4000
PRINT A
A = A + 1
EndWhile
 
با اجرای این مثال فرامین نوشته شده بین خطوط دوم و پنجم تا زمانی اجرا می شوند که شرط نوشته شده روبروی While درست باشد ، یعنی تا زمانی که A < 4000 باشد ، فرامین اجرا خواهند شد . بعد از آن DarkBasic حلقه را رها و به اجرای دستورات نوشته شده بعد از آن می پردازد .
 


چهار شنبه 21 فروردين 1392برچسب:, :: 5:14 ::  نويسنده : ابوالفضل

 متغیر ها مکان هایی از حافظه موقت ( Ram ) هستند که هر کدام یک عدد و یا عبارت را برای ما نگه می دارند ، هر کدام را با یک نام ایجاد می کنیم . می توانیم مقدار درون آن ها را هر لحظه که خواستیم ، تغییر دهیم . تمامی زبانهای برنامه نویسی از متغیر ها برای محاسبات استفاده می کنند .

 

متغیر واقعا چیست و کجا است و به چه دردی می خورد ؟

زمانی که متغیری ایجاد می کنیم ، قسمت کوچکی از حافظه ی Ram کامپیوتر با نام همان متغیری که ایجاد کرده ایم ، اختصاص پیدا می کند ، تا بتواند اعداد و عبارات مورد نظرمان را برای محاسبات ، داخل آنها نگه داریم . اندازه ی مکان اشغال شده بستگی به نوع متغیری است که تعریف می کنیم .

 

هدف از ایجاد متغیر و استفاده از آن :

همه ی ما در طول زندگی از واحد هایی متشکل از اعداد و عبارات استفاده می کنیم و آن ها را بصورت مقادیری مشخص ، بکار می بریم . مثلا موقع خریدن میوه از فروشنده تقاضای 3 کیلو سیب می کنیم و یا می خواهیم 7 ساعت بعد به سر کار بریم و یا 5.2 متر پارچه بخیرم . همانطور که می دانید ما نمی توانیم بگوییم که همیشه باید فقط سه کیلو سیب بخریم یا همیشه باید 5.2 متر پارچه بخریم چون نیاز ما در هر زمان تغییر می کند . پس مقدار میوه ای که باید هر روز بخریم مانند یک عدد ثابت نیست بلکه متغیر است یعنی هر روز مقدار نیازمان متفاوت از روز قبل است . علت اینکه به این واحد اشغال شده در کامپیوتر ، متغیر می گویند نیز همین است . چون می توانیم در هر زمان مقدار آن ها را تغییر دهیم .

 

توجه ! اعداد و عبارات موجود در متغیر ها تنها در همین برنامه ی DarkBasic قابل استفاده ، دسترسی و تغییر می باشند . یعنی سایر برنامه ها نمی توانند از وجود یا مقدار درون متغییر های ایجاد شده اطلاع پیدا کنند .

 

انواع داده ای متغیر ها ( Data Types ) :

در برنامه ی DarkBasic می توانیم تعداد زیادی متغیر با انواع و گنجایش های متفاوتی ایجاد کنیم . جدول زیر انواع متغیرها و محدوده ی ( گنجایش ) هر کدام را نشان می دهد .

 

 جدول متغیر ها :

 

محدوده ( گنجایش )    نوع متغیر

INTEGER      -2,147,483,648   To   2,147,483,647

(REAL       3.4 E +/- 38 ( 7 Digits

BOOLEAN      0   To   1

BYTE     0   To   255

WORD 0   To   65535

DWORD 0   To   4,294,967,295

DOUBLE INTEGER -9,223,372,036,854,775,808   To   9,223,372,036,854,775,807

 ( DOUBLE FLOAT    1.7 E +/- 38 ( 15 Digits

String 2 Million Character

 

چگونگی ایجاد متغیر :

برای ایجاد متغیر که به معنای شناساندن آن به DarkBasic می باشد ، از دستورالعمل زیر استفاده می کنیم :

 

VariableName As Type

 

طبق این دستورالعمل به جای عبارت VariableName نام متغیری را که می خواهیم ایجاد کنیم قرار می دهیم . دستور  As جزء دستورات کلیدی DarkBasic می باشد که باید حتما نوشته شود . سپس به جای عبارت Type نوع متغیری را که می خواهیم تعریف کنیم از جدول بالا انتخاب و تایپ می کنیم ( بغیر از REAL ) . به مثال زیر توجه کنید .

 

worAdad As Word

 

در این مثال متغیری با نام worAdad از نوع Word ایجاد و معرفی کردیم . یعنی عبارت As Word به DarkBasic می گوید که متغیری با نام worAdad از نوع Word که گنجایش آن طبق جدول متغیر ها بین محدوده ی 0 تا 65535 می باشد در حافظه موقت Ram ایجاد شود .

 

ما می توانیم به جای نام worAdad ، هر عبارتی را که مناسب می دانیم بکار ببریم . البته بغیر از کلمات رزرو شده در برنامه ی DarkBasic . یعنی دارک بیسیک به تعدادی از کلمات حساسیت دارد چون خود باید از آن کلمات بعنوان دستور در برنامه استفاده کند . باید دقت کنیم که در تمام طول برنامه از متغیر و یا اسامی ای به غیر از دستورات رزرو شده توسط DarkBasic استفاده کنیم تا متغیر ها با دستورات اصلی تداخل پیدا نکنند . مثلا چون کلمه ی Print جزء دستورات اصلی DarkBasic است ما به جای استفاده از این کلمه ( به عنوان نام متغیر یا هر چیز دیگری ) می توانیم از کلمه ی worPrint استفاده کنیم چون سه حرف اول آن یعنی wor برای ما تداعی کننده ی نوع Word بودن آن متغیر می باشد . و یا مثل IntPrint

 

در مجموع متغیر ها به سه دسته ی اصلی تقسیم می شوند  . که عبارتند از

 

1 - متغیر از نوع عدد طبیعی (  Integer Number )

این نوع متغیر ، اعداد طبیعی را در خود نگه می دارد ، نه اعداد دارای اعشار ( ممیز دار ) . برای منفی کردن اعداد طبیعی ، کافیست علامت – را قبل از آن ها درج کنیم تا منفی حساب شود . اعداد زیر نمونه هایی از اعداد طبیعی هستند که در این نوع متغیر ذخیره می شوند :

 

0

42

10000

-233000

-100

 

2 - متغیر از نوع عدد صحیح (  Real Number )

این نوع متغیر ، هم می تواند اعداد طبیعی بدون ممیز را در خود نگه دارد و هم اعداد صحیح اعشاری ( ممیز دار ) را . برای منفی کردن عدد صحیح کافیست علامت – را قبل از آن درج کنیم تا منفی حساب شود . اعداد زیر نمونه هایی از اعداد صحیح ( ممیزدار یا بدون ممیز ) هستند که در این نوع متغیر ذخیره می شوند :

 

20.0005

99.9

0

-5000.12

1000

 

3 - متغیر از نوع رشته ای ( String )

متغیر از نوع String برای ذخیره داده های کاراکتری استفاده می شود . در واقع عدد نیست . یعنی کاراکتر ها شامل حروف ، اعداد ، و علائم  و ... می با شند . مانند نمونه های زیر :

 

"A"

"Hello World"

"Telephone"

""

"I am 99 years old     "

"1.2.3.4.5"

 

همانطور که می بینید برای مقدار دهی به متغیر از نوع رشته ( کاراکتری یا همان String ) باید عباراتمان را داخل دو علامت هم شکل ( " ) به نام کوتیشن قرار دهیم تا تفاوت آن با عدد مشخص شود . یعنی عبارت بین این دو علامت مقدار داخل متغیر را معلوم می کند و علامات " و " فقط نوشته می شوند .

 

توجه ! متغیر از نوع String می تواند مقدار خالی ( تهی ) را هم در خود نگه دارد . مانند مثال زیر :

 

""=$Name

 

همانطور که می بینید چیزی داخل علامات "" ننوشتیم ، یعنی متغیر فقط ایجاد شد و داخل آن خالیست .

 

توجه ! اگر دقت کرده باشید . ما اصلا درباره ی گنجایش متغیر از نوع String صحبتی نکردیم . دلیل آن این است که این نوع از متغیر دارای گنجایشی تغییر پذیر می باشد . یعنی هر مقدار عبارت داخل آن بزرگ باشد ، گنجایش آن بطور خودکار زیاد می شود و لازم نیست محدوده ای برای آن تعریف کنیم .

 

راهی ساده تر برای ایجاد متغیر ها :

به عبارت زیر توجه کنید .

 

Adad = 4

 

عبارت Adad = 4 در DarkBasic به این معناست که ما متغیری با نام Adad ایجاد کردیم و مقدار 4 را توسط نماد = به آن اختصاص دادیم . ولی چون نوع متغیر را مشخص نکردیم ، DarkBasic بطور خودکار آن را Integer در نظر میگیرد . یعنی طبق جدول متغیر ها ، متغیر ایجاد شده با نام Adad دارای محدوه ای بین 2147483648- تا 2147483647 می باشد . به عبارتی دیگر عددی که در این متغیر ذخیره خواهد شد ، که در این محدوده باشد . یعنی نه کمتر از 2147483648- و نه بزرگ تر از 2147483647 باشد . 

 

توجه ! باید متغیر ها را با توجه به گنجایششان طبق جدول مقدار دهی کنیم . در غیر اینصورت محاسباتمان به هم خواهد خورد .

 

- می توانیم متغیر را با استفاده از نماد های # و $ هم ایجاد کنیم بعنوان مثال به عبارت زیر توجه کنید .

 

"strText$ = "Total Is 57

 

در این عبارت متغیری با نام $strText از نوع String تعریف شد و عبارت Total Is 57 بین دو نماد " و " در $strText ذخیره شد . همانطور که قبلا گفته شد متغر هایی از نوع String می توانند عبارات کاراکتری را در خود ذخیره کنند .

 

از کاراکتر # مانند مثال زیر برای ایجاد متغییر از نوع عدد صحیح دارای اعشار ( ممیزدار Real ) ، می توان استفاده کرد .

 

Number# = 12.45

 

در این عبارت متغیری با نام  #Number از نوع عدد صحیح ( دارای اعشار یا همان Real Number ) ایجاد گردید و مقدار داخل آن 12.45 می باشد .

 

استفاده ی عملی از متغیر ها :

برنامه ی زیر سن افراد را با استفاده از عدد 1387 (سال 1387 ) و تاریخ تولد ( مثلا 1350 ) محاسبه و نمایش می دهد .

 

intYear = 1387

worSen As Word = 1350

YourSen = intYear – worSen

Print YourSen

Wait Key

 

برنامه شامل 5 خط می باشد . طبق معمول DarkBasic برنامه را خط به خط از بالا به پایین اجرا می کند . طبق گفته های پیشین خط اول به DarkBasic متغیری با نام intYear معرفی می کند و مقدار 1387 را توسط علامت = به آن اختصاص می دهد و چون نوع متغیر را مشخص نکردیم بطور خودکار Integer در نظر گرفته می شود که گنجایش آن طبق جدول بین 2147483648- تا 2147483647 می باشد . سپس در خط دوم متغیری با نام worSen از نوع Word مشخص کردیم که گنجایش آن طبق جدول بین 0 تا 65535 می باشد و توسط علامت = مقدار 1350 را در آن ریختیم . در خط سوم متغیر YourSen بطور خودکار از نوع Integer ایجاد و همان زمان مقدار داخل متغیر با نام worSen از مقدار داخل متغیر با نام intYear توسط نماد – کم شد و داخل متغیر با نام YourSen ریخته شد و DarkBasic محاسبات عددی داخل متغیر ها را بصورت معادله حل کرد و در خط چهارم دستور Print که جزء دستورات اصلی DarkBasic می باشد ، مقدار داخل متغیر YourSen را چاپ کرد . در خط پنجم دستور Wait Key مفسر DarkBasic را معطل نگه می دارد تا ما حاصل کارمان را ببینیم . همانطور که قبلا گفته بودیم دلیل استفاده از دستور Wait Key این است که جلوی خروج از اجرای برنامه را بگیرد . در نتیجه Wait Key برنامه را تا زمانی که کلیدی فشرده نشود ، منتظر نگه می دارد .

 

سیستم محاسبات معادلات ریاضی در DarkBasic

قبلا در مبحث ریاضیات با معادله آشنا شدیم . معادلات متشکل از اعداد ( مانند 10 یا 75.90 یا هر عدد دیگر ) و متغیر ها ( مانند X ، Y و یا هر عبارت دیگری ) ، و همچنین علامات ( عملگرهایی مانند + ، - و دیگر علائم ) و توابع ریاضی میباشند . مانند معادله ی زیر :

 

X + 10 = 3X - 10

 

با حل این معادله ، حاصل X عدد 10 می شود . در DarkBasic معادله ها را باید به شکل خاصی نوشته شود . همانطور که قبلا گفته شد ، باید برای ارتباط با هر فردی زبان گفتگو با او را بلد بود . در این زبان مانند سایر زبان های برنامه نویسی قسمت راست علامت = محاسبه شده و حاصل به سمت چپ = ریخته می شود . یعنی در این زبان باید معادلات مور نظر طوری طراحی شود تا DarkBasic بتواند قسمت راست تساوی را محاسبه و مقدار آن را تنها به یک متغیر در سمت چپ بریزد . یعنی عبارت را بصورت زیر باشد تا DarkBasic آن را محاسبه کند . مانند عبارات زیر :

 

A = 10

B = 90

X = A + B * 1000

 

نکته : در هر معادله تنها یک علامت مساوی ( = ) باید وجود داشته باشد .

 

عملگر ها ( Operators ) :

عملگر ها علائم یا عباراتی هستنند مانند = و + و / و یا  Andو Or و > و =< و ... که هر کدام عملی بر روی اعداد ، کاراکتر ها ، متغیر ها و همچنین معادلات و عبارات انجام می دهند ، مانند عملیات ریاضی . همچین عملگر ها به مقایسه درستی و نادرستی معادلات و مقادیر اعداد و متغیر ها نیز می پردازند .

 

1 - عملگر های حسابی :

عملگر های حسابی برای انجام محاسبات ریاضی بر روی اعداد و متغیر های عددی بکار می روند که عبارتند از :

 

1 – الف : عملگر ^ ( توان )

عملگر ^ عددی را به توان عددی دیگر می رساند . مانند دستورالعمل زیر :

 

Result = Number1 ^ Number2

 

طبق این دستورالعمل ، عدد Number1 به توان عدد Number2 می رسد و حاصل آن در متغیر Result ریخته می شود . مانند مثال زیر :

 

Adad = 3.5 ^ 2

 

در این مثال اگر 3.5 به توان 2 برسد حاصل آن برابر 12.25 خواهد بود . پس اگر متغیر Adad از نوع عدد طبیعی باشد ( Integer ، Boolean ، Byte ، Word ، Dword و Double Integer ) عدد 12 در آن ذخیره می شود و اگر متغیر Adad از نوع عدد صحیح باشد ( Real و Double Float ) عدد 12.25 در آن ذخیره می شود . پس زمان استفاده از عملگر ها باید به نوع متغیری که عدد داخل آن ریخته می شود ، توجه داشته باشیم . 

 

توجه ! بهتر است دستورات را مانند مثال زیر آزمایش کنیم .

 

Adad = 3 ^ 2

Print Adad

Wait Key

 

توجه ! باید بین دستورات ، متغیر ها و عبارات و علائم موجود بین آنها فاصله ( استفاده از دکمه ی Space جهت ایجاد فضای خالی ) بگذاریم . در غیر اینصورت دستور برای برنامه قابل فهم نخواهد بود . مثلا مثال بالا را بصورت زیر ننویسیم :

 

Adad=3^2

PrintAdad

WaitKey

 

1 – ب : عملگر * ( ضرب )

عملگر * دو عدد را در هم ضرب می کند . مانند دستورالعمل زیر :

 

Result = Number1 * Number2

 

طبق این دستورالعمل ، دو عدد Number1 و Number2 در هم ضرب شده و حاصل آن در متغیر Result ریخته خواهد شد . مانند عبارت زیر :

 

Number = 4 * 76

 

در این مثال حاصل ضرب 4 در 76 برابر  304 می باشد . پس اگر متغیرمان از نوع Byte باشد ، طبق جدول متغیر ها محدوده ای بین 0 و 255 داشته باشد عدد 304 در آن به درستی ذخیره نخواهد شد . پس باید زمان استفاده از عملگر ها به محدوده ی ( گنجایش ) متغیر ها توجه داشته باشیم . به عبارتی دیگر پیش بینی کنیم که چه عددی در متغیر ریخته خواهد شد . آیا متغیر گنجایش ذخیره ی عدد حاصل را دارد یا نه ؟ اگر گنجایش آن را نداشته باشد ، به جای آن متغیری با گنجایش بالاتر را انتخاب می کنیم .

 

1 – ج : عملگر / ( تقسیم )

عملگر / عددی را بر عدد دیگر تقسیم می کند . مانند دستورالعمل زیر :

 

Result = Number1 / Number2

 

طبق این دستورالعمل ، عدد Number1 تقسیم بر Number2 می شود و حاصل آن در متغیر Result ریخته خواهد شد . مانند مثال زیر :

 

Adad = 5 / 2

 

در این مثال حاصل تقسیم 5 بر 2 برابر 2.5 می باشد . پس اگر متغیر Adad از نوع عدد طبیعی باشد ( Integer ، Boolean ، Byte ، Word ، Dword و Double Integer ) عدد 2 در آن ذخیره می شود و اگر متغییر Adad از نوع عدد صحیح باشد ( Real و Double Float ) عدد 2.5 در آن ذخیره خواهد شد .

توجه ! زمان استفاده از تقسیم به ترتیب قرار گرفتن دو عدد دقت داشته باشید . در مثال گفته شده عدد 5 بر دو تقسیم شد و حاصل آن 2.5 می باشد . ولی اگر جای آن دو را عوض کنیم ، یعنی اگر 2 سمت چپ علامت / و 5 سمت راست علامت / باشد 2 بر 5 تقسیم می شود و حاصل آن 0.4 خواهد بود . مانند نمونه ی زیر :

 

Adad = 2 / 5

 

1 – د : عملگر + ( جمع )

عملگر + عددی را با عدد دیگر جمع می کند . مانند دستورالعمل زیر :

 

Result = Number1 + Number2

 

طبق این دستورالعمل ، عدد Number1 با عدد Number2 جمع می شود و حاصل آن در متغیر Result ریخته خواهد شد . مانند مثال زیر :

 

Adad = 5 + 2.5

 

در این مثال حاصل جمع 5 با 2.5 برابر 7.5 می باشد . پس اگر متغیر Adad از نوع عدد طبیعی باشد ( Integer ، Boolean ، Byte ، Word ، Dword و Double Integer ) عدد 7 در آن ذخیره می شود و اگر متغییر Adad از نوع عدد صحیح باشد ( Real و Double Float ) عدد 7.5 در آن ذخیره می شود .

 

عملگر + علاوه بر جمع میان اعداد ( همچنین متغیر ها ) توانایی اتصال میان کاراکتر ها ( عبارات متنی ) را هم دارد . مانند دستورالعمل زیر :

 

Result = Text1 + Text2

 

طبق این دستورالعمل ، عبارت Text1 به عبارت Text2 متصل می شود و حاصل آن در متغیر Result ریخته خواهد شد . مانند مثال زیر :

 

"Example$ = "Thank " + "You

 

در این مثال عبارت Thank با عبارت You متصل و حاصل آن یعنی Thank You در متغیر $Example ذخیره خواهد شد .

 

توجه ! عبارات کاراکتری به ترتیب ، از سمت چپ به راست به هم متصل می شوند .

 

1 – ه : عملگر - ( کسر )

عملگر - عددی را از عدد دیگر کسر می کند . مانند دستورالعمل زیر :

 

Result = Number1 - Number2

 

طبق این دستورالعمل ، عدد Number2 از عدد Number1 کسر می شود و حاصل آن در متغیر Result ریخته خواهد شد . مانند مثال زیر :

 

Adad = 6 – 2.5

 

در این مثال عدد 2.5 از عدد 6 کسر و برابر 3.5 می باشد . پس اگر متغیر Adad از نوع عدد طبیعی باشد ( Integer ، Boolean ، Byte ، Word ، Dword و Double Integer ) عدد 3 در آن ذخیره می شود و اگر متغییر Adad از نوع عدد صحیح باشد ( Real و Double Float ) عدد 3.5 در آن ذخیره می شود .

 

توجه ! زمان استفاده از کسر به ترتیب قرار گرفتن دو عدد دقت داشته باشید . در مثال گفته شده عدد 2.5 از 6 کسر شد و حاصل آن 3.5 می باشد . ولی اگر جای آن دو را عوض کنید یعنی اگر 2.5 سمت چپ علامت - و 6 سمت راست علامت - باشد 6 از 2.5 کسر می شود و حاصل آن 3.5- خواهد بود . مانند نمونه ی زیر :

 

Adad = 2.5 - 6

 

1 – و : عملگر Mod ( باقیمانده )

عملگر Mod عددی را بر عدد دیگر تقسیم کرده سپس باقیمانده ی دو عدد را حساب می کند . مانند دستورالعمل زیر:

 

Result = Number1 Mod Number2

 

طبق این دستور العمل ، عدد Number1 تقسیم بر Number2 می شود و باقیمانده ی حاصل در متغیر Result ریخته خواهد شد . مانند مثال زیر :

 

 Adad = 12 Mod 4.3

 

در این مثال حاصل تقسیم 12 بر 4.3 برابر است با 2 و باقیمانده ی آن یعنی 3.4 در متغیر Adad ریخته می شود . پس اگر متغیر Adad از نوع عدد طبیعی باشد ( Integer ، Boolean ، Byte ، Word ، Dword و Double Integer ) عدد 3 در آن ذخیره می شود و اگر متغیر Adad از نوع عدد صحیح باشد ( Real و Double Float ) عدد 3.4 در آن ذخیره خواهد شد .



چهار شنبه 21 فروردين 1392برچسب:, :: 5:12 ::  نويسنده : ابوالفضل

 حتما مشتاق هستید تا نوشتن برنامه و اجرای آن را امتحان کنید .

برنامه ی DarkBasic Pro Free رو از منوی Start ویندوز و یا از روی صفحه Desktop کامپیوترمون اجرا می کنیم ، از منوی File گزینه ی New و بعد Project را انتخاب می کنیم . مانند شکل زیر .



پنجره ی New Project باز میشه مثل شکل زیر .



 

عبارت Example را بعنوان نام پروژه ( بازی ای که میخوایم بسازیم ) روبروی :Name تایپ می کنیم ( من برای مثال عبارت Example رو تایپ کردم شما هر چی دوست دارین بنویسین ) .

روبروی گزینه ی :Location مسیر ایجاد پروژه مشخص شده .

اگه گزینه ی Create directory for this project رو تیک بزنین پوشه ای با همان نام پروژمون ( برای مثال Example ) در مسیر :Location ایجاد میشه و فایلهای مرتبط با پروژه داخلش قرار میگیرن .

تیک گزینه ی Create directory for this project رو به هیچ وجه برندارین ( اگه تیکشو بردارین پشیمون میشین )

دکمه ی skip & Create a new blank project هم برای ایجاد پروژه ی خالی بکار میره ( استفاده نکنید )

حالا دکمه ی Ok را می زنیم تا پروژه ی جدید با نام Example ایجاد شود .

وقتی دکمه OK رو زدیم یه پوشه با نامی که انتخاب کردیم ( برای مثال Example ) در مسیر :Location ایجاد شد .

C:\Program Files\The Game Creators\Dark Basic Pro Free\Dark Basic Pro\Projects

شکل زیر پوشه ایجاد شده را در مسیر :Location نشان میدهد .


 


حالا پوشه ایجاد شده رو باز میکنیم تا ببینیم توش چیه . مانند شکل زیر .



 

اگه شکل بالا رو ببینین دو تا فایل داخل پوشه ایجاد شده . یکی با نام Example.dbpro که فایل اصلیه پروژمونه که تنظیمات مهم بازی داخلش ذخیره میشه و دیگری فایل Example که متن برنامه مون به زبان Basic داخلش نوشته و ذخیره میشه و آیکنش مثل چکش میمونه . همونطور که دیدین نام پوشه و فایل های مربوطه با همون اسمی که موقع ایجاد پروژه انتخاب کرده بودیم ایجاد شدن .

حالا برای شروع کار باید دستوراتی تایپ کنیم تا DarkBasic آن را بخواند و اجرا کند . آیا ما میتوانیم هر چیز دلخواهی را که دوست داشتیم داخل ویرایشگر بنویسیم ؟ جواب منفی است . چرا ؟ بهتر است مثالی بزنم . آیا تابحال از خودمان پرسیده ایم که زمانی که با دوستمان صحبت می کنیم ، او چگونه حرف های ما را میفهمد ؟ دلیل آن این است که دوستمان کلماتی را که بر زبان می آوریم ، می شناسد . مثلا زمانی که به او می گوئیم : هوا سرد است ، او این سه کلمه ی گفته شده ی ما را می شناسد و از ترتیب گفتن آن ها متوجه منظورمان می شود و یا اگر به او بگوئیم که : لطفا کتاب مرا بده . او متوجه منظورمان می شود . پس دلیل اینکه حرف هایمان را می فهمد این است که کلمات و جملاتی که به او می گوئیم برایش آشنا هستند . آیا اگر هر چیزی که معنی نداشته باشد به او بگوئیم ، او میفهمد ؟ مثلا به او بگویم : ( ینتا نعبع نکحفهسن نت ) . آیا او می فهمد که ما چه گفتیم ؟ قطعا متوجه نخواهد شد . پس باید کلماتی را که او با آن ها آشنایی دارد را ، بطور مرتب و معنی دار و پشت سر هم ، بصورت زبانی که او متوجه می شود ، بگوییم . مثلا اگر او فارسی زبان است ، به زبان فارسی و اگر انگلیسی زبان است ، باید با زبان انگلیسی با او صحبت کنیم . زبان های کامپیوتر از جمله DarkBasic ، دارای زبانی مخصوص به خود می باشند و برای فهماندن منظورمان به آن ، کافی است آن زبان را یاد بگیریم . برای یاد گیری این زبان ، باید کلمات و دستورات آن را مطالعه کنیم . برای مثال کد زیر را داخل ویرایشگر برنامه تایپ می کنیم . بطوری که به غیر از کد زیر ، چیز دیگری نوشته نشده باشد .

 

"Print "Welcome


 

سپس برای اجرای برنامه کلید F5 را فشار می دهیم .


نکته : اگه ابتدای اجرای برنامه با خطا مواجه شدین مبنی بر اینکه Direct X 9.0c نصب نیست میتونید با نصب یه بازی که به همراه خودش Direct X هم نصب می کنه مشک رو حل کنید و یا در Internet موتور Direct X رو تهیه کنید .

ما بغیر از ظاهر و ناپدید شدن یه پنجره مشکی رنگ چیز دیگری مشاهده نکردیم . علت چیست ؟ در این خط از برنامه ، فرمان چاپ عبارت welcome را با استفاده از دستور Print دادیم . منتهی سرعت اجرای برنامه آن قدر زیاد است که چشم ما قادر به دیدن این عبارت نشد و برنامه به سرعت به اتمام رسید . پس چکار باید کرد ؟ DarkBasic برنامه را خط به خط از بالا به پایین اجرا می کند . مثلا اگر چهار خط برنامه نوشته باشیم ابتدا خط اول ، بعد خط دوم ، بعد خط سوم و سر انجام خط چهارم را اجرا می کند . اگر در خطوط بعدی چیزی نوشته نشده باشد ، برنامه به پایان می رسد و چیز دیگری قابل مشاهده نخواهد بود . چون DarkBasic به محض این که کار خواندن و اجرای برنامه به پایان برسد ، از برنامه خارج می شود . پس برای آن که برنامه ی ما به این سرعت به پایان نرسد ، باید دستوری از دستوات DarkBasic را به برنامه اضافه کنیم تا مفسر DarkBasic را نگهدارد تا ما فرصت دیدن کلمه ی چاپ شده را داشته باشیم . پس خط بعدی را به برنامه اضافه می کنیم . در نتیجه برنامه بصورت زیر خواهد شد .


 

"Print "Welcome

Wait Key

 

برای اجرای برنامه سه کار را می توانیم به دلخواه انجام دهیم . راه اول فشردن دکمه ی F5 کیبورد است ، دومین راه زدن گزینه ی Compile & Run از منوی Compile و روش سوم زدن دکمه ی Compile & Run از نوار ابزار بالای برنامه که به شکل مثلث سبز رنگ است .


توجه ! در DarkBasic برنامه از سمت چپ به راست نوشته می شود و خطوط برنامه به ترتیب از بالا به پائین اجرا می شوند .

با اجرای برنامه پنجره ی برنامه نوشته شدمون باز میشه و عبارت welcome رو میتونیم ببینیم . بقیه ی صفحه هم به رنگ مشکیه .
DarkBasic برنامه را برای اجرا از خط اول می خواند . در خط اول از برنامه نوشته شده "Print "Welcome یعنی کلمه ی Print را که تایپ کریدم جزء دستورات کیلیدی DarkBasic است . به خاطر همین رنگ آن به شکل آبی در می  آید . بعد از آن عبارتی را که می خواهیم چاپ شود چون یک عدد نیست داخل دو علامت کوتیشن به شکل " و " نوشتیم و مفسر DarkBasic متوجه شد که با توجه به دستور  Print باید کلمه ی welcome مابین دو علامت " و " را چاپ کند . در خط بعدی عبارت Wait Key یکی دیگر از دستورات DarkBasic می باشد که بصورت دو کلمه ای است و وظیفه ی این دستور به این صورت است که مفسر DarkBasic را آن قدر منتظر نگه می دارد تا اینکه ما دکمه ای را فشار دهیم ( هر دکمه ای مثل دکمه ی Enter ) . سپس DarkBasic ابتدا خط اول را خواند و کلمه ی Welcome  را چاپ کرد و سپس در خط دوم فرمان Wait Key را خواند و صبر کرد تا دکمه ای زده شود . هم اکنون هر دکمه ای از کیبورد را که بزنیم برنامه به پایان می رسد .

به همین راحتی می توانیم هر کلمه و یا عبارتی را که دوست داشته باشیم تایپ کنیم ، تا نمایش داده شود . فرقی نمیکند که کلمه از چند حرف و یا چه حرف هایی تشکیل شده باشد ، فقط کافی است آن را بعد از تایپ کلمه ی Print بنویسیم .

تا الان دو دستور از دستورات موجود در DarkBasic را یاد گرفتیم .


توجه در مطالب اول همین صفحه که گفته شد : وقتی پروژه ای ایجاد میکنیم دو تا فایل داخل پوشه ایجاد میشه . یکی با نام Example.dbpro که فایل اصلیه پروژمونه که تنظیمات مهم بازی داخلش ذخیره میشه و دیگری فایل Example که متن برنامه مون به زبان Basic داخلش نوشته و ذخیره میشه و آیکنش مثل چکش میمونه . ولی به محص اینکه برنامه رو اجرا میکنیم یک فایل اجرایی هم تو همون پوشه پروژمون بوجود میاد با فرمت Exe و اگه تو هر کامپیوتری ببرین اجرا میشه بدون اینکه DarkBasic در اون کامپیوتر نصب شده باشه .

شکل زیر فایل های مربوطه به پروژه رو نشون میده .

 


 


 

همونطور که میبینید فایل Example با آیکن ذوزنقه زرد رنگ هم ایجاد شده . این فایل اجرایی رو هر بار که تو دارک بیسیک دکمه اجرا یا کامپایل رو بزنید با آخرین تغییراتی که تو برنامه و پروژه ایجاد کرده باشین به روز رسانی میشه .
این فایل ماهسل نتیجه کار شماست که برای اجرا شدنش نیازی به دارک بیسیک نداره و به زبان ماشین ترجمه شده و تو هر کامپیوتری که Direct X 9.0c نصب شده باشه اجرا میشه .


چهار شنبه 21 فروردين 1392برچسب:, :: 5:10 ::  نويسنده : ابوالفضل

 شرکت د گیم کرییتورس این برنامه قدرتمند رو بطور رایگان در اختیارمون گذاشته با کلیک بر روی لینک زیر نرم افزار را رایگان از سایت خود شرکت می تونید دانلود کنید . ( اگر نرم افزار Download Manager رو کامپیوترتون نصب باشه سرعت دانلودتون چندیدن برابر میشه )


www.thegamecreators.com/


 

فعال سازی نصب نرم افزار Dark Basic Professional

فعالسازی این برنامه خیلی راحته کافیه فقط یه ایمیل داشته باشین . حالا نرم افزار رو که دانلود کردین اجرا کنید تا با این پنجره مواجه بشین



ابتدا دکمه اولی ( Get Free Order Key ) رو کلیک کنید تا پنجره زیر باز شود .

 


سپس دکمه Next را بزنید تا پنجره زیر باز شود .

 


 

در پنجره ی بالا در قسمت Email Address ایمیل خودتون رو تایپ کنید و سپس دکمه Next را بزنید و منتظر بمانید .

بعد از مدت کوتاهی فعال سازی کامل میشه وکد فعال سازی Ordey Key به ایمیلتون صادر میشه در ایمیلتون پیام شرکت The Game Creator رو میبینین مثل شکل زیر



 

 

حالا اینبار Order Key را که به ایمیلتون فرستاده شده بود و کپی کرده بودین رو وارد کنید و مراحل رو کامل کنید .

حالا نرم افزار برای استفاده آمادس . ( برو حالشو ببر ) 


نکته : اگه برنامه موقع اجرا اعلام کرد Direct X9.0c مورد نیازه کافیه Direct X9.0c رو از اینترنت دانلود و نصب کنید و یا زمانی که یه بازی 3 بعدی نصب میکنید Direct X9.0c هم همراه بازی رو سیستمون خود به خود نصب میشه .

 

نکته : اگه یه موقع برنامه رو نصب کردین اجرا نشد دلیلش اینه که قدیمی شده و باید فایل آپگریدشو دانلود و نصب کنید . و اگه هم دوست داشتین کل فایل رو دوباره دانلود کنید .



درباره وبلاگ


به وبلاگ من خوش آمدید
آخرین مطالب
پيوندها

تبادل لینک هوشمند
برای تبادل لینک  ابتدا ما را با عنوان آموزش ساخت بازی 3D ( سه بعدی ) به زبان Basic با دارک بیسیک D و آدرس darkbasic.LXB.ir لینک نمایید سپس مشخصات لینک خود را در زیر نوشته . در صورت وجود لینک ما در سایت شما لینکتان به طور خودکار در سایت ما قرار میگیرد.





نويسندگان


آمار وب سایت:  

بازدید امروز : 9
بازدید دیروز : 13
بازدید هفته : 22
بازدید ماه : 116
بازدید کل : 99486
تعداد مطالب : 24
تعداد نظرات : 3
تعداد آنلاین : 1