تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
أدات Natshah Board 2.1 للعرض في بيئه البعدين Tile-based Games
#1
كاتب الموضوع : رجب النتشة


بسم الله الرحمن الرحيم

إخواني في الله ... الله يدخلكم الجنة

هذه أداه أقدمها لكم هنا مع مثال على عملية الإستخدام
لكي تستطيعو أن تستغدموها في برمجه الأبعاد الثنائيه البسيطه...
بالنسبه لي سوف أستخدمها في العمليات البحثيه حول الذكاء الإصطناعي والشبكات العصبيه ..

وهي موجهه لأي عملية عرض في بعدين مثل للألعاب من نوع Tile-based Games ...
وهي بسيطه الإستخدام إن شاء الله ...
نزل ملف الـ DLL الخاص بها على جهازك و أضيفه إلى مشروعك في فجوال بيسك دوت نت ..



هنا في هذا الموضوع أضع لكم الأداء على شكل DLL
مع الكود المصضري في الملفات المرفقة ..


الملفات المرفقة
.zip   NatahahBoard 2.1 Code.zip (الحجم : 40.64 ك ب / التحميلات : 24)
.zip   Natshah Board 2.1.zip (الحجم : 5.14 ك ب / التحميلات : 21)
}}}}
تم الشكر بواسطة:
#2
كاتب الموضوع : رجب النتشة


حسناّ نحن لم نرى شيء بعد الأداه مازالت غير واضحة المعالم ..
هنا أضع لكم مثال على عملية إستخدام هذه الأداه في برنامج مطبق بإستخدام فجوال بيسك دوت نت ..
بعد إضافة الإداه إلى مشروعك و وضع Object منها على أي Form في برنامجك
مثلاً يكون الإسم NatshahBoard1

تحتوي الأداه على عدد من الخصائص Properties
أهمها ..

SizeCol يتم من خلال هذه الخاصية تحديد عدد الأعمدة في الأداه .. مثلاً ممكن أن نحدديه بـ 10

SizeRow يتم تحديد عدد الصفوف في الأداه .. ممكن أن نحدده بـ 20

Extension يتم تحديد نوع الملف المخزن لمحتوايات الأداه في وقت التنفيذ .. مثل ممكن أن يكون brd. أو txt. أو أي شيء تضع في مربع الخصائص ..





يمكن الإستفادة من BackColor أو الـ BackgroundImage لوضع خلفية للأداه ..

حسننا الأن عندنا مساحة Board 20X10 يمكن أن نرسم في أي Node داخلها

يوجد مجموعة من الـ Methods التي تسهل عملية التعامل مع الأداه في عمليات الرسم ..

مثلا رسم مربع بحواف معين في أي مكان في المساحة الـ Board ..
لو أردنا أن نرسم مربعات حمراء حوافها بيضاء على جميع مساحة للوحة ..

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


كود :
Dim i As Integer
Dim j As Integer
For i = 1 To NatshahBoard1.SizeRow
For j = 1 To NatshahBoard1.SizeCol
NatshahBoard1.SetRect(i, j, Color.Red, Color.White)
Next j
Next i
وعند التنفيذ يظهر لنا كما في الشكل التالي ..


حسنن إذا أردنا أن نغير و نرسم دوائر حمراء حوافها بيضاء ..

ممكن أن نستخدم الأمر SetCircal و نمرر له المكان والألوان كما في المربع ..
مثلاً الكود التالي ..


كود :
Dim i As Integer
Dim j As Integer
For i = 1 To NatshahBoard1.SizeRow
For j = 1 To NatshahBoard1.SizeCol
NatshahBoard1.SetCircal(i, j, Color.Red, Color.White)
Next j
Next i
عند التنفيذ في كبسة يظهر عندي كما في الشكل التالي ..



SetText يسمح لنا بأن نضيف حرف أو نص في مكان معين على اللوحة ..

فإذا أردنا أن نطبع الحرف R بلون أبيض و بخط معين .. يمكن أن نقوم ببناء كود كما في الكود التالي ...


كود :
Dim i As Integer
Dim j As Integer
For i = 1 To NatshahBoard1.SizeRow
For j = 1 To NatshahBoard1.SizeCol
NatshahBoard1.SetText(i, j, "R", Color.White, Color.GreenYellow, Color.Beige, NatshahBoard1.Font)
Next j
Next i
يطهر عندي الناتج كما في الكشل التالي ..


SetTextRect يسمح لنا طباعة حرف في مربع ..
مثلاص حرف Z لونه أبيض في مربع لونه أزرق حوافه بيضاء ..
كما في الكود والشكل اللذي يليه ..


كود :
Dim i As Integer
Dim j As Integer
For i = 1 To NatshahBoard1.SizeRow
For j = 1 To NatshahBoard1.SizeCol
NatshahBoard1.SetTextRect(i, j, "Z", Color.White, Color.Blue, Color.Beige, NatshahBoard1.Font)
Next j
Next i


SetTextCircal يسمح لنا بإضافة نص إلى دائرة و رسمهم في مكان معين ..
مثلاً حرف Y في دائرة صفراء حوافها بيضاء .. كما في الكود والشكل اللذي يليه ..


كود :
Dim i As Integer
Dim j As Integer
For i = 1 To NatshahBoard1.SizeRow
For j = 1 To NatshahBoard1.SizeCol
NatshahBoard1.SetTextCircal(i, j, "Y", Color.White, Color.Gold, Color.Beige, NatshahBoard1.Font)
Next j
Next i


SetImag يسمح لنا برسم صورة معينة في المكان المراد ..

مثلاً لوم كان عندنا صورة صغيرة بإسم Red.jpg و أردنا أن نرسمها على كافة مساحة اللوحة
يمكن أن يكون الكود كما يلي مع الشكل التوضيحي للناتج بعده ..


كود :
Dim i As Integer
Dim j As Integer

Dim R As Image
R = Image.FromFile("Red.jpg")

For i = 1 To NatshahBoard1.SizeRow
For j = 1 To NatshahBoard1.SizeCol
NatshahBoard1.SetImag(i, j, R)
Next j
Next i
مثلاً ممكن وضع صورة مختلفة في مكان محدد لو كان في الصف 5 والعمود رقم 5 وكان إسم الصورة bR.jpg .. يمكن ذلك من خلال الكود التالي ..


كود :
Dim pic As Image
pic = Image.FromFile("bR.jpg")

NatshahBoard1.SetImag(5, 5, pic)
أيضاً ممكن وضع عدد من الصور في أماكن مختلفة ..
.. مثلاً صور تمثل الحروف RAJAB .. بإضافة الكود التالي ..


كود :
Dim imgR As Image = Image.FromFile("r.bmp")
Dim imgA As Image = Image.FromFile("a.bmp")
Dim imgJ As Image = Image.FromFile("j.bmp")
Dim imgB As Image = Image.FromFile("b.bmp")


NatshahBoard1.SetImag(3, 3, imgR)
NatshahBoard1.SetImag(3, 4, imgA)
NatshahBoard1.SetImag(3, 5, imgJ)
NatshahBoard1.SetImag(3, 6, imgA)
NatshahBoard1.SetImag(3, 7, imgB)
يكون الناتج كما في الشكل التالي


العملية لا تقتصر على صوره من نوع معين ممكن وضع أي نوع من أنواع الصور لعمل الإظهار المطلوب .. كما في الشكل التالي ..



هنا ممكن بناء أشكال بالمربعات .. أيضاً بإستخدام أي شيء من الموجود
كما في الشكل التالي ..






أجمل ما في الأداه هو إعطائك أمرين مهمين ..

SaveToFile يسمح لك بحفظ أي شيء موجود في اللوحة Board بغض النظر عن الأختلاف في الأنواع أو بيانات .. ( طبعاً إذا كان المعلومات كبيرة سوف يكون حجم الملف كبير , لكن إذا كان مجرد مربعات و دوار ونصوص يكون صغير .. أما الصور فتحمل في الملف )

LoadFromFile يسمح لنا بحميل الملف الخاص الذي تم حفظ البينات فيه ورسمه كما هو في الأداه ..

مثال على هذه العملية كما في الكود التالي ..


كود :
Private Sub ButtonOpenFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonOpenFile.Click
fDim FileName As String

OpenFile.CheckFileExists = True
OpenFile.Filter = " Natshah Bord (*." + Trim(NatshahBoard1.Extension) + ")|*." + Trim(NatshahBoard1.Extension)
OpenFile.ShowDialog()

FileName = OpenFile.FileName

NatshahBoard1.LoadFromFile(FileName)
End Sub

Private Sub ButtonSaveFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonSaveFile.Click
Dim FileName As String

SaveFile.CheckFileExists = False
SaveFile.Filter = " Natshah Bord (*." + Trim(NatshahBoard1.Extension) + ")|*." + Trim(NatshahBoard1.Extension)
SaveFile.ShowDialog()

FileName = SaveFile.FileName

NatshahBoard1.SaveToFile(FileName)

End Sub
إلى هنا أتركم مع الأداه والأكواد التطبيقية للتجربة و الإستفادة منها ..

إن شاء الله أن أطورها أكثر لتصبح أفضل للعمل و البرمجة ...
و هدفي فيها هو علمي بحت ...
لأننا نحتاج مثل هذه الأشياء في برمجه الذكاء الإصطناعي و الشبكات العصبيه ...و غيرها من التطبيقات ...

http://rajab.natshah.com/pic/NbPic/T...hBoard 2.1.zip
أرجو أن تستفيدوا منها ...و إنشاء الله في طريقة لإصضاره أحدث و إمكانيات أقوى ..

وبالله التوفيق ...
Smile

}}}}
تم الشكر بواسطة:


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم