‏إظهار الرسائل ذات التسميات التكنولوجيا و العلم. إظهار كافة الرسائل
‏إظهار الرسائل ذات التسميات التكنولوجيا و العلم. إظهار كافة الرسائل

 زيادة متابعين للصفحات


 بعد زيادة المتابعين و تحقيق الشروط المطلوبة بهذه المواقع تقوم بعد ذلك بزيادة التفاعل والشهرة لصفحتك عن طريق اعلانات مالية التي يمكنك اطلاقها في اي منصة سواء كانت يوتيب او فايسبوك او تيك توك او غيرها 

وهذه هي الطريقة الوحيدة كي تكبر صفحتك بسرعة اما الاكتفاء بنشر محتوى دون الاعلانات فانت لن تتمكن ابدا من النجاح في قناتك حتى لو كان عندك اجمل محتوى بالعالم لانه بكل بساطة الشركات التي تدير هذه المواقع تريدك ان تدفع لها مقابل شهرتك وترويج محتواك ولا يهمها نوع المحتوى الذي تقدمه 

smm panels

per1000

--------------------------

https://mediafolow.com/services MAROC

facebook 6 /60Kmin 18usd video 1H

youtube 30

tiktok 6

insta 3

-------------------------------- 

https://figipanel.com/ 4.6 xxx

tajribat lkhidma 0.53

Facebook:2.86 /60Kmin 2.42usd video 2H 3sec

youtube:0.31norefill 6usd real /watchtime 5.42usd video 15min

tiktok: 2.86garunteed/1.6/0.99 - Views 0.61

instagram: 0.41

group member 0.53

kwai 0.5

---------------

website:https://flowlinesmm.com/services 4.7 xxx Mojarab good

Facebook:1.30 /60Kmin 0.81usd video 2H

youtube:2.52/watchtime 12.11usd video 6min

tiktok: 2.43/ views 0.0001 1min

instagram:0.38

----------------------

website:https://app.pigolikes.com/services 4.7 xxx

Facebook:0.51/ 60Kmin 0.72usd no refill video 3H

youtube:3.54 /watchtime 27.50usd video 1H

tiktok: 4.50 /views 0.36 +likes 

instagram:0.40

------------------------

website:https://smmxpanel.com/services 4.4 xxx

Facebook:0.60 /60Kmin 0.40 video 2H

youtube:2.18/1.90 /watchtime 2.95usd video 3min 1000=50h

tiktok: 2/1.72 /view 0.001

instagram:0.23

-----------------------

website:https://smbpanel.net/services 4.7 xxx

Facebook:1.08-2.08 /60Kmin 1.95 3min

youtube:5 /watchtime 30.75 Video Any

tiktok: 3.15 /views 0.0059 + 20shares 

instagram:0.79

--------------------

website:https://viralsmmpanel.com/ xxx

Facebook:2.2 /60Kmin 7.71 video 3H 

youtube:2.92 /watchtime 7.17 video 10min

tiktok: 1.45 27.12usd full mont / views 0.126

instagram:0.23


a shop for killer

a killer paradox

------------------------------

website:cheapestsmmpanel.com xxx

Facebook:0.47 /2.62profils /60Kmin 1.05 video 1H 

youtube:3.22 /watchtime views 0.93

tiktok: 2 /views 0.0012

instagram:0.44

-----------------------

website:https://smmpanelfather.com/ xxx

Facebook:1.92 /60Kmin 0.42 video 2H

youtube:2.44 /views 1.38

tiktok: 3.84 /view 0.0006

instagram:0.45

-------------------------

website:https://darksidepanel.com/services +freeservice xxx

Facebook:1.33 /60Kmin 3.52 Video 1H 3sec

youtube:1.80 /watchtime 4.64 Video 4min 

tiktok: 1.38 /views 0.01 

instagram: 0.54

----------------------------

website:https://smm-center.com/ xxx

Facebook:2 //60Kmin 0.95 video 3H

youtube:3.05 /watchtime 8.28 video 6min

tiktok: 2.64 /watch 213usd per1000

instagram:0.51

------------------------------

website:https://shoppera-smm.com/services xxx

Facebook:0.58 /60Kmin 0.84 video 3H

youtube:1.93 /views 2.23

tiktok:2.4 /views 0.01 

instagram:0.54

-----------------------------

website:https://5smm.com/services xxx

Facebook:0.74 /60Kmin 0.51 video 2H

youtube:2.47 /watchtime 3.60 VIDEO 4min

tiktok: 1.60 /views 0.02

instagram:1

------------------------------

website:https://www.smmrox.com/services MAROCxxx

Facebook:2 /views 1.4 

youtube:4.5 /views 2.6

tiktok: 2.4 NoGranteed /views 0.06

instagram:7

--------------------------------

website:https://ad4tube.com/ arab xxx

Facebook:2.08 /60Kmin 8.47 video 2H

youtube:4.59 /watchtime 33usd video 1H

tiktok: 1.92 /views 0.004

instagram:1.52

-------------------------------

website:igcpanel.com arab xxx

Facebook:0.83 /60Kmin 5.25 video 180min

youtube:3.40 /watchtime 58 video Any

tiktok: 3.02 /views 0.0014

instagram:1.18

-------------------------------

website:smmcpan.com arab ofih no9at xxx

Facebook:1.04 /60Kmin 0.98 video 2H

youtube:2.26 /watchtime 4.17 video 30min

tiktok: 1.83 /views 0.0024

instagram:1.35

-------------------------------

website:blashsmm.com

Facebook:1.14 /60Kmin 0.61 Video 3H

youtube:3 /watchtime 16.19 video 15min

tiktok: 1.14 /views 0.01

instagram:0.59

--------------------------------

website:mippanel.com maroc xxx

Facebook:3 /view 0.36

youtube:9.49 /views 4.67 for only 2min watching

tiktok: 5.87 /views 0.16

instagram:2.73

-------------------------------

website:https://speedservicen1.com/

Facebook:2 /60Kmin 1.60 Video 1H

youtube:5 /watchtime 16.80 video 1H

tiktok: 2 /views 0.0003

instagram:0.26

--------------------------------

website:smm-tiger.com arab

Facebook:1 /views 0.10

youtube:3.17 /views 0.48

tiktok: 2.36 /views 0.0009

instagram:1.65

--------------------------

video

https://fb.watch/wXHt38JZ9D/


---------------------------

تبدا سرعة التوصيل بعد وقت البدا الموجود بالوصف.


🔥 = افضل الخدمات.

💧 = خاصية تجزئة الطلب مفعلة.

♻ = زر التعويض مفعل.

⛔ = زر الالغاء مفعل.

Rxx = فترة التعويض (xx تدل على عدد ايام التعويض, مثال: R30 = 30 يوم ضمان تعويض).

ARxx = فترة التعويض التلقائي (xx تدل على عدد ايام التعويض التلقائي, مثال: AR30 = 30 يوم تعويض تلقائي).


- الطلبات ذات البدا الفوري يمكن ان تحتاج 0 -1 ساعة للبدا . (الطلبات التي تحتاج ساعة للبدا غالبا ما تبدا خلال دقائق قليلة).

- H كما في 1H, 12H, الخ تعني عدد الساعات للبدا.

- HQ/LQ = جودة عالية/جودة قليلة.

- السرعة تصل لغاية تعني xx/Day, مثال الطلب 10K/Day يمكن ان يكون 5K/Day, نحن نذكر هنا السرعة القصوى للخدمة, يرجى الرجوع الى صندوق الوصف لمزيد من التفاصيل..


المؤلف ياسين اكرام 

ادعي لي من قلبك 

 شرح برنماج اليونيتي Unity لتصميم العاب



تتمة للدرس الاول حول اليونيتي من هنا 
اسفل الدرس السابق هناك اساسيات البرنماج مهمة جدا

السلام عليكم ورحمة الله ونبدا مباشرة 

بعد تنصيب اليونيتي نسخة personel المجانية وانشاء new project سيكون لدينا برنمجين احدهما فيه ارقام ويدخلك مباشرة الى البرنماج والاخر Unity Hub ومن خلاله حين نختار Learn يعطينا مجموعة من الالعاب الجاهزة للتعلم منها او استغلالها
اثناء اختيار نوع المشروع 2D او 3D اذا كنت اعطاك عدة انواع من 3D فنحن نختار النوع 3D Sample Scene URP ولدينا في خيار Core بعد الضغط على على مشروع جديد يمكن ان تختار نوع المشهد و المنظور للعبة ولكن ليس من الضرورة الالتزام بهذه الاشياء لانه يمكن ان تختار نوع 2D وتعدل عليه ليصبح 3D لا مشكلة
عند الدخول لدينا في اعلى البرنماج كلمة Asset Store ندخل اليها هنا متجر لاشياء التي يمكن تضيفها الى مشروعك اذا نحن سنختار 3D بالاعلى ثم في القائمة سنختار by unity يعني الاضافات التي توفرها لنا الشركة ندخل نبحث عن اي اضافة تريد نحن نختار اضافة starter assets third person المنظور ثلاثي الابعاد اكب الاسم في البحث اضغط عليه ثم اضغط Add to my assets ثم open in unity ثم سياخذك الى البرنماج وتضغط download للتحميل الملفات ثم add to project لاضافتها ثم تحديث upgrade install وتنصيب سيطلب منا عمل اعادة تشغيل نقول لا ثم ثم نضغط import 
حين ندخل نضغط على اسم الملف الملف startedثم thirdperson ثم ملق المشاهد scenes folder سيعطينا المشهد وردي ولذلك نذهب الى قائمة window ثم rendering ثم render pipeline converter ثم نتاك هل الخيار الاول فيه Built-in URP ثم نضع علامة في النوافد الثلاثة ثم نضغط على convert assets فيقوم بتحويل المشهد الى مشهد مناسب
لفهم طريقة عمل اشكال هناك الطريقة العادية من خلال نافذة Hierarchy نضغط علامة زائد ثم اختيار 3D object ونختار الشكل
ولكن لفهم اكثر حول موضوع انشاء الاشكال نختار create empty سيعطينا صندوق مخفي لا يظهر نضغط اداة move كي نحرك الشكل الخفي حتى يكون واضح مكانه ثم في جانب الشاشة inspector لدينا اعدادات سنضغط Add component ثم نختار Mesh Filter ثم نضغط على الدائرة الصغيرة جدا امام خيار Box وسيعطينا اختيار الشكل في بعض الاشكال ثم سنلاحظ انه لا يظهر بعد ثم لذلك سنحتاج الى Add component ثم نختار Mesh Renderer وهكذا يظهر لدينا الشكل 
اما كي نغير اللون نقوم بنفس الطريقة التي تم شرحها سابقا وهي من قائمة project نضغط زائد ثم Material وسيعطينا كرات الالوان تلونها ب اي لون تريد على الجانب وتسحبها مباشرة لفوق الشكل 
حين نضغط على Material لدينا في اعدادته شيء مهم وهو shader بالضغط على المستطيل امامه يمكننا البحث عن نوع التاثير الذي نريده في اللون مثلا اذا كتبتا texture سيعطينا نوع عادي من الاضافة ويعطيك اختيار شكل العنصر تيكستر اما اذا كتبنا مثلا 
واذا اخترنا مثلا نوع standart يعطينا خيارات اخرى لكيفية تفاعل الشكل مع الاضاءة وغير ذلك سنجد مثلا ايقونة صغيرة امام كلمة Albedo نضغط عليها نختار شكل الذي سيظهر به اللون
وكما في الشرح السابق يمكنك مع اضافة الmesh يمكننا اضافة نضيف كذلك Rigidbody يقوم بعمل خواص فزيائية للشكل 
سنلاحظ انه لا يملك شكل فزيائي لذلك نضغط add component مرة اخرى ونختار مثلا sphere collider ثم في خانة Mesh بالجانب نضغط الدائرة الصغيرة ونختار مثلا شكل shphere يعني دائري وهكذا يتغير الشكل مباشرة
يمكننا انشاء مشاهد لامحدودة بالضغط على علامة زائد في نافذة المشروع project ثم تختار scene ودوبل كليك للدخول الى المشهد الجديد
نستطيع اخذ ايقونة المشهد game نسحبها ونضعها بجانب كي نستطيع رؤية ما تراه الكاميرة في المشهد 
مثال لعبة :
نفتح مشروع جديد ننشء صندوق نضع له في scale اعدادات الحجم X 50 و Z100 يصير لدينا مستطيل عريض جدا نعطيه اسم ground الان نقوم بتدوير وتحريك الارضية حتى تظهر كالطريق بالمشهد الان نستخرج الصندوقcube ونحركه الى امام الكاميرة في اتجاه الطريق  نعطيه اسم flyer مثلا ثم نلونه كما شرحنا سابقا الان كي نعطيه خصائص فزيائية كما شرحنا نضيف add component ونختار Rigidbody ويصير متفاعل اما خيار collider لمنع اختراق الشكل للاجسام الصلبة اما الmesh تتحكم في رسم او تواجد العنصر وخيارات transform لضبط اماكن الاشكال وحجمها بشكل دقيق كما قلما سابقا دائرة صغيرة في نافذة الmesh تعطينا تغيير الشكل واذا اخترنا مثلا الكرة سنلاحظ انها كرة غير سوية كي نجعلها كرة جيدة بكل بساطة في خيار الtransform نضغط يمين الماوس ونختار reset وتعود الكرة لحجمها المعتدل ولكن حين نحركها سنلاحظ انها تتحرك مثل الصندوق لذلك كي تتحرك معنا مثل الكرة سنلغي box collider ونضيف sphere collider
اما لتغيير منظر السماء الزرقاء في المشهد نضغط على MainCamera ثم في اعداداتها لدينا خيار Skybox نغييره الى solid color ثم نختار اللون الذي نريده حول المشهد 
حين اضغط على مشهد ثم shift+space سوف يقوم بتكبير المشهد لك للرؤية جيدا 
الان نذهب الى file ثم حفظ المشهد ونسميه مثلا level1 وسيعطينا ايقونة المشهد اسفل الشاشة وهذا يسهل عليك الانتقال بين المستويات والتعديل عليها 
كي نبدا في اعطاء اوامر برمجية للاشياء باللعبة نضغط على العنصر ثم على الجانب نضغط Add component ثم  new script ونعطي اسم للسكريبت نسميه مثلا playermovment وهنا نلاحظ ان سكريبتات تكون عبارة عن ملفات يمكن سحبها وافلاتها فوق اي عنصر فتتفعل عليه نفس الاوامر 
الان دوبل كليك على الملف وسيفتح معنا مباشرة برنماج الاكواد visual studio 
سيعطينا مكان void start نضع فيها كل الاكواد التي تستخذم في كل مرة ابدا اللعبة وفي لغة C# لا يهم اذا كان هناك فراغات بين الكلمات تستطيع حتى كتابة كل كود في سطر لوحده الان سنعطي امر بسيط لنتاكد ان اليونيتي يقراء الكود الذي نكتبه 
using UnityEngine;

public class playermovment : MonoBehaviour
{
    // Start is called once before the first execution of Update after the MonoBehaviour is created
    void Start()
    {
      ;Debug.Log("hello world yasin")  
    }

    // Update is called once per frame
    void Update()
    {
       
    }
}

كتبنا الامر Debug ونضغط ctrl+s للقيام بحفظ التغييرات او من القائمة file ثم save حتي يعمل قراءة للكود, والان نذهب للبرنماج وكما شرحنا سابقا دائما الاحرف الكبيرة تكتب كبيرة وكل سطر يجب ان ينتهي بفاصلة منقوطة نكتب بين مزدوجتين كلمة "hello world" ثم نعود للبرنماج نضغط play ومن نافذة console يجب تظهر الكلمة التي كتبنها بالكود ان لم يظهر عندك نافذة console ستجدها من قائمة النوافذ window ثم console تستطيع اضافة ما لا ناهاية من الوظائف في اليونيتي مما يعطيك لا حدود مما تستطيع انشائه 
الان اول خطوة سنفعلها هي نقوم بتعريف الشكل الذي سنجري عليه تغييرات داخل الكود وكي نفعل ذلك سنتجه الى فوق دالة void start اعلى منها سنكتب التالي 

public class playermovment : MonoBehaviour
{
    // Start is called once before the first execution of Update after the MonoBehaviour is created
    ;public Rigidbody rb
    void Start()
    {

سنلاحظ ظهور ملف عندنا بالبرنماج بنفس الاسم عندما نضغط على الكيوب وننزل في اعادادات السكريبت الذي قمنا بانشائه الى الاسفل هناك مستطيل يظهر امام خيار rb 
الان سنسحب Rigidbody الخاص بالشكل ونضعه فوق هذا الاخير اللي اسمه rb الان كلنا ذكرنا rb في الكود سوف يعرف ان المقصود هو هذا العنصر الذي وضعناه فيه ولا ننسى عمل حفظ للمشروع كي ينجح الكود في العمل من file نختار save اذا لم يعمل الكود حاول التاكد من وجود rigidbodey داخل مربع السكريبت احيانا تجد الملف لم يعد بداخل السكريبت لذلك لا يعمل معك الكود
الان لو جربنا وكتبنا كود ايقاف الجاذبية داخل دالة void start 
;rb.useGravity=false  

سنلاحظ ان الجاذبية توقفت تماما لاننا اعطينها امر false فلو اعطينها true ستعمل 
واذا كتبنا في مكانها الامر التالي 
;rb.AddForce(0, 200, 500)

فاننا نلاحظ ان هناك قوة مطبقة على الشكل وللتوضيح الصفر هو اتجاه X و 200 اتجاه Y و 500 اتجاه Z 
البرنماج مجرد كتابة ارقام هكذا يعلم مباشرة انك تقصد الاتجاهات الثلاثة 
الان اذا مسحنا دالة void start وقمنا بوضع الكود التالي في دالة update بالشكل التالي 

using UnityEngine;

public class playermovment : MonoBehaviour
{
    // Start is called once before the first execution of Update after the MonoBehaviour is created
    public Rigidbody rb;
   

    // Update is called once per frame
    void Update()
    {
       rb.AddForce(0, 0, 2000 * Time.deltaTime);  
    }
}


سنلاحظ انه كود يقوم بتدحرج الشكل للوراء ويستمر في التحرك للامام بلا نهاية كانها الرياح تجر الصندوق بعيدا
لكن كي نجعل الشكل يتحرك بشكل مباشر فوق الطريق من اعدادات Rigidbody وفي خيار constrains نضع علامة في x من خيار Rotation لكن افضل طريقة للقيام بالامر هو بالقيام بضغط يمين الماوس ثم create ثم نختار physics material 
ثم في اعدادات هذا العنصر سنقوم بتحويل اعدادات dynamic و static الى الصفر والان نسحب هذا العنصر ونضعه فوق الارضية في المشهذ وسيعطينا نفس حركة تحرك الصندوق بشكل زلق على الارضية 
الان للتحكم اكثر بحركة الشكل علينا تخزينه بالذاكرة وهذا يعني استعمال المتغايير لان المتغاييرات كما راينا سابقا هي مثل صناديق تخزين للبيانات تخزن فيها كل ما يتحرك باللعبة للتحكم في حركته ووقت حركته ووقت توقفه عن الحركة طيلة مدة اللعبة 
وهنا سنضيف هذا الكود فوق دالة void update بالاعلى بالشكل التالي : 

public Rigidbody rb;

    public float forwordforce = 2000f;

    // Start is called once before the first execution of Update after the MonoBehaviour is created
   

    // Update is called once per frame
    void Update()
    {
      rb.AddForce(0, 0, forwordforce * Time.deltaTime);  
    }

في دالة update نقوم بوضع اسم التخزين forwordforce مثلا في مكان 2000 التي وضعنها سابقا

اذا ضغطنا الان على الصندوق سنجد بان اصبح لدينا مستطيع forwordforce للتحكم بقوة الدفع يمكننا جعل الحركة سريعة او بطيئة 
الان للتحكم في تحرك الصندوق نضيف الكود التالي في دالة void  على الشكل التالي 
كود تحريك لليمين بواسطة الضغط على حرف d

 void Update()
    {
      rb.AddForce(0, 0, forwordforce * Time.deltaTime);

      if(Input.GetKey("d")) {

        rb.AddForce(500 * Time.deltaTime, 0, 0);
      }

    }

اما كي نضيف الزر الثاني لليسار نقوم بنسخ الكود بالشكل التالي مع مراعات الاقواس واحجام الحروف مهم جدا كان عندي مشكلة فب الكود حتى لاحظت غياب احد الاقواس بالكود 

void Update()
    {
      rb.AddForce(0, 0, forwordforce * Time.deltaTime);

      if(Input.GetKey("d")) {

        rb.AddForce(500 * Time.deltaTime, 0, 0);  
      }
if(Input.GetKey("a"))
 {

        rb.AddForce(-500 * Time.deltaTime, 0, 0);
    }
    }
}









سيتم اضافة معلومات جديدة مع مرور الوقت 
اترك لي دعوة من قلبك
بالتوفيق للجميع 


 تعلم لغة سي شارب C# لتصميم العاب Unity


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

اما بعد فان هذا الموضوع لتعلم لغة سي شارب مع التركيز اكثر على اليونيتي لتطوير العاب 

هذا درس اخر مشابه للدرس السابق حول لغة C#

الدرس السابق من هنا

كنت دخلت الى انرل انجن سابقا وكانت تجربة صعبة لان المشكلة كانت في اغلب الدروس باليوتيب تشرح في نسخة unreal engine 5 

والمشكلة ان هذا الاصدار الجديد يحتاج جهاز حاسوب قوي لذلك كان عندي لاق بتلك النسخة فحاولت العمل على نسخة 4.27 لكن مع الاسف هناك اختلافات بين هذا الاصدار والاصدار الخامس فمثلا انت تتابع دورة معينة حتى تجد نفسك عالق في نافذة معينة توجد بالشرح ولا توجد عندك انت في نسختك واكتشفت لاحقا ان انرل انجن فيه عيب كبير وهو ان كل نسخة جديدة تكون مختلفة عن الاخرى في بعض الاضافات ونوافذ جديدة وهذا يشكل مشكيل عند المبتدئين للتعلم البرنماج 

ثم الدروس باليوتيب فيها نوع من السطحية فلا يشرحون لك مثلا اذا قام باضافة نود جديد لماذا قام باضافته وكيف تتعامل معه بل فقط يقولك اتبع وافعل ما افعله ويغفلون شروحات مهمة لا يخبرونك بها بالدورات 

المشكلة الاخرى التي واجهتني بالبرنماج هي الملفات التي اقوم بحفظها بمجرد فتح واغلاق البرنماج تختفي كل الملفات ويختفي معها البلوبرينت الذي وضعته سابقا وهذا فعلا مثير للاعصاب هه المهم يمكن اضافات معلومات جديدة اذا توفرت عن انرل انجن ولان دعونا نبدا الرحلة في عالم سي شارب واليونيتي 

لغة سي شارب C#

اولا سنحتاج محرر اكواد للعمل عليه اثناء تنفيد اوامر الكود

لذلك قمت بتجربة اقوى برنماج لتحرير الاكواد وهو برنماج Visual studio community تقوم بتحميله ثم اثناء التثبيت سيطلب منك اختيار الاضافات التي تريد تحميلها وعلينا اختيار الاضافات التي تناسب لغة C# 

ASPNET و NET Desktop وNET Multi PLatform APP و Applications windows و Unity Games سيكون الحجم الكلي تقريبا 25GB جيكا 

ولكن اذا كنت تريد فقط سي شارب لليونيتي unity فان اضافة Develeppement Unity كافية للعمل على البرنماج ويعطيك حجم تحميل الاداة فقط 3 جيكا فقط وهذا جيد ثم يمكنك فيما بعد تحميل ادوات اخرى اذا كنت تريد العمل على تطبيقات و اشياء اخرى

للتاكد ان البرنماج يعمل مع اليونيتي تفتح يونيتي unity ثم تذهب الى قائمة Edit ثم Preferences ثم في External tools تاكد من اختيار Visual studio او اي محرر اكواد عندك بالحاسوب الذي تستخذمه

وهذا هو عيب البرنماج ان مساحات الملفات كبيرة لانه يحتوي على كل ما ستحتاجه مستقبلا يعني ولكن عيبه الثاني هو انه ثقيل على الجهاز وياخذ بعض الوقت ليفتح معك

ثم لدينا برنماج اخر لمحرر الاكواد وهو Visual studio code هو خفيف على الاجهزة ومناسب جدا 

ولكن فيه مشاكل كثيرة اثناء محاولة تنصيب سي شارب داخله او اي لغة اخرى وفيه مشاكل اثناء محاولة عمل compile للاكواد ومزعج جدا من هذه الناحية ويحتاج الى صيانة هذا العيب الكبير بكل صراحة

لذلك لدي حل نهائي لهذه البرامج التي تسبب وجع الراس وهو برنماج اخر صغير جدا وخفيف بحجم 35 ميغا فقط وهو برنماج Sharpdevelope انه البرنماج الذي استعمله مؤقتا فقط حتى اقوم بتنصيب visual studio community الاساسي 

Download here تحميل البرنماج هنا https://bit.ly/4aq65OY You will need also SDK ستحتاج لهذا البرنماج كذلك ضروري لكل برامج محرر الاكواد Download SDK Here https://dotnet.microsoft.com/en-us/download/dotnet/9.0


تقوم بتنصيب SDK اولا ثم تفتح البرنماج تضغط New solution ثم console application

وهكذا نكون مستعدين للبدء الان

اساسيات سي شارب C#

اي كود سنكتبه لبد من كتابته بين هذه الاقواس

 {
        public static void Main(string[] args)
        {
            Console.Title ="lhob";
            Console.WriteLine("Hello yass baby");
    
            
            // TODO: Implement Functionality Here
            
            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);

        }

consol writeline هو امر بقراءة الاكواد او استخرج لي العبارة التالية

console title هو امر بتغيير اسم النافذة التي يظهرها لنا الconsole

console readkey هو امر بتوقيف الشاشة كي لا تنغلق تلقائيا حتى نضغط على احد ازرار

الامر باللون الاخضر // لاضافة ملاحظات وعناوين داخل محرر الكود ولا يستطيع البرنماج قراءتها

الاكواد لبد ان تنتهي دائما ب علامة ; يطلق عليها statment

نضغط F5 للقيام بعملية compile او قراءة للكود

العلامات المطلوبة دائما اثناء كتابة الكود في حاسوب محمول مثلا

" " تجدها بالضغط رقم 3 بالاعلى الكيبورد

; تجدها بالضغط زر النقطة فوق Alt Gr

= تجدها عند الضغط زر يساوي بالاعلى

. النقطة تجدها بالضغط shift مع زر النقطة

) تجدها قرب زر يساوي

( تجدها في الرقم 5 بالاعلى

{ تجدها بالضغط Alt Gr مع 4 بالاعلى

} تجدها بالضغط Alt Gr وزر يساوي

[ تجدها بالضغط Alt Gr ورقم 5 بالاعلى

] تجدها بالضغط Alt Gr وزر قرب الصفر بالاعلى

> بالضغط على زر قرب واحد بالاعلى

< بالضغط shift مع نفس الزر قرب واحد

/ زر المتواجد فوق ctrl

\ بالضغط Alt Gr و 8

; فاصلة منقوطة انتباه هذه العلامة دائمة في نهاية كل سطر اكواد لكن في هذا الموضوع تظهر لي في بداية العملية اوك كي لا تختلط عليكم الامور


المتغاييرات Variables

المتغاييرات تستعمل لتخزين بيانات مؤقتة او دائمة في الذاكرة memory بغرض التعامل معها اثناء تنفيد البرنماج

مثلا لو اردنا انشاء برنماج يعطينا مجموع عددين سيكون علينا حجز في الذاكرة مكانين لمتغايرين رقميين

ثم نعطي كل متغايير منهما قيمة كي نتمكن من حساب المجموع

وطريقة الاعلان عن متغايير كما يلي

كتابة نوع المتغايير اولا لان فيه انواع متعددة والقيمة التي نريد تخزينها فيه

قيمة رقمية --- متغايير رقمي

قيمة حرفية --- متغايير حرفي

قيمة نصية --- متغايير نصي الى اخره

الرقمي اعداد صحيحة : int // العشري ذات دقة عالية : Double

النصي : String // العشري ذات ذقة عادية : Float

منطقي صح او خطاء : bool // التاريخ : DateTime

الحروف : Char // وانواع اخرى

شروط كتابة المتغايير

يجب ان يبدا بحرف ام علامة _

لا يحتوي على مسافة ولا يبدا برقم ولا يبدا برمز ولا يجب استعمال اسماء محجوزة مثل int لانها اسمها متغاييرات ولا اي اسم يستعمله البرنماج مثل static وغيره

الفرق بين float و Double

float يصل فقط الى سبع احرف بعد الفاصلة

يحجز فقط 4 بايت من الذاكرة نواة 32بايت ونطاق اضيق و سريع في العمليات الحسابية مناسب للارقام غير حاسمة مثل الالعاب او الرسومات ثلاثي الابعاد فهو يكفي ويوفر اداء افضل واستهلاك اقل للذاكرة

Double تصل اعداده العشرية الى 15 رقم بعد الفاصلة

يحجز 8 بايت من الذاكرة نواة 64بايت ونطاق اوسع بطيء بالعمليات الحسابية لكنه اكثر دقة ضروري فقط اثناء الحسابات الدقيقة جدا مثل الفزياء او الاموال

1. المتغيرات الأساسية (Primitive Types) أ. الأرقام الصحيحة int: لتخزين الأعداد الصحيحة. int score = 100; long: لتخزين أعداد صحيحة أكبر حجمًا. long highScore = 1000000L; ب. الأرقام العشرية float: للأرقام العشرية ذات الدقة العادية. float speed = 5.5f; double: للأرقام العشرية ذات الدقة الأعلى. double precision = 3.141592653589793; ج. القيم المنطقية bool: لتخزين قيم "true" أو "false". bool isGameOver = false; د. الأحرف والنصوص char: لتخزين حرف واحد. char grade = 'A'; string: لتخزين النصوص. string playerName = "Alice"; 2. المتغيرات المصفوفية (Array and List Types) Array: لتخزين قائمة ثابتة من العناصر. int[] scores = { 10, 20, 30 }; List<T>: لتخزين قائمة ديناميكية يمكن تعديل حجمها. List<string> inventory = new List<string>(); inventory.Add("Sword"); 3. المتغيرات المرجعية (Reference Types) GameObject: يشير إلى كائن في المشهد. GameObject player = GameObject.Find("Player"); Transform: يُستخدم لإدارة الموقع والدوران والقياس. Transform playerTransform = player.transform; Component: للإشارة إلى مكونات معينة مثل Rigidbody أو Collider. Rigidbody rb = GetComponent<Rigidbody>(); 4. أنواع Unity المخصصة أ. المتغيرات ثلاثية الأبعاد Vector2: يُستخدم لتمثيل الإحداثيات ثنائية الأبعاد. Vector2 position = new Vector2(5, 10); Vector3: للإحداثيات ثلاثية الأبعاد. Vector3 position = new Vector3(1, 2, 3); ب. Quaternions تُستخدم لتحديد الدوران. Quaternion rotation = Quaternion.Euler(0, 90, 0); ج. Color لتحديد الألوان. Color color = Color.red; 5. الأنواع المخصصة (Custom Types) يمكنك إنشاء أنواع مخصصة باستخدام struct أو class. public struct PlayerStats { public int health; public int mana; } 6. المتغيرات الزمنية Time.deltaTime: لحساب الفرق الزمني بين الإطارات، مما يجعل الحركة سلسة. transform.Translate(Vector3.forward * speed * Time.deltaTime); 7. المتغيرات الفيزيائية Rigidbody: للتحكم في الجسم الفيزيائي. Rigidbody rb = GetComponent<Rigidbody>(); rb.AddForce(Vector3.up * 10); 8. المتغيرات المتعلقة بالدخل (Input Variables) Input.GetAxis: للحصول على القيم من لوحة المفاتيح أو وحدة التحكم. float horizontal = Input.GetAxis("Horizontal"); 9. الأنواع الثابتة (Constant Types) const: متغير لا يمكن تغييره بعد التهيئة. const int MaxHealth = 100; readonly: متغير يُحدد عند التشغيل فقط. readonly string GameTitle = "My Unity Game"; 10. المتغيرات الثابتة عالميًا (Static Variables) تُستخدم لمشاركة القيم عبر جميع الكائنات من نفس النوع. public static int playerCount = 0; اختر نوع المتغير بناءً على احتياجات اللعبة لتحسين الأداء.

لكتابة ملاحظات داخل البرنماج في عدة اسطر نستعمل كود

/* ....... */

الثوابت مثل المتغاييرات لكنها تبقى ثابتة ولا تتغير اثناء تنفيد البرنماج

الاعلان عن الثوابت نستعمل كلمة const 

مثلا

const int myNumber=3;

const string name="karim";


الفرق بين اوامر الاخراج write و writeLine

write يطبع الكلمات في سطر واحد

writeline يطبع كل كلمة في سطر لوحدها


الان سنقوم بانشاء برنماج يطلب منا ادخال الاسم وحين نكتب الاسم سوف يظهر لنا رسالة ترحيبية

Console.Write("enter your name: ");

string name=Console.ReadLine();


Console.Write("Hello mr: "+name);


ملاحظة تاكد من الحجم الصحيح للحروف فمثلا لبد الحرف C كبير في كلمة Console والحرف الكبير ايضا في كلمة Write اوك حجم الحروف مهم جدا لان اي حرف كبير اذا كتبته صغير سيعطيك خطاء في قراءة الكود 

نستعمل + لدمج مع المتغايير 

طلبنا من البرنماج حفظ القيمة التي سيكتبها الشخص ثم يستدعي الرسالة الترحيبية بعد ادخال الاسم المخزن داخل name 


لو حاولنا القيام مثلا بطلب الشخص ادخال عمره باستعمال متغايير رقمي int هكذا

Console.Write("enter your age: ");

int age=Console.ReadLine();

فسوف يعطينا خطاء لان الدالة Console.ReadLine هي دالة نصية ولا يمكن وضعها داخل متغايير الرقمي 

اذا طريقة تحويل الدالة النصية الى دالة رقمية بطريقتين

الطريقة الاولى باستعمال Parse على الشكل التالي


Console.Write("enter your name: ");

string name=Console.ReadLine();


Console.Write("enter your age: ");


التحويل

int age=int.Parse(Console.ReadLine());

ثم نكتب

Console.Write("Hello Mr: "+ name +"your age is: "+age);


الطريقة الثانية

int age=Convert.ToInt32(Console.ReadLine());


ToInt32 تقوم باخذ قيمة مدخلة من نوع معين مثل string - float-double

وتحاول تحويلها الى عدد صحيح int


امثلة

تحويل نص رقمي الى عدد صحيح

لدينا

string numberText="123";

int number=

الحل

Convert.ToInt32(numberText);

Console.WriteLine(number);

الناتج 123


تحويل رقم عشري الى عدد صحيح تقريبي

لدينا

double decimalNumber=12.9;

int integer=

الحل

Convert.ToInt32(decimalNumber);

Console.WriteLine(integer);

الناتج 13


تحويل قيمة منطقية boolean

لدينا

bool isTrue=true;

int number =

Convert.ToInt32(isTrue);

Console.WriteLine(number);

الناتج 1 true

لدينا الروابط او القواعد

وهي مجموعة من الرموز المستعملة لانجاز مجموعة من العمليات

1 روابط رياضية

تستعمل من اجل القيام بعمليات حسابية وهي رموز معروفة

+ للجمع . - للطرح , / القسمة , * الضرب , % باقي القسمة

2 الروابط المنطقية

ترجع لنا النتيجة صح او خطا حسب العملية المنطقية سواء كانت عبارة او مجموعة عبارات

الرابط && : يعني And و : يعطي قيمة صحيحة اذا كانت كل الاطراف صحيحة

الرابط II : يعني Or او : يعطي قيمة صحيحة اذا كانت كل الاطراف صحيحة

الرابط Cond?Var1:Var2 : يتحقق من الشرط اذا لم يتحقق يمر الى الامر الذي يليه

3 الروابط المقارنة

تستعمل للمقارنة بين المتغايرات غالبا يستعمل معها متغايير bool

IS : للتحقق من نوع المتغايير

> : اصغر قطعا

< : اكبر قطعا

=> , =< : اصغرمن او يساوي , اكبر من او يساوي

=! : يخالف

== : يساوي

4 روابط اعطاء قيمة :

= : لاعطار قيمة لمتغايير

- - , ++ : تزيد او تنقص بمقدار واحد

=% , =* ; =/ ; =- ; =+ : لها نفس دور العمليات الحسابية العادية

مثال عمليات حسابية

Arithmetic Operators

int x , y,sum;

x=7;

y=9;

sum=x+y;

للطباعة الامر نكتب

;Console.Write("answer is:"+sum)

هذا الكود لوقف الشاشة طبعا اذا لم تكتبه سابقا نكتبه تحته ِ;()Console.readkey

يمكنك تغير عبارة answer is وتضع في مكانها اي عبارة اخرى

وسيعطينا النتيجة 16 التي هي عملية الجمع بين قيمة X و Y

مثال روابط المقارنة :
تعطينا فقط صح true او خطا false
لذلك سنعلن عن متغايير من نوع bool ونكتب التالي
bool test = 5>6 ;
;Console.Write(test)
سيعطينا النتيجة خطا false لان 5 ليس اكبر من 6

البنية الشرطية الجزء الاول IF اذا احيانا نحتاج لاجراء تحقق من شرط معين وطلب تنفيد كود معين دون باقي الاكواد وتنقسم الى ثلاث انواع سنشرحها في هذا الموضوع انشاء الله

كل انواع الجمل الشرطية

1. جملة if (الشرط الأساسي) 🔹 تستخدم عندما يكون هناك شرط واحد فقط نريد التحقق منه وتنفيذ كود بناءً عليه. 🔹 لا يجب استخدامها عندما يكون لديك العديد من الشروط المتفرعة التي يمكن إدارتها بطريقة أفضل، مثل switch. مثال :
int age = 20;
if (age >= 18)
{
    Console.WriteLine("أنت بالغ ويمكنك الدخول.");
}

🔹 متى لا يجب استخدامها؟
إذا كان لديك اختيارات متعددة، فمن الأفضل استخدام switch.

2. جملة if-else (الشرط مع بديل)
🔹 تُستخدم عندما يكون لديك خيارين (شرطان متعاكسان).
🔹 يجب تجنب استخدامها إذا كان هناك أكثر من خيارين، لأن switch قد يكون أوضح.

مثال:
int age = 16;
if (age >= 18)
{
    Console.WriteLine("يمكنك القيادة.");
}
else
{
    Console.WriteLine("لا يمكنك القيادة بعد.");
}

🔹 متى لا يجب استخدامها؟
عندما يكون لديك أكثر من خيارين متفرعين، عندها من الأفضل استخدام if-else if أو switch.

3. جملة if-else if-else (عدة شروط متتابعة)
🔹 تُستخدم عندما يكون هناك أكثر من احتمال للحالة، ولكن ليس عددًا كبيرًا جدًا.

مثال:
int score = 85;
if (score >= 90)
{
    Console.WriteLine("تقدير ممتاز!");
}
else if (score >= 75)
{
    Console.WriteLine("تقدير جيد.");
}
else
{
    Console.WriteLine("تحتاج إلى التحسين.");
}

🔹 متى لا يجب استخدامها؟
عندما يكون لديك الكثير من القيم المحتملة، عندها من الأفضل استخدام switch.

4. جملة switch (لاختيار أحد القيم المحددة)
🔹 تُستخدم عندما يكون هناك عدة خيارات محتملة ولكن جميعها تعتمد على قيمة واحدة.
🔹 لا يجب استخدامها عندما تعتمد الشروط على عمليات حسابية أو منطقية معقدة.
  مثال :
char grade = 'B';
switch (grade)
{
    case 'A':
        Console.WriteLine("ممتاز!");
        break;
    case 'B':
        Console.WriteLine("جيد جدًا.");
        break;
    case 'C':
        Console.WriteLine("جيد.");
        break;
    default:
        Console.WriteLine("لم تنجح.");
        break;
}

🔹 متى لا يجب استخدامها؟
عندما يكون القرار يعتمد على مقارنات رياضية (>, <, <=، إلخ)، لأنه لا يمكن تنفيذ ذلك في switch.

5. جملة الشرط الثلاثي (?: - Ternary Operator)
🔹 تُستخدم عندما يكون لديك شرط بسيط جدًا، وتريد كتابة الكود بشكل مختصر.

مثال:
int age = 20;
string result = (age >= 18) ? "بالغ" : "قاصر";
Console.WriteLine(result);

🔹 متى لا يجب استخدامها؟
عندما يكون هناك أكثر من شرطين، لأن الكود يصبح صعب القراءة.

أنواع الشروط التي يستخدمها Unity في تطوير الألعاب

في Unity، تُستخدم شروط C# نفسها ولكن غالبًا داخل تحديثات اللعبة (Update، FixedUpdate، إلخ). من الشروط الأكثر استخدامًا في Unity:

1. استخدام if للتحقق من مدخلات اللاعب
مثال :
void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))  // عند الضغط على زر المسافة
    {
        Debug.Log("تم الضغط على زر القفز!");
    }
}

2. استخدام if مع تصادم الكائنات
مثال :
void OnTriggerEnter(Collider other)
{
    if (other.gameObject.tag == "Enemy")  // عند لمس عدو
    {
        Debug.Log("لقد اصطدمت بالعدو!");
    }
}

3. استخدام switch لمعالجة حالات اللعبة
مثال :
enum GameState { Start, Playing, GameOver }
GameState currentState = GameState.Start;
void Update()
{
    switch (currentState)
    {
        case GameState.Start:
            Debug.Log("اللعبة في وضع البداية.");
            break;
        case GameState.Playing:
            Debug.Log("اللعبة قيد اللعب.");
            break;
        case GameState.GameOver:
            Debug.Log("انتهت اللعبة!");
            break;
    }
}

شرح بصيغة اخرى :
























 











سيتم اضافة معلومات جديدة في هذا الموضوع كلما توفر لدينا الوقت لذلك

فابقى على الاطلاع قدر الامكان ونتمنى للجميع الاستفادة والنفع وتكون صدقة جارية انشاء الله ادعي لنا من قلبك وبتوفيق انشاء الله

اشترك بالقناة لدعمنا

Yokagi

ProvigiL