السلام عليكم
حمل الملف في تقينة متعدد المهام وشوية bugs بس ممكن تستفيد منه
بالتوفيق
في المثال يتضح المقال
السلام عليكم
حمل الملف في تقينة متعدد المهام وشوية bugs بس ممكن تستفيد منه
بالتوفيق
في المثال يتضح المقال
:(
السلام عليكم
بارك الله فيك علي إرحمه هذه المشكلة أول مرة أشوفها لذلك لا أعرفها
لكن هل كنت تشوف الأمثلة التي وضعتها أنا سابقاً
هل هذه المشكلة فقط مع الملفات التي أرسلها أنا أم مع الكل ؟
جرب برنامج أخر لفك ضغط الملفات
والله يوفقك . و أسف على التأخير
السلام عليكم
في المثال يتضح المقال
لا يا اخي العزيز
مع جميع الملفات ونفس الرسالة
قلت يمكن لانه iis مو مركب عندي
او لاني استخدم فيجوال بيسك دوت نت
عذراً
:(
بالنسبة للأمر Rnd فهو يخرج لك قيمة عشوائية من 0 إلى 1 من ِمصفوفة تحتوي على هذه الأرقام اللانهائية! ورقم المصفوفة 0!
فكلما تنادي على Rnd يأتيك بالرقم التالي في المصفوفة 0. والملاحظ أيضا أنك إذا أعدت تشغيل البرنامج سيعيد لك نفس القيم كل مرة، ذلك لأنك تقرأ من المصفوفة 0. إذا أردت القراءة من مصفوفة أخرى فكل ماعليك هو أن تشير بذلك في البرنامج باستخدام الأمر Randomize وتضيف إليه رقم المصفوفة.
Randomize 1 أو Randomize 2 وبعدها تستخدم أمر Rnd لقراءة الأرقام العشوائية من المصفوفة المعينة.
لاحظ معي أن برنامجك سيقرأ من مصفوفة معينة كل مرة، ويخرج لك نفس القيم كل مرة، وهذا قد لا يعجبك. فأنت تريد أن تقرأ من مصفوفة مختلفة كل مرة تشغل فيها البرنامج، ولحل هذه يمكنك استخدام RandomizeTimer والذي وظيفيته يقرأ الوقت الحالي ويترجمه إلى رقم مصفوفة معينة من Randomize. بهذا تحصل على مصفوفة مختلفة كلما شغلت البرنامج! لأن الوقت يتغير!
------
إضافة إحصائية: المصفوفة تحوي أرقام عشوائية موزعة بطريقة التوزيع العادي Normal Distribution على ما أعتقد. وإن كنت باحتياج مصفوفتين مختلفتين لبرنامجك (توزيعتين مختلفتين)، مثلا تسخدم الأول لإصدار مواقع معينة عشوائية على الشاشة لرسم النجوم، ومصفوفة أخرى لإصدار أرقام عشوائية تبين مواقع سفن الفضاء العدوة!!
إذا كنت تريد ذلك، فأهلا بك في البرمجة الشيئية OOP واستخدم مصفوفتين مخلفتين أو أكثر. باستخدام الفئة Random التي أشار بها أخونا اسماعيل عنجيري وشرحه الغملاسي.
Dim Rnd1 As New System.Random
Dim Rnd2 As New System.Random
فكل من Rnd1 و Rnd2 له مصفوفة مختلفة يقرأ منها! وهذه الطريقة المفضة!
---------------
طبعا يجب عليك حفظ الناتج إن أردت أن لا تسخدم أرقام مكررة مسبقا كما أشار الأعضاء. فاستخدامك العادي لRandomize سينتج لك أرقام مكررة بلا شك! كما أنصح باستخدام مجموعة Collection لحفظ هذه النواتج وليس مصفوفة Array حتى تتمكن من تغيير حجمها كلما تحتاج لذلك! أما أن تستخدم ListBox مخفية فصحيح أنها مجموعة Collection فتستطيع استخدامها لكن هذا ليس الحل الأمثل! وليست هذه وظيفتها. بل استخدم Collection معين بدلا منها!
صفحاتي: صفحة حسام الملحم www.hussam.ws مدونة
آخر المشاريع: مشروع لغة برمجة عربية شيئية التوجه
ألعاب على الجوال : 1-(لعبة O X على الجوال ) 2-(لعبة الرقم السري على الجوال ) 3-(لعبة آخر حبة على الجوال )
ألعاب على الحاسب: لعبة الوزراء الثمان ، لعبة شطرنج ، لعبة التركيب Tetris
مواضيعي:
الفرق الجذري بين الجافا و C# شرح التعامل مع WTK لبرمجة الجوالات
مشاركاتي:
برنامج (كاتب) للكاتب فهد OMLX، برنامج (المحول) للكاتب فهد OMLX، برنامج (Unit Storm) للكاتب بشير C&Dell، أيهما أكبر الأعداد الصحيحة أم الطبيعية للكاتب Romanof، سؤال رياضي بحت للكاتب VB6-Rocket، التحدي الكبير للكاتب ANSI،
السلام عليكم ورحمة الله وبركاته
اخي AliRahmah اتمنى ان طريقتي هذه تحل المشكلة
فمن ردودك فهمت ان هناك زر امر اذا ضغطه المستخدم يبدا عرض ارقام من 1 الى 20 في Label سميته LGame10 كل ما استدعي الحدث Tick للـ Timer الذي سميته TGame1 .. وفكرتي ان تضيف Listbox الى الفورم وتجعل خاصية Visable تساوي False لكي لا يراها المستخدم .. وتكتب الكود التالي داخل TGame1
Randomize() Dim x, y, z, a As Byte y = ListBox1.Items.Count - 1 For x = 1 To 20 z = Rnd() * 19 If ListBox1.Items.Contains(z) = False Then If y >= 0 And a = 1 Then ListBox1.Items.RemoveAt(y) End If ListBox1.Items.Add(z) a = 1 n = z + 1 LGame10.Text = n Exit For Else x = x - 1 End If Next
وشرح فكرتي تبدأ باستخدامي لـ Randomize وهي كانت تستخدم ايام VB6 وفائدتها انك لو ما استخدمتها وطلبت استخراج رقم عشوائي باستخدام الدالة rnd (وهي تعطي رقم عشوائي بين الصفر والواحد) وشغلت برنامجك فسوف يعطيك ارقام عشوائيه سجل تسلسل الارقام فلنفرض انه اعطاك 5 ثم 3 ثم 1 ثم 5 اغلق برنامجك ثم اعد تشغيله فسوف يعطيك ارقام عشوائية ولكن بنفس الترتيب السابق وهذا ما لانريده ولذا نظطر لاستخدام Randomize لنجعل الرقم العشوائي الذي يعطى من قبل الدالة rnd يعتمد على ساعة النظام فك مره تشغل برنامجك يكون تسلسل اصدار الارقام العشوائية يكون مختلف
عموما فان في VB.NET لا تحتاج لهذه اللخبطه فمجرد استدعاءك للكلاس Random يغنيك عن كل مامضى
ثم وضعت قيمة عدد العناصر الموجودة في الـ Listbox داخل متغير سميته y وطرحت منه 1 وذلك بحكم لو كان هناك عنصر واحد فستكون قيمة y تساوي صفر وذلك ما اريده لان اول عنصر في القائمة الـ Index التابع له يساوي صفر
ثم وضعت حلقة ForNext
ثم وضعت قيمة الرقم العشوائي المراد اصداره في المتغير z ولم استخدم الدالة Int لان المتغير من نوع Byte فلن ياخذ من الرقم العشوائي المعطى الا الرقم الصحيح
ثم وضعت جملة شرطية بحيث لو كان الرقم العشوائي ليس موجودا في الـListbox سيقوم بتنفيذ ما بداخله وهو كالتالي
اولا هناك جملة شرطيه تختبر اذا كان المتغير y اكبر او يساوي صفر واذا كان المتغير a يساوي واحد واذا تحقق الشرط سيقوم بحذف العنصر اللاخير .. وذلك لانك تريد ان كلما دق الوقت للتايمر اعطاء رقم جديد في الليبل حتى ينقر المستخدم زر ايقاف الدولاب .. فنحتاج لحذف العنصر الذي لم يقف عنده الدولاب وبالنسبة للمتغير a فقيمته صفر وذلك يحتاج منك ان تضع في الحدث PFGame2_2_Clickان a=0 بحيث في المره الثانية لدوران الدولاب لا نقوم بحذف الرقم المضاف للقائمة حديثا
ثانيااضافة الرقم المصدر عشوائيا الى الـListbox
ثالثا نجعل قيمة a=1
رابعا نجمع الى الرقم المصدر عشوائيا 1 لانها تبدا من صفر الى 19 .. وانت تريدها من 1 الى 20 ونجعل قيمتها في المتغير n الذي تستخدمه في برنامجك داخل Select
خامسا نظهر الرقم في الليبل LGame10
سادسا نخرج من الحلقه
وهكذا في الدقه التاليه للتايمر يعمل نفس الشئ
اما اذا كان العدد العشوائي المخرج موجود مسبقا داخل الـListbox فانه سيذهب الى Else ويطلب منه طرح رقم من قيمة x ثم يعود للبحث عن رقم جديد
ولا تنسى اذا كان برنامجك يسمح بلعبة جديده من دون الخروج من البرنامج ان تكتب الكود التالي في زر لعبه جديده اذا وجد
ListBox1.Items.Clear() a = 0
اتمنى اني افدتك
اللهم صلي على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد
وبارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد
السلام عليكم
شكراً جزيلاً على التفاعل هذا والتعاطف معي جزاكم الله خير الجزاء
:)
الاخ العزيز koao
قمت بماقلت ليي باتباع الخطوات هذا كما في الصور
1. وضعت Listbox وخليت الفيزبل حقه فولس
2. نسخت الكود ووضعته في حدث التايمير
3. سويت تنفيذ للبرنامج
4. وهنا يلعب مرة والمرة الثانية (يعلق) يتوقف!!!! لين مانغلق البرنامج
ممكن اعرف ليش
مدري سويت مثل ماقلت ليي
بس
الكود
ListBox1.Items.Clear()
a = 0
لأنه عند الخروج من اللعبة والعودة اليه فقط .
عذراً طولت عليكم واجد
اعتذر اشد الاعتذار
:(
:(
السلام عليكم ورحمة الله وبركاتة
احمد الله اننا وصلنا الى نصف الحل
فيه اخطاء في الكود الذي عطيتك .. وكان المفروض اني اجرب الكود في مشروع جديد قبل ارساله .. بحكم ان المشروع الذي ترسله لا يعمل والسبب في ظني عدم احتواءه على ملف الفلاش .. عموما انا تعلمت معلومة جديده .. ان تعريف المتغيرات من نوع Byte لا يقبل عدد سالب .. لذا يجب استخدام متغير من نوع Integer او على الاقل يجب للمتغير y لان قيمته ممكن تكون سالبه ... والشئ الثاني سبب تعليق البرنامج هو استخدام Else والكود الذي بعده .. هذا الكود الجديد بعد التعديلات وارفقته كمشروع ولكن بحكم ان نسختي 2003 فما ادري اذا كان يشتغل عندك
Dim x, y, z, a, n As Integer Randomize() y = ListBox1.Items.Count - 1 For x = 1 To 20 z = Rnd() * 19 If ListBox1.Items.Contains(z) = False Then If y >= 0 And a = 1 Then ListBox1.Items.RemoveAt(y) End If ListBox1.Items.Add(z) a = 1 n = z + 1 Label1.Text = n Exit For End If Next
وبالنسبه للاخطاء عندك
فاولا لم تضع a=0 في الحدث Click لزر الامر المسما عندك PFGame2_2 المسؤول عن ايقاف الفرز او التايمر
وثانيا بالنسبة للكود الموجود في التايمر التابع للفرز TGame1 فيه اكواد كثيره تهتم باصدار الارقام العشوائيه فيجب ازالتها لان الكود السابق سيغنيك .. فمثلا انت وضعت الكود التالي
LGame10.Text = CStr(Int(Rnd() * 20)) If PFGame2_2.Enabled Then LGame10.Text = CStr(Int(Rnd() * 20)) End If
هذا يجب يزال .. وايضا كتبت بعد On Error Resume Next
n = Int(Rnd(20) * 20) فاظن ان ليس له داعي وان كان لا بد فازله واجعل كود الارقام العشوائيه الذي اعطيتك قبل كودك الخاص بـ On Error Resume Next وما يليه
اما بالنسبه للكود الاختياري
ListBox1.Items.Clear()
a = 0
فلو كان عندك زر امر او خيار في القائمة للعبه جديده من دون الحاجه للخروج فيجب عليك مسح الليست بوكس وجعل قيمة a=0
وإن شاء الله يكون في هذا حل للمشكله .. واذا ما حلت فارجع .. فهو سبيل لنا ان نتعلم من تجارب اخواننا .. وهذا المقصد الاساسي من هذا المنتدى .. والحمدلله على كل حال
اللهم صلي على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد
وبارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد
السلام عليكم
يالله صار فيه اخطاء كثيرة كثييييييرة
عذراً يا اخي اتعبتكم معي
ولكن
وضعت مثل ماقلت لي الكود اليي قلت لي به
وهذا هو
On Error Resume Next
start:
System.Windows.Forms.Application.DoEvents()
a1 = Int(Rnd(20) * 20)
FileClose(1)
FileOpen(1, "test", OpenMode.Input)
While EOF(1) = False
Input(1, noa)
Count1 = Count1 + 1
End While
FileClose(1)
Count1 = 0
FileOpen(1, "test", OpenMode.Input)
While EOF(1) = False
Input(1, no)
If a1 = no Then
GoTo start
End If
End While
Dim x, y, z, a, n As Integer
Randomize()
y = ListBox1.Items.Count - 1
For x = 1 To 20
z = Rnd() * 19
If ListBox1.Items.Contains(z) = False Then
If y >= 0 And a = 1 Then
ListBox1.Items.RemoveAt(y)
End If
ListBox1.Items.Add(z)
a = 1
n = z + 1
LGame10.Text = n
Exit For
End If
Next
End Sub
__
هذا الكود الموجود بالتايمر
وعند التنفيذ
اصبح البرنامج يفرز رقمين ومن ثم يتوقف عن الفرز
وعند ما ااضغط على االسؤال يظهر لي سؤال اي رقم
واستمر بالضغط على زر السؤال وييظهر السؤال بدون رقم
!!!!
كيف ذلك !!!!!!!!
طيب عن البرنامج
اي اني اشيل الفلاشة لانه حجمه كبير ايصير ولا يتحمل !!!
اني الآن بحمل الفلاشة بروحها والبرنامج بعد لوحده
وانته ضعه في مجلد ا bin في البرنامج لحتى يشتغل
عذراً على الاطالة عذراً
وشكراً جزيلاً لك
تحياتي ،،
ماتحملت الفلاشة
حجها
952
:(:(
عدلت على برنامجك
ورد لي اذا ظبط..
وهذا هديتي لك موقع للا ستضافه المجانية بسعة 100 ميغا
ولكنه لايقبل ملفات من نوع zip انما يقبل cap وما جربت غيرها
اللهم صلي على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد
وبارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد
السلام عليكم ورحمة الله
شكراً جزيلاً لتعاطفك معي
وانتمى لك التوفيق والنجاح
بشوف الحين البرنامج
وشكراً جزيلاً لك
تحياتي
:)
:( :( :( :(
ويييييييييه مايطلع ليش كذا
تتطلع ليي نفس الرسالة
اوه صح انته قلت اني استخدم .نت وانته 2003
:( :( :( :( :(
ياربي
طيب هذا الملف الفلاشي حملته على موقع ثاني وشكراً على الموقع اليي عطيتني وياه الحين بسجل في
:)
الرابط ما هو شغال
انا بانتظارك
وجرب انك تفتح ملف الكود (الملف المؤشر عليه في الصوره المرفقه ) فقط من دون فتح المشروع .. لعله يفتح معك وشف التعديلات ان كانت ستحل المشكله
تم تعديل هذه المشاركة بواسطة koao في 8 أبريل 2005 في 06:16
اللهم صلي على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد
وبارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد
جميل جداً بارك الله فيك اخي العزيز
الحين مايتعطل البرنامج
مايتكرر العدد
مافيه اي مشاكل
ولكن KeyPress لقد تعطلت .!!!!! وهي عند اختيار الريديو بتون (الجواب) تضغط انتر او اسبيس !!؟؟
وأيضاً لم نضع شيء بالحسبان وهو
انه عند حل جميع الارقام
لابد من تعطيل الزر وظهور رسالة انتهت الاسئلة لقد فزت او حتى عدد الاجوبة الصحيحة والخاطئة
جزاك الله خير الجزاء
سأكمل انا ماتبقى
تحياتي ،،
:)
احمد الله الذي من علي بمساعدتك اخوي AliRahmah .. واشكر لك هذا الموضوع لاني استفدت منه الكثير
اللهم صلي على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد
وبارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد
هذا الموضوع مغلق.