بسم الله الرحمن الرحيم
السلام عليكم ....
VINCENT_ELITE & Dark 13 : شكراً
Bad News : لا استطيع الاكمال في التجارب في الوقت الحالي بسبب كما تعرفون (الدراسة) فهي المستقبل الحقيقي والشهادة التي تضمن كرامتي امام المجتمع .... وهذه السنة بالذات ستحتم مصيري في تحديد تخصصي حيث ان هذه السنة الاولى لي في الجامعة (عمري 18 ) ، فهي سنه تحضيريه بالنسبة لطلاب كلية الهندسة فعند نهايتها يتم تعيين في تخصصات الهندسة السبع تبعاً للمعدل الثانوي والجامعي (الله يعين :-)
المهم الكلام هذا كله عشان تعذروني لاني بالاشهر الثلاثة القادمه حتى بداية العطلة ما راح اعمل شيء سوى تخطيط الهيكل العام لألعاب الRPG
Good News : لقد قمت بتصميم الهيكل لألعاب الRPG...
تخيلوا انني اريد تصميم شجره : فهل أقوم بتصميم الحائط ثم أقوم بإنشاء التصادم عليه ثم أقوم بإكساء لمادة الشجرة ثم أقوم بتحجيمه ثم أقوم بإضهارة على الشاشة في كل مرة أريد أن انشئ شجرة .... هذا يعد من الجنون ان اردت عمل لعبة كاملة ... ولكن نقوم بكتابة كائن يقوم يتحديد مجيع الخواص للشجرة فكل ما علي اذا اردت ان انشئ شجرة جديدة اقوم بكتابة امر كهذا فقط :
كود:
Tree1.CreateNew 100 , 200 , 300
حيث الارقام 100 و 200 و 300 تحدد موقع الشجرة
فقط وبهذا اكون أنشأت شجرة جديدة ....
طبعاً الكائن CreateNew يقوم بالعملية فهذه المعطيات تذهب الى جزء اخر يقوم هو بإنشاء الشجرة :
كود:
Public Sub Create_Tree(Tree_Name As String, Face_Name As String, X1 As Single, X2 As Single, Y1 As Single, Y2 As Single, Z As Single, TxTPAth As String, Color As R3DCOLORKEY)
Meshbuilder2.Mesh_Create Tree_Name
Meshbuilder2.Mesh_AddFace Face_Name, ""
Meshbuilder2.Face_AddVertex Helper.R3DPoint3D(X1, Y1, Z), Helper.R3DVector3D(0, 0, 1), Helper.R3DVector2D(0, 1)
Meshbuilder2.Face_AddVertex Helper.R3DPoint3D(X1, Y2, Z), Helper.R3DVector3D(0, 0, 1), Helper.R3DVector2D(0, 0)
Meshbuilder2.Face_AddVertex Helper.R3DPoint3D(X2, Y1, Z), Helper.R3DVector3D(0, 0, 1), Helper.R3DVector2D(1, 1)
Meshbuilder2.Face_AddVertex Helper.R3DPoint3D(X2, Y2, Z), Helper.R3DVector3D(0, 0, 1), Helper.R3DVector2D(1, 0)
Meshbuilder2.Mesh_SetCullMode R3DCULLMODE_DOUBLESIDED
Meshbuilder2.Mesh_AddFace Face_Name, ""
Meshbuilder2.Face_AddVertex Helper.R3DPoint3D(0, Y1, X1 + Z), Helper.R3DVector3D(0, 0, 1), Helper.R3DVector2D(1, 1)
Meshbuilder2.Face_AddVertex Helper.R3DPoint3D(0, Y2, X1 + Z), Helper.R3DVector3D(0, 0, 1), Helper.R3DVector2D(1, 0)
Meshbuilder2.Face_AddVertex Helper.R3DPoint3D(0, Y1, X2 + Z), Helper.R3DVector3D(0, 0, 1), Helper.R3DVector2D(0, 1)
Meshbuilder2.Face_AddVertex Helper.R3DPoint3D(0, Y2, X2 + Z), Helper.R3DVector3D(0, 0, 1), Helper.R3DVector2D(0, 0)
Meshbuilder2.Mesh_SetCullMode R3DCULLMODE_DOUBLESIDED
Texture.Texture_Load "Tree", App.path + TxTPAth, Color
Meshbuilder2.Mesh_SetTexture 0, "Tree"
End Sub
هذا هو كائن انشاء الاشجار
مثال اخر :
كائن يقوم بانشاء مبرعات حوار الRPG (تضهر الحروف متتابعة)
كود:
chat1.Draw_chat "Hey :) ... As you Can See The Speed Of the game is good", "Even If I Used High Poly Objects Or 10000 of Particle", "Every Thing on Real Games I put It Here for Testing", "My Regards .... PRG OF RPG يزيد الديقان", "Press H to Hide The Dialog", 400, 400, 5, 3, R3DKEY_H
انظرا لهذه الصورة فيها مربع الحوار :
وايظاً هي اختبار لكائنات اخرى مثل انظمة الجزيئات (تساقط كرات الثلج + المطر ) .....
وأما كائنه الذي يقوم بالعملية :
كود:
Public Sub Draw_chat(Str0 As String, Str1 As String, Str2 As String, Str3 As String, Str4 As String, Top As Long, Left As Long, How_many As Byte, speed As Byte, KeyCode As R3DKey)
Static I As Byte, I2 As Byte, Witch As Byte, Strings(4) As String, bchat As Boolean, work As Boolean
Dim Count As Byte, Letter As String
If work = False Then
Select Case Witch
Case 0
If Strings(0) = Str0 Then
Witch = 1
I = 0
End If
I2 = I2 + 1
If (I2 = speed) And (Strings(0) <> Str0) Then
I2 = 0
I = I + 1
Count = Len(Str0)
Letter = Mid(Str0, I, 1)
Strings(0) = Strings(0) + Letter
End If
Case 1
If Strings(1) = Str1 Then
Witch = 2
I = 0
End If
I2 = I2 + 1
If (I2 = speed) And (Strings(1) <> Str1) Then
I2 = 0
I = I + 1
Count = Len(Str1)
Letter = Mid(Str1, I, 1)
Strings(1) = Strings(1) + Letter
End If
Case 2
If Strings(2) = Str2 Then
Witch = 3
I = 0
End If
I2 = I2 + 1
If (I2 = speed) And (Strings(2) <> Str2) Then
I2 = 0
I = I + 1
Count = Len(Str2)
Letter = Mid(Str2, I, 1)
Strings(2) = Strings(2) + Letter
End If
Case 3
If Strings(3) = Str3 Then
Witch = 4
I = 0
End If
I2 = I2 + 1
If (I2 = speed) And (Strings(3) <> Str3) Then
I2 = 0
I = I + 1
Count = Len(Str3)
Letter = Mid(Str3, I, 1)
Strings(3) = Strings(3) + Letter
End If
Case 4
If Strings(4) = Str4 Then
Witch = 5
I = 0
End If
I2 = I2 + 1
If (I2 = speed) And (Strings(4) <> Str4) Then
I2 = 0
I = I + 1
Count = Len(Str4)
Letter = Mid(Str4, I, 1)
Strings(4) = Strings(4) + Letter
End If
Case 5
If Control.Keyboard_GetKeyState(KeyCode) = True Then
For I = 0 To 4
Strings(I) = ""
Next I
Interface2d.Complex_SetPointer "chat"
Interface2d.Class_ClearMe
work = True
End If
End Select
Interface2d.Primitive_DrawText Left, Top, Strings(0)
Interface2d.Primitive_DrawText Left, Top + 20, Strings(1)
Interface2d.Primitive_DrawText Left, Top + 40, Strings(2)
Interface2d.Primitive_DrawText Left, Top + 60, Strings(3)
Interface2d.Primitive_DrawText Left, Top + 80, Strings(4)
If bchat = False Then
Interface2d.Complex_Create App.path & "/chat.jpg", "chat", R3DCOLORKEY_BLACK, R3DBLENDMODE_DEST
Interface2d.Complex_SetPosition Left - 20, Top - 20
Interface2d.Complex_SetSize 400, How_many * 26
bchat = True
End If
End If
End Sub
كما ترون معقد جداً لكن مفيد جداً
هذه الطريقة تمسى " البرمجة الكائنة OOP" وهي حديثة ...
واذا كنت تنوي صنع لعبة RPG فيجب ان يتعتمد على الكائنات اعتماد كلي
اما المقصود بالهيكل الهندسي فتخيل : زاد الليفيل - قام بالتخزين - نزام القتال بتعقيداته - غير السلاح - الانتقال بين المراحل - تعاقب الاحداث - اشترى وباع اداة
هذه العمليات المعقدة كيف ستوضفها في كائنات وتجعلها (الكائنات) تتعامل مع بعضها البعض !!!! هذا المقصود بالهيكل الهندسي (تستطيع تغيير المصطلح فهو من عندي :-)
كائنات قمت بها حتى الان ونسبة اكمالها
Weapon : كل ما يخص الاسلحة (20%)
Item : كل ما يخص العناصر ( 15%)
Particle : التأثيرات مثل الثج - المطر - الدخان - الليزر - الانفجارات - الشلال - النار (افكر في اضافة البرق والضباب ) (100%)
Sound : لتشغيل جميع انساق الاصوات (100%)
Movie : لتشغيل ملفات الفيديو mov avi تم (100%)
Chat : لاضهار مربعات الحوار (تمرر له الاسطر والموقع والسرعة ويقوم بالانشاء) (100%)
Charecter : الشخصيات (7%)
Battle : المعارك (0%)
Monster : الاعداء (0%)
Tree : صانع الاشجار (100%)
WaterSurface : المسطحات المائية (100%)
Dscreen : شاشة التوقف (100%)
......... هنالك كائنات اخرى مثل Menu ..... جاري تنفيذ المخطط
نصيحة : عند قيامك بالتخطيط استخدم القلم الرصاص والورقة قبل البدء بتنفيذ أي شيء
بشكل عام انهيت 17% من الهيكل
عموماً اظن ان هذا اطلعكم على الفكرة من البرمجة وماهيتها ....
والان في خلال فتره الدراسة حتى نهاية العطلة
RPG : : ياخي خلص القصة :6 ( اهم شيء البداية ..ولو ما فيها تعب عليك لو تضع صور توضيحية للاماكن وبداية القصة لكان افضل بكثير :-)
MR.BlackMan : لو تضع ملف مضغوط فيه موسيقى MIDI لجميع الحالات : حزن - فرح - حماس -معركة - ذكريات - نوم - مسابقة .....
RPGGirl : : الا وين الصور !! امزح (Save it for later) .... الله يعينك المهام اللي عليك كثيره ...في خلال فترة السبات البرمجي ... اريدك ات تعملي :
- شاشة التوقف Start
- شعار اللعبة
- تصميم ملابس الشخصيات الرئيسية والفرعية
- تصميم اشكال الادوات Potion .. PhonixDown ..الخ
- ماتحتاجه شاشة الMenu
- Ideas
ملاحظة / لإدراك افضل RPG يعرف كيف ستكون اللعبة ...
PlayStation : : اشكرك على ما فعلته لي ... لن انسى هذا الصنيع..شكراً :-)
تحياتي للجميع :-)