دخول
×

حسابٌ واحد لجميع خدماتنا !





إنشاء حساب
نقطة التطوير - dev-point.com







جنو / لينكس - GNU / Linux كل ما يتعلق حول جنو / لينكس والبرمجيات الحُرة

 تم تحميل الصفحة في 0,3691946 ثانية

[سكربت] لعبة ترتيب الأرقام .. من برمجتي
!  قم بقراءة قوانين الموقع قبل اضافة رد , اضغط هنا

LinkBack أدوات الموضوع انواع عرض الموضوع

  #1
Linux Leader
Beginner Developer
 
الصورة الرمزية Linux Leader
 
   تاريخ التسجيل: 12 - 12 - 2009
   رقم العضوية : 84235
   المشاركات : 125
   بمعدل : 0.07 يوميا
   عدد النقاط : 73


Linux Leader will become famous soon enough

Linux Leader غير متواجد حالياً




افتراضي [سكربت] لعبة ترتيب الأرقام .. من برمجتي قديم اضيفت بتاريخ 31-Jan-2010, 04:16 AM بواسطة WEB

السلام عليكم ورحمة الله وبركاته ..

طلب مننا دكتور برمجة النظم ان نعمل لعبة ترتيب الأرقام بلغة السي شل ..

والحمد لله استطعت برمجتها .. ليست بالمستوى الإحترافي ولكنها تفي بالغرض ..

وأحببت أن أضعها لكم هنا كنوع من المشاركة .. وكذلك لأخذ أرائكم وانتقاداتكم وكذلك تطويركم للعبة ..

فكرة اللعبة ..
توجد 8 مستويات .. من 3 إلى 10

كل مستوى يعني عدد الأعمدة والصفوف .. مثلا مستوى 5 يعني 5 أعمدة و5 صفوف ..
يتم ترتيب الأرقام في الحقول بشكل عشوائي أو يدوي ..

وتبقى خانه فارغة .. ويجب تحريك الأرقام وترتيبها الترتيب الصحيح .. ( الرقم واحد يكون في الخانة اليسرى في الأعلى .. وأكبر رقم يكون في الخانة قبل الأخيرة من اليمين أسفل الجدول ) والخانة الأخيرة طبعا تكون فارغة ..

ويمكن تحريك أي رقم موجود في نفس الصف أو العمود الذي فيه الخانة الفارغة ..

أنا أمتاز بالشرح السيء .. لكن أرجو أني أستطعت شرح طريقة عمل اللعبة بشكل واضح ..


كود:
#!/bin/csh # # # # # # # # # # # # # # # # # # # The Arrange Numbers Game # # Scripted By Abdulaziz Al-Asiri # # # # # # # # # # # # # # # # # # # #-------------------------------------# # Welcome screen # #-------------------------------------# clear # Clean the screen to start the game #----- Shows ( = ) one by one -----# set cntr = 1 # Counter echo -n "\t" while ( $cntr <= 37 ) sleep 0.02 echo -n "\e[0;31m=\e[m" @ cntr++ end echo "" #----- Shows welcome message word by word -----# sleep 0.2 echo -n "\t\e[0;34mWelcome \e[m" sleep 0.2 echo -n "\e[0;34mTo \e[m" sleep 0.2 echo -n "\e[0;34mThe \e[m" sleep 0.2 echo -n "\e[0;34mArrange \e[m" sleep 0.2 echo -n "\e[0;34mNumbers \e[m" sleep 0.2 echo "\e[0;34mGame\e[m" #----- Shows ( = ) one by one -----# @ cntr = 1 echo -n "\t" while ( $cntr <= 37 ) sleep 0.02 echo -n "\e[0;31m=\e[m" @ cntr++ end echo "" #-------------------------------------# # Cheack if the level is in the range # #-------------------------------------# check_level: echo -n "Chose a level (3-10) : " # Asks user to chose a level between 3 and 10 set level = $< if ($level > 10 || $level < 3) then # if the level is out of range re-ask the user again echo "\e[0;31mSorry the level must be between (3-10)\e[m" goto check_level endif #----------------------------------# # Set the blocks values # #----------------------------------# #----- Prepare to set the values set plate # Array Stores real values of blocks set i = 1 # Counter for loops set buffer # Array Stores temp values of plate @ j = $level * $level # The number of blocks @ range = $j - 1 # The number of blocks without blank (hole) set counter = 0 # Counts number of moves echo -n "Set the nambers randomly [R] or by hand [H] ? : " # default value is RANDOMLY set choice = $< #----- Set temp values of blocks -----# while ( $i < $j ) set buffer = ( $buffer $i ) @ i++ end #----- Set the blocks values BY HAND -----# @ i = 1 # Re-set the counter if ( $choice == h || $choice == H) then while ( $i < $j ) # Asks user to enter blocks values one by one echo -n "Enter value of block $i [1 - $range] : " set value = $< if ( $value > 0 && $value < $j ) then # Checks if the entry value is out of rangr if ( $buffer[$value] == $value ) then # Checks if value is not used set plate = ( $plate $value ) # Adds the number to the plate array @ buffer[$value] = 0 # Sets value as used @ i++ else echo "\e[0;31mThis number already exists .. enter another number \e[m" endif else echo "\e[0;31mThe number is out of range .. enter a number again \e[m" endif end #----- Set the blocks values RANDOMLY -----# else set rand = $$ # Give (rand) a random number (PID) while ( $i < $j ) # Generates a random number set Random = `awk ' BEGIN { srand( '$rand' ); print int( rand() * '$range' + 1 ) } ' ` @ rand++ if ( ($buffer[$Random]) == 0 ) then # Checks if value is used then go back to generates continue endif set plate = ( $plate $Random ) # Adds the number to the plate array set buffer[$Random] = 0 # Sets value as used @ i++ end endif set plate = ( $plate 0) # Add [ 0 ] at last block as a blank block (hole) #----------------------------------# # Shows the plate # #----------------------------------# set StartTime = `date +%s` # To save beginning time set min = 0 # To counts mins show_plate: clear @ i = 1 # Re-set the counter echo "" # New line (empty) while ( $i <= $j ) # Show the blocks and values if ( ( $i - 1 ) % $level == 0) then @ cntr = 1 # Re-set the counter echo -n "\t" # Prints tab at the beginning of horizontal lines while ( $cntr <= $level ) # Print the horizontal lines of plate echo -n "\e[0;31m+------\e[m" @ cntr++ end echo "\e[0;31m+\e[m" # Close the end of horizontal lines echo -n "\t" # Print tab at the beginning of rows endif if ($plate[$i] == 0) then echo -n "\e[0;31m| \e[m" # If block's value is 0 shows blank block (hole) else if ( $plate[$i] < 10 ) then echo -n "\e[0;31m|\e[m \e[0;34m $plate[$i] \e[m" # Print cell if the value just one digit else echo -n "\e[0;31m|\e[m \e[0;34m $plate[$i] \e[m" # Print cell if the value two digit endif if ( $i % $level == 0) then # Close the table and print a new line if the echo "\e[0;31m|\e[m" # elements in a row equal to the number of a level endif @ i++ end @ cntr = 1 # Re-set the counter echo -n "\t" # Prints tab at the beginning of last horizontal line while ( $cntr <= $level ) echo -n "\e[0;31m+------\e[m" # Print the last horizontal line of plate @ cntr++ end echo "\e[0;31m+\n\e[m" # Close the end of horizontal line and print new empty line #----------------------------------# # Check if the blocks are arranged # #----------------------------------# @ i = 1 # Re-set the counter set check_array = 1 while ( ($plate[$i] == $i) && $i < $j) # Checks if every block in the right position @ check_array++ @ i++ end if ($check_array == $j) then # if check_array = j that means the plate is arranged so, finish set EndTime = `date +%s` # To saves end time @ EndTime = $EndTime - $StartTime # find the real time while ($EndTime > 59) @ EndTime = $EndTime - 60 @ min++ end echo "\e[0;34mYou win !\e[m" echo "\e[0;34mYou Took (\e[1;31m $min min And $EndTime sec And $counter moves\e[0;34m) to arrange the blocks\e[m" goto OUT endif #----------------------------------# # Get next movement # #----------------------------------# CHOSE: echo -n "Enter block number to move it , or [Q] to quit : " set num = $< set block = 0 # If the value do not change that means choice is out of range if ($num == q || $num == Q) then goto OUT # Quit endif #----------------------------------# # Get the position of block # #----------------------------------# set chk_num = 1 # Set the counter while ($chk_num <= $j) if ( $num == $plate[$chk_num]) then @ block = $chk_num # Gets the real coordinate of the block break endif @ chk_num++ end #----------------------------------# # Check if the movement is correct # #----------------------------------# #----- First : check out the range -----# if ($block == 0) then goto wrong_movement endif #----- Second : check above the selected block -----# set temp_block = $block # Set temp_block set blocks_move = 0 # Set the counter # The selected block has to be between the second row and last row while ($temp_block > $level) @ temp_block = $temp_block - $level @ blocks_move++ if ( $plate[$temp_block] == 0 ) then # If fined 0 means fined the hole goto MOVE_UP endif end #----- Third : check down the selected block -----# set temp_block = $block # Re-set temp_block set blocks_move = 0 # Re-set the counter # The selected block has to be between the first row and before-last row while ( $temp_block <= ($j - $level) ) @ temp_block = $temp_block + $level @ blocks_move++ if ( $plate[$temp_block] == 0 ) then # If fined 0 means fined the hole goto MOVE_DOWN endif end #----- Fourth : check right the selected block -----# set temp_block = $block # Re-set temp_block set blocks_move = 0 # Re-set the counter # The selected block has to be between the first column and before-last one while ( $temp_block % $level > 0) @ temp_block++ @ blocks_move++ if ( $plate[$temp_block] == 0 ) then # If fined 0 means fined the hole goto MOVE_RIGHT endif end #----- Fivth : check Left the selected block -----# set temp_block = $block # Re-set temp_block set blocks_move = 0 # Re-set the counter # The selected block has to be between the first column and before-last one while ( $temp_block % $level > 1 || $temp_block % $level == 0 ) @ temp_block-- @ blocks_move++ if ( $plate[$temp_block] == 0 ) then # If fined 0 means fined the hole goto MOVE_LEFT endif end #----------------------------------# # movements # #----------------------------------# #----- Wrong movement -----# wrong_movement: echo "\e[0;31mSorry .. the movement is wrong! please chose again\e[m" goto CHOSE #----- Moves UP -----# MOVE_UP: set X = $temp_block # Temp variable while ($blocks_move > 0) # If there is still moves @ X = $X + $level @ plate[$temp_block] = $plate[$X] @ temp_block = $temp_block + $level @ blocks_move-- end @ counter++ # Increments the moves counter set plate[$X] = 0 # Sets the (hole) in the new position goto show_plate #----- Moves DOWN -----# MOVE_DOWN: set X = $temp_block # Temp variable while ($blocks_move > 0) # If there is still moves @ X = $X - $level @ plate[$temp_block] = $plate[$X] @ temp_block = $temp_block - $level @ blocks_move-- end @ counter++ # Increments the moves counter set plate[$X] = 0 # Sets the (hole) in the new position goto show_plate #----- Moves RIGHT -----# MOVE_RIGHT: set X = $temp_block # Temp variable while ($blocks_move > 0) # If there is still moves @ X = $X - 1 @ plate[$temp_block] = $plate[$X] @ temp_block = $temp_block - 1 @ blocks_move-- end @ counter++ # Increments the moves counter set plate[$X] = 0 # Sets the (hole) in the new position goto show_plate #----- Moves LEFT -----# MOVE_LEFT: set X = $temp_block # Temp variable while ($blocks_move > 0) # If there is still moves @ X = $X + 1 @ plate[$temp_block] = $plate[$X] @ temp_block = $temp_block + 1 @ blocks_move-- end @ counter++ # Increments the moves counter set plate[$X] = 0 # Sets the (hole) in the new position goto show_plate #----------------------------------# # F I N I S H # #----------------------------------# OUT: echo "\n\e[0;32m\t+-----------------+" echo "\t| B Y E |" echo "\t+-----------------+\n\e[m" exit 0 # Exit without errors # EOF #
أنتظر رأيكم ..

دمتم في خير ..

ملاحظة / تمت تجربة اللعبة على فيدورا وتعمل بشكل سليم ..
وتمت تجربتها على ريدهات واوبينتو ولم تعمل .. لا أدري ما السبب !!

لكن اذا كنت نستخدم اوبينتو جرب استبدال

كود:
echo
بـ

كود:
echo -e
وكذلك ..

كود:
echo -n
بـ

كود:
echo -en

ملاحظة هامة !!

يجب حذف الفراغ في بداية السطر الأول .. لأنه يسبب خطأ ..



كود:
 #!/bin/csh

الفراغ بسبب النسخ للمنتدى ..

وبالتوفيق للجيمع ..
إقتباس
  #2
Dr.X3
VIP DeveloPer
 
الصورة الرمزية Dr.X3
 
   تاريخ التسجيل: 20 - 6 - 2009
   رقم العضوية : 78212
   المشاركات : 755
   بمعدل : 0.39 يوميا
   عدد النقاط : 1337


Dr.X3 has much to be proud ofDr.X3 has much to be proud ofDr.X3 has much to be proud ofDr.X3 has much to be proud ofDr.X3 has much to be proud ofDr.X3 has much to be proud ofDr.X3 has much to be proud ofDr.X3 has much to be proud ofDr.X3 has much to be proud ofDr.X3 has much to be proud of

Dr.X3 غير متواجد حالياً




افتراضي رد: [سكربت] لعبة ترتيب الأرقام .. من برمجتي قديم اضيفت بتاريخ 31-Jan-2010, 10:45 PM بواسطة WEB

شي جميل وآصل إبداعتك
توقيع Dr.X3


???? ???? ??????????? ???????? - ????? ??? ????? ??? ??????????

??? ??? ????? ?? ??? ??? - ???? ????? ?? ??? ?????????

???? ?????? ?? ???? ?????? - ???? ????? ?? ??? ???????


إقتباس
  #3
ฟ į ẕ ،’
' Dangerous , ♥ !
 
الصورة الرمزية ฟ į ẕ ،’
 
   تاريخ التسجيل: 28 - 10 - 2009
   رقم العضوية : 81464
   المشاركات : 6,908
   بمعدل : 3.80 يوميا
   نظام التشغيل : Windows XP
   عدد النقاط : 40751


ฟ į ẕ ،’ has a reputation beyond reputeฟ į ẕ ،’ has a reputation beyond reputeฟ į ẕ ،’ has a reputation beyond reputeฟ į ẕ ،’ has a reputation beyond reputeฟ į ẕ ،’ has a reputation beyond reputeฟ į ẕ ،’ has a reputation beyond reputeฟ į ẕ ،’ has a reputation beyond reputeฟ į ẕ ،’ has a reputation beyond reputeฟ į ẕ ،’ has a reputation beyond reputeฟ į ẕ ،’ has a reputation beyond reputeฟ į ẕ ،’ has a reputation beyond repute

ฟ į ẕ ،’ غير متواجد حالياً




افتراضي رد: [سكربت] لعبة ترتيب الأرقام .. من برمجتي قديم اضيفت بتاريخ 31-Jan-2010, 11:41 PM بواسطة WEB

آلله يعطيكـ آلعافيه

تحيآتي
توقيع ฟ į ẕ ،’


الله كرريمٌ ’،
إقتباس
  #4
Linux Leader
Beginner Developer
 
الصورة الرمزية Linux Leader
 
   تاريخ التسجيل: 12 - 12 - 2009
   رقم العضوية : 84235
   المشاركات : 125
   بمعدل : 0.07 يوميا
   عدد النقاط : 73


Linux Leader will become famous soon enough

Linux Leader غير متواجد حالياً




افتراضي رد: [سكربت] لعبة ترتيب الأرقام .. من برمجتي قديم اضيفت بتاريخ 01-Feb-2010, 12:25 PM بواسطة WEB

Dr.X3 .. اهلا بك ... الأجمل مرورك من هنا .. نورت الصفحة

~~~~~~~~~

{ سلتوح } .. الله يعافيك يالغالي .. أسعدني تواجدك ..

~~~~~~~~~

ملاحظة هامة !!

يجب حذف الفراغ في بداية السطر الأول .. لأنه يسبب خطأ ..

كود:
 #!/bin/csh

الفراغ بسبب النسخ للمنتدى ..

وبالتوفيق للجيمع ..
إقتباس
  #5
Dr.X3
VIP DeveloPer
 
الصورة الرمزية Dr.X3
 
   تاريخ التسجيل: 20 - 6 - 2009
   رقم العضوية : 78212
   المشاركات : 755
   بمعدل : 0.39 يوميا
   عدد النقاط : 1337


Dr.X3 has much to be proud ofDr.X3 has much to be proud ofDr.X3 has much to be proud ofDr.X3 has much to be proud ofDr.X3 has much to be proud ofDr.X3 has much to be proud ofDr.X3 has much to be proud ofDr.X3 has much to be proud ofDr.X3 has much to be proud ofDr.X3 has much to be proud of

Dr.X3 غير متواجد حالياً




افتراضي رد: [سكربت] لعبة ترتيب الأرقام .. من برمجتي قديم اضيفت بتاريخ 01-Feb-2010, 01:11 PM بواسطة WEB


المشاركة الأصلية كتبت بواسطة linux leader مشاهدة المشاركة

dr.x3 .. اهلا بك ... الأجمل مرورك من هنا .. نورت الصفحة

~~~~~~~~~

{ سلتوح } .. الله يعافيك يالغالي .. أسعدني تواجدك ..

~~~~~~~~~

ملاحظة هامة !!

يجب حذف الفراغ في بداية السطر الأول .. لأنه يسبب خطأ ..

كود:
 #!/bin/csh

الفراغ بسبب النسخ للمنتدى ..

وبالتوفيق للجيمع ..
تمت دمج الملاحظة في الموضوع ..
توقيع Dr.X3


???? ???? ??????????? ???????? - ????? ??? ????? ??? ??????????

??? ??? ????? ?? ??? ??? - ???? ????? ?? ??? ?????????

???? ?????? ?? ???? ?????? - ???? ????? ?? ??? ???????


إقتباس
  #6
Linux Leader
Beginner Developer
 
الصورة الرمزية Linux Leader
 
   تاريخ التسجيل: 12 - 12 - 2009
   رقم العضوية : 84235
   المشاركات : 125
   بمعدل : 0.07 يوميا
   عدد النقاط : 73


Linux Leader will become famous soon enough

Linux Leader غير متواجد حالياً




افتراضي رد: [سكربت] لعبة ترتيب الأرقام .. من برمجتي قديم اضيفت بتاريخ 01-Feb-2010, 06:26 PM بواسطة WEB

بيض الله وجهك أخوي Dr.X3

ويعطيك الف عافية ..,
إقتباس
  #7
آلملكي
ExpErt DeveloPer
 
الصورة الرمزية آلملكي
 
   تاريخ التسجيل: 22 - 7 - 2009
   رقم العضوية : 80030
   العمر : 20
   المشاركات : 3,130
   بمعدل : 1.63 يوميا
   عدد النقاط : 1024


آلملكي has much to be proud ofآلملكي has much to be proud ofآلملكي has much to be proud ofآلملكي has much to be proud ofآلملكي has much to be proud ofآلملكي has much to be proud ofآلملكي has much to be proud ofآلملكي has much to be proud of

آلملكي غير متواجد حالياً




افتراضي رد: [سكربت] لعبة ترتيب الأرقام .. من برمجتي قديم اضيفت بتاريخ 03-Feb-2010, 02:08 AM بواسطة WEB

,,



مشكور ع آلطرح آلمميز يآلغلآ

سلمت آنآملك آلطيبه

وذآ مآهوب غريب عليك ولآ ع آحد من آلآخوآن بآلديف ,,

تقبل مرورىى ووردتي




,,
إقتباس
  #8
Linux Leader
Beginner Developer
 
الصورة الرمزية Linux Leader
 
   تاريخ التسجيل: 12 - 12 - 2009
   رقم العضوية : 84235
   المشاركات : 125
   بمعدل : 0.07 يوميا
   عدد النقاط : 73


Linux Leader will become famous soon enough

Linux Leader غير متواجد حالياً




افتراضي رد: [سكربت] لعبة ترتيب الأرقام .. من برمجتي قديم اضيفت بتاريخ 06-Feb-2010, 07:22 AM بواسطة WEB

أهلا بك أخي الملكي ..

مرورك أسعدني ..

~~~~~~~~~~~~~~~~~

قام أحد الأخوه مشكورا بعمل بعض التعديلات على السكربت .. وتقريبا السكربت الآن يعمل على جميع التوزيعات ..

لكن في هذه النسخة من السكربت تمت إزالة الألوان ..

تجدون السكربت بعد التعديل في هذه الصفحة http://pastebin.com/f7f49c731

ودمتم بخير ..
إقتباس
  #9
bashar husainat
Beginner Developer
 
   تاريخ التسجيل: 9 - 1 - 2010
   رقم العضوية : 87941
   المشاركات : 77
   بمعدل : 0.04 يوميا
   عدد النقاط : 64


bashar husainat will become famous soon enough

bashar husainat غير متواجد حالياً




افتراضي رد: [سكربت] لعبة ترتيب الأرقام .. من برمجتي قديم اضيفت بتاريخ 06-Feb-2010, 06:38 PM بواسطة WEB

مشكور يالغالي ولك من ي احلى تقييم
إقتباس
  #10
bashar husainat
Beginner Developer
 
   تاريخ التسجيل: 9 - 1 - 2010
   رقم العضوية : 87941
   المشاركات : 77
   بمعدل : 0.04 يوميا
   عدد النقاط : 64


bashar husainat will become famous soon enough

bashar husainat غير متواجد حالياً




افتراضي رد: [سكربت] لعبة ترتيب الأرقام .. من برمجتي قديم اضيفت بتاريخ 06-Feb-2010, 06:40 PM بواسطة WEB

إقتباس

مواقع النشر (المفضلة)


الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1)
 
أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is في
كود HTML معطلة
Trackbacks are في
Pingbacks are في
Refbacks are في


Google+

الساعة الآن 12:43 PM

Powered by Devpoint, Inc. community
Copyrights for vBulletin Inc.
Devpoint v3.0 preview - Build 1402.11

نظام الترقية - الحسابات الموثوقة - خصوصية الموقع - [ Dev-PoinT ] - الأعلى




SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180