<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های سارا قربانی</title>
        <link>https://virgool.io/feed/@saraghorbani991</link>
        <description>فارغ التحصیل هوش مصنوعی</description>
        <language>fa</language>
        <pubDate>2026-06-16 13:58:34</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/4304730/avatar/Ue4rKr.png?height=120&amp;width=120</url>
            <title>سارا قربانی</title>
            <link>https://virgool.io/@saraghorbani991</link>
        </image>

                    <item>
                <title>از شناخت شکاف تا ساختن همکاری: داستان Collaborative Gym</title>
                <link>https://virgool.io/@saraghorbani991/%D8%A7%D8%B2-%D8%B4%D9%86%D8%A7%D8%AE%D8%AA-%D8%B4%DA%A9%D8%A7%D9%81-%D8%AA%D8%A7-%D8%B3%D8%A7%D8%AE%D8%AA%D9%86-%D9%87%D9%85%DA%A9%D8%A7%D8%B1%DB%8C-%D8%AF%D8%A7%D8%B3%D8%AA%D8%A7%D9%86-collaborative-gym-sblv5l6snumc</link>
                <description>Collaborative Gymتوی پست قبلی عوامل شکاف همکاری بین انسان و عامل هوشمند رو بررسی کردیم، حالا وقتشه ببینیم پژوهشگرها چطور دارن این شکاف رو پر می‌کنن.مقاله‌ای که امروز سراغش اومدم، دقیقاً روی همین موضوع تمرکز داره. مشکل اصلی اینه که هیچ چارچوب استانداردی وجود نداشت تا بشه کیفیت همکاری انسان و هوش مصنوعی رو دقیق و علمی اندازه گرفت. بیشتر تحقیقات فقط عملکرد فنی عامل‌ها رو بررسی می‌کردن، ولی همکاری واقعی یعنی هماهنگی، اعتماد و درک دوطرفه .برای همین نویسندگان یه محیط جالب طراحی کردن به اسم Collaborative Gym؛ یه فضای شبیه‌سازی منعطف که توش آدم‌ها و عامل‌های هوشمند کنار هم کار می‌کنن، تصمیم می‌گیرن، اشتباه می‌کنن و از هم یاد می‌گیرن! این چارچوب به پژوهشگر اجازه می‌ده رفتار واقعی عامل‌ها رو در موقعیت‌های مختلف همکاری ببینه و با معیارهایی مثل هماهنگی، اعتماد و توانایی تطبیق، عملکردشون رو مقایسه کنه.در مطالعه‌ای که توی این پروژه انجام شده، افراد توی دو گروه بودن: یه گروه بدون عامل کار می‌کرد، گروه دیگه با عامل هوشمند. بعد از تموم شدن کار، داده‌ها از سه زاویه بررسی شدن:داده‌های عینی مثل زمان و دقت تصمیم‌گیریداده‌های ذهنی مثل رضایت و اعتماد به عاملداده‌های رفتاری مثل میزان تعامل و پذیرش پیشنهادهانتیجه؟ اونایی که با عامل کار کرده بودن، هماهنگی و تصمیم‌گیری بهتری داشتن، و حتی احساس کنترل بیشتری می‌کردن.این مقاله چند نقطه قوت جدی داره: چارچوب استاندارد، رویکرد چندبعدی، محیط واقع‌گرا و استفاده از داده‌های انسانی واقعی. ولی در کنارش چند ضعف هم داره—مثل مقیاس کوچک آزمایش یا محدود بودن سناریوها.در نهایت، نویسندگان پیشنهاد دادن این چارچوب در محیط‌های واقعی (مثلاً تیم‌های کاری یا آموزشی) هم آزمایش بشه، و عامل‌ها بتونن احساس و ارتباط اجتماعی انسان رو بهتر درک کنن.به‌طور خلاصه، Collaborative Gym یه قدم بزرگه برای ساخت هوش مصنوعی‌هایی که فقط باهوش نیستن، بلکه همکار واقعی انسان هستن:)Collaborative Gym زیر ذره‌بینبرای اینکه بهتر بفهمیم Collaborative Gym دقیقاً چطور عمل می‌کنه، تصور کن یه محیط مجازی هست که در اون انسان و عامل هوشمند سر یه میز مجازی می‌شینن و باید با هم تصمیم بگیرن — مثلاً مسیر بهینه برای رساندن امداد به چند نقطه در وضعیت بحرانی.در این محیط سه چیز خیلی مهمه: نقش‌ها، جریان همکاری، و شاخص‌های ارزیابی.ساختار محیطCollaborative Gym مثل یه پلتفرم شبیه‌سازی چندلایه طراحی شده:لایه وظیفه (Task Layer): در این بخش سناریوها تعریف می‌شن، مثلاً «حل مسئله مسیریابی»، «مدیریت منابع»، یا «انتخاب تیم برای یک مأموریت».لایه تعامل (Interaction Layer): جاییه که انسان و عامل واقعاً وارد گفت‌وگو و همکاری می‌شن؛ عامل پیشنهاد می‌ده، انسان ارزیابی می‌کنه، بازخورد می‌ده، و سیستم همه‌ی تبادل‌ها رو ثبت می‌کنه.لایه تحلیل داده (Analytics Layer): داده‌های حاصل از تعامل‌ها، رفتار و زمان و دقت تصمیم‌گیری، همه اینجا جمع‌آوری و به صورت آماری یا الگویی تجزیه می‌شن.این ساختار، یه محیط کاملاً قابل کنترل می‌سازه که می‌تونه سطح همکاری رو به‌صورت علمی اندازه‌گیری کنه.مثال واقعی از اجرای آزمایشفرض کن تو یکی از سناریوها، وظیفه‌ی تیم انتخاب مسیر امن برای رسیدن به مقصد در شرایط بحرانیه.عامل هوشمند پیشنهادهایی می‌ده براساس داده‌های نقشه، سرعت و ریسک. انسان باید تصمیم نهایی رو بگیره.Collaborative Gym در این لحظه چند چیز رو می‌سنجه:زمان تصمیم‌گیری: آیا حضور عامل باعث سریع‌تر شدن انتخاب شده؟دقت تصمیم: مسیر انتخابی چقدر نزدیک به گزینه‌ی بهینه است؟اعتماد: چند بار انسان پیشنهاد عامل رو قبول کرده؟کنترل ذهنی: آیا کاربر حس کرده انتخاب‌ها در دست خودش بوده یا نه؟در پایان، داده‌ها از هر تعامل استخراج می‌شن، مثلاً در قالب:Interaction #12 → Suggestion accepted | Decision time: 14s | Error margin: 4%
Interaction #13 → Suggestion rejected | Decision time: 22s | Error margin: 9%همین داده‌های ریز در نهایت با مدل آماری مثل ANOVA یا تحلیل الگویی (Pattern Analysis) بررسی می‌شن تا تفاوت واقعی بین همکاری انسان–عامل و تصمیم‌گیری فردی معلوم بشه.ارزیابی شاخص‌های همکاریCollaborative Gym سعی می‌کنه همکاری رو نه فقط با «درست بودن جواب»، بلکه با «چگونگی شکل‌گیری رابطه‌ی همکاری» اندازه بگیره.سه محور اصلی داره:هماهنگی (Coordination): میزان تطبیق رفتار عامل با انسان، مثل ریتم پاسخ یا شیوه‌ی پیشنهاد.اعتماد (Trust): اینکه کاربر چند بار از پیشنهادهای عامل استقبال کرده یا به آن تکیه کرده.تطبیق‌پذیری (Adaptability): توانایی عامل در تغییر سبک همکاری بر اساس رفتار انسان — مثلاً اگر کاربر محتاط‌تر تصمیم می‌گیرد، عامل هم پیشنهادهای امن‌تر می‌دهد.این معیارها باعث می‌شن ارزیابی به‌صورت چندبعدی انجام بشه؛ یعنی همکاری هم از نظر فنی و هم از نظر انسانی قابل سنجش باشه.این شاخص ها چطوری بدست میان؟وقتی یه انسان با عامل هوشمند داخل محیط Collaborative Gym تعامل می‌کنه، سیستم همه چیز رو ثبت می‌کنه:زمان‌هایی که انسان تصمیم می‌گیره یا پیشنهاد عامل رو می‌پذیره،تعداد کلیک‌ها، پیام‌ها، یا دستورهای رد و قبول،واکنش‌های انسان مثل اصلاح تصمیم، مکث، یا درخواست توضیح بیشتر،و بعد از پایان کار، پرسش‌نامه‌هایی درباره تجربه همکاری (مثل اعتماد یا رضایت).در واقع سیستم هم داده‌ی فنی داره (زمان و خطا) هم داده‌ی رفتاری و احساسی (رضایت و اعتماد).چطور شاخص‌ها از داده‌ها استخراج می‌شن؟1. شاخص‌های عینی (Objective)از داده‌های عددی و دقیق به‌دست میان:زمان تصمیم‌گیری: از زمان شروع تا نهایی شدن جواب؛ هر چه کمتر، همکاری مؤثرتر.دقت تصمیم: میزان انحراف از جواب بهینه (مثلاً چقدر مسیر انتخاب‌شده نزدیک‌ترین گزینه بود).تعداد خطاها: ثبت اشتباهات در تعامل یا انتخاب.با همین داده‌ها معمولاً تحلیل آماری انجام می‌شه (مثل آزمون ANOVA) تا تفاوت گروه‌ها مشخص شه.2. شاخص‌های ذهنی (Subjective)از پرسش‌نامه و گفت‌وگوهای بعد از آزمایش استخراج می‌شن.مثلاً کاربر باید روی مقیاس ۱ تا ۵ یا ۱ تا ۷ بگه:چقدر از عملکرد عامل راضی بوده؟چقدر به تصمیم‌های عامل اعتماد کرده؟چقدر خودش را کنترل‌کننده‌ی موقعیت حس کرده؟این پرسش‌ها معمولاً با ابزارهای استاندارد مثل SUS (System Usability Scale) یا NASA‑TLX (بار ذهنی وظیفه) تنظیم می‌شن.3. شاخص‌های رفتاری (Behavioral)اینا از تحلیل الگوی تعامل‌ها میان انسان و عامل بدست میان؛ یعنی سیستم بررسی می‌کنه:انسان چندبار پیشنهاد عامل رو پذیرفته یا رد کرده؟چند دفعه تصمیم خودش رو اصلاح کرده؟تعداد و نوع تعامل‌ها (کلیک، پیام، سؤال) چقدر بوده؟برای تحلیل این بخش از روش Interaction Pattern Analysis استفاده می‌شه؛ یعنی داده‌ها به صورت توالی رفتار (مثلاً Accept–Pause–Reject–Replan) بررسی می‌شن تا الگوی همکاری پیدا شه.و چطور همه رو کنار هم می‌ذارن؟در پایان هر آزمایش یه پروفایل همکاری ساخته می‌شه که معمولاً شامل نمودارهایی مثل اینه:(نوع شاخص: زمان تصمیم‌گیری - مقدار: 25٪ کمتر - تفسیر: همکاری سریع‌ترنوع شاخص: اعتماد (پرسش‌نامه) - مقدار: 4.2 از 5 - تفسیر: اعتماد بالانوع شاخص: پذیرش پیشنهاد عامل - مقدار: 68٪ - تفسیر: تطبیق رفتاری خوبنوع شاخص: دقت تصمیم - مقدار: 93٪ - تفسیر: عملکرد مؤثر)این جدول باعث می‌شه پژوهشگر بتونه بفهمه آیا عامل واقعاً توانسته با انسان هماهنگ عمل کنه یا فقط کار را سریع‌تر کرده.لایه تعامل در Collaborative Gymفرض کن توی یه محیط مجازی هستی که باید با یک عامل هوشمند تصمیم‌های مشترک بگیری — مثلاً مسیر ارسال کمک‌ها رو انتخاب کنی یا منابع تیم رو تقسیم کنی.اینجا Interaction Layer وارد صحنه می‌شه.هدفش چیه؟کار اصلی این لایه اینه که تعامل واقعی بین انسان و عامل رو شبیه‌سازی کنه؛ یعنی اون حس گفت‌وگو، مشورت و تصمیم‌گیری مشترک.مثل یه اتاق تیمی مجازی که در اون عامل نه‌فقط جواب می‌ده، بلکه رفتار، زمان واکنش و لحنش هم به‌صورت علمی ثبت و تحلیل می‌شه.ساختار و اجزای اصلیواسط ارتباط (Interface Unit):همون چیزی که کاربر باهاش حرف می‌زنه — مثل پنل گفت‌وگو یا داشبورد تصمیم‌گیری.این رابط اجازه می‌ده انسان پیشنهاد عامل رو ببینه، جواب بده، رد یا قبول کنه.ردیاب رفتار (Interaction Logger):همه چیز رو ذخیره می‌کنه:زمان هر پاسخ،حالت‌های کاربر (پذیرفتن، رد کردن، درخواست توضیح)،ترتیب تصمیم‌ها.خروجی این بخش بعدها برای تحلیل شاخص‌ها استفاده می‌شه (مثلاً درصد پذیرش یا مدت مکث بین پیشنهادها).مدیریت بازخورد (Feedback Controller):کاربر می‌تونه به عامل امتیاز بده یا توضیح بنویسه — مثلاً «پیشنهادت مفید بود» یا «ادم خیلی محتاط شدی».این بازخوردها به‌صورت زنده عامل رو تنظیم می‌کنن و به داده‌های اعتماد و تطبیق‌پذیری اضافه می‌شن.مدل تطبیق پویا (Dynamic Adaptation Engine):مهم‌ترین بخش!این ماژول رفتار عامل رو بر اساس پاسخ‌ها و حالت انسان تغییر می‌ده.مثلاً اگر کاربر محتاطه، عامل از این به بعد پیشنهادهای محافظه‌کارانه‌تری می‌ده.این یعنی تعامل دوطرفه و یادگیری از رفتار انسانی در جریان عمل.مثال تصویری سادهتصور کن هر تعامل مثل یه خط در لاگ سیستم ثبت می‌شه:[Interaction #24]
Agent Suggests: Route B (shortest path)
User Response: &quot;Too risky, try alternative&quot;
Agent Adapts: Suggests Route C (longer but safer)
Decision Time: 18s
Outcome: Acceptedاینجا سیستم خودش از همین تعامل، هماهنگی و اعتماد رو می‌سنجه:عامل چقدر سریع تطبیق داد؟ انسان چقدر بهش فرصت داد؟ آیا تصمیم مشترک در پایان گرفته شد؟چرا این چارچوب مهمه؟Collaborative Gym نه فقط یه ابزار آزمایشی، بلکه یه گام به سمت آینده‌ی هوش مصنوعیِ همکارمحوره است.با این چارچوب می‌شه عامل‌هایی ساخت که رفتار انسان رو درک می‌کنن، بهش اعتمادسازی می‌دن و تصمیم‌های مشترک رو بهینه‌تر می‌کنن.به زبان ساده، Collaborative Gym نشون می‌ده همکاری واقعی با هوش مصنوعی فقط وقتی معنا پیدا می‌کنه که دو طرف بتونن همدیگه رو بشناسن و با هم هماهنگ شن . درست مثل دو عضو از یه تیم انسانی.</description>
                <category>سارا قربانی</category>
                <author>سارا قربانی</author>
                <pubDate>Sun, 02 Nov 2025 03:59:37 +0330</pubDate>
            </item>
                    <item>
                <title>شکاف میان انسان و هوش مصنوعی — از دل داده تا دلِ معنا</title>
                <link>https://virgool.io/@saraghorbani991/%D8%B4%DA%A9%D8%A7%D9%81-%D9%85%DB%8C%D8%A7%D9%86-%D8%A7%D9%86%D8%B3%D8%A7%D9%86-%D9%88-%D9%87%D9%88%D8%B4-%D9%85%D8%B5%D9%86%D9%88%D8%B9%DB%8C-%E2%80%94-%D8%A7%D8%B2-%D8%AF%D9%84-%D8%AF%D8%A7%D8%AF%D9%87-%D8%AA%D8%A7-%D8%AF%D9%84%D9%90-%D9%85%D8%B9%D9%86%D8%A7-ep0ovppm4pxg</link>
                <description>هوش مصنوعی قرار بود همکار ما باشه، نه موجودی سرد و بی‌حس. اما هنوز یه فاصله عمیق وجود داره؛ هم فنی، هم فرهنگی، هم احساسی. این شکاف ، یعنی هر جا که ماشین نتونه منطق یا احساس انسان رو بفهمه، همکاری شکست می‌خوره.همکاری انسان و عامل هوشمند :)در ادامه دوازده عامل اصلی این فاصله رو مرور می‌کنیم:1- ندیدن نیت انسانیهوش مصنوعی هر چی رو می‌فهمه، از بیرون می‌فهمه. می‌تونه ببینه بیمار علائم جسمی نداره، اما نمی‌فهمه پشت اون آرامش ظاهری، اضطراب خوابیده. یعنی ماشین تصویر داره، ولی داستان نداره. توی طراحی روان‌شناختی بهش می‌گن نابینایی معنایی (Semantic Blindness).مثلاً یه نفر ساعت سه صبح دنبال خونه می‌گرده — برای الگوریتم یه رفتار غیرعادیه، ولی برای انسان شاید یعنی دل‌نگرانی برای خانواده. اگر این لایه دیده نشه، تصمیم‌ها بی‌روح می‌شن.2- اعتماد گم‌شده و نقش‌های مبهمهمکاری واقعی یعنی هرکس بدونه مسئولیتش چیه. ولی تو دنیای هوش مصنوعی، مرز بین انسان و عامل گاهی گم می‌شه. مثل راننده‌های خودروهای نیمه‌خودران که نمی‌دونن کی باید کنترل ماشین رو بدست بگیرن.همین سردرگمی(confusion of agency) باعث تصادف‌های واقعی می‌شه. چون نمی‌دونیم تصمیم با کیه، اعتماد هم از بین می‌ره. راه حل؟ شفافیت در نقش‌ها و توضیح تصمیم‌ها با زبان خودِ کاربر.3- خستگی ذهنی در گفت‌و‌گو با ماشینوقتی برای فهموندن حرفت باید زبان خودت رو بزاری کنار و زبان برنامه‌نویس حرف بزنی، ذهنت خسته می‌شه. تعامل باید عادی باشه، مثل حرف زدن با یک دوست.ماشین باید زبان ما رو یاد بگیره، نه ما زبان اون رو. هرچقدر گفت‌و‌گو طبیعی‌تر باشه، همکاری هم پایدارتر می‌مونه.مثلا در محیط‌های کاری مثل CRM یا سامانه‌های بیمه، کاربر برای گفت‌و‌گو با سیستم باید بین زبان خودش و زبان ماشین مدام جابه‌جا بشه؛ انگار دو ذهن در یک بدن قرار داره(واقعا خسته کننده اس).4- سوگیری؛ دشمن عدالتاگر داده‌ها یک‌طرفه جمع بشن، تصمیم‌ها هم یک‌طرفه می‌شن. از قیمت‌گذاری خانه تا استخدام، هر جا داده‌ها متنوع نباشن، عدالت از دست می‌ره.سوگیری‌ها خیلی بی‌صدا پیش می‌رن، اما اعتماد رو می‌کُشن. تنها کار مفید اینه که داده‌ها چندمنظری باشن و انسان در حلقه‌ی آموزش بمونه.مثلا در استخدام، الگوریتم ممکنه به‌صورت ناخودآگاه رزومه‌های مردان رو بیشتر انتخاب کنه چون داده‌های گذشته همین سوگیری را داشتن.5- ضعف همدلی؛ پاسخِ درست اما بی‌احساسهوش مصنوعی همیشه جواب منطقی داره، ولی نه انسانی. مثل وقتی که بگه: «درخواست شما ثبت شد» به جای اینکه بگه: «می‌فهمم چقدر آزاردهنده است، بیا با هم حلش کنیم.»این فاصله‌ی احساسی رو affective gap می‌نامن — تفاوت بین فهم و درک. کوچک ولی حیاتی.6- عقب‌ماندگی فرهنگی در یادگیریفرهنگ و زبان زنده‌اند ولی مدل‌های هوش مصنوعی ثابت. اگه سیستمی در سال ۲۰۱۹ آموزش دیده باشه، امروز خشک و پیر به نظر می‌رسه. هوش مصنوعی باید زنده بمونه، یاد بگیره، با نسل‌ها تغییر کنه؛ وگرنه فقط ابزار می‌شه، نه همکار.مثلا رباتی که هنوز از واژه‌های رسمی و منسوخ استفاده می‌کنه (“استدعا دارم”) نمیتونه با نسل جدید ارتباط برقرار کنه، چون زبان و شوخی‌ها تغییر کردن.7- نبودِ مسئولیت اخلاقیدر جهان انسانی، خطا مسئول داره؛ در جهان هوش مصنوعی معمولاً هیچ‌کس پاسخگو نیست. همین بی‌مسئولیتی ساختاری، اعتماد رو نابود می‌کنه. شفافیت تصمیم و توضیح خطا، قلب اخلاق هوشمنده.کاربر باید بداند چه کسی تصمیم گرفته، چه داده‌ای مبنا بوده، و اگر خطا رخ داد، چرا.مثلا اگر سیستم تشخیص پزشکی دارویی اشتباه تجویز کنه و بگه «خطای مدل»، بدون توضیح، حس امنیت از بین میره. ولی اگر بنویسه «مدل بر پایه داده ناقص تصمیم گرفته»، حس شفافیت و کنترل برمی‌گرده.8- ندیدن زبان و فرهنگ محلیهوش مصنوعی جهانی طراحی میشه اما مردم محلی حرف می‌زنن.در فارسی، احترام و طنازی و لحن همه‌چیز‌ اند. یک جمله خشک مثل «پیشنهاد شما رد شد» ممکنه توهین‌آمیز باشه، اما اگر بگه «دیدم پیشنهادت رو، حیف شد فعلاً شرایطش جور نبود» حس ارتباط انسانی می‌ده.مثال:دستیار فارسی اگر کنایه‌ها، شوخی‌ها و لحن جوان‌ها را بفهمه، دیگه بیگانه نیست—بخشی از فرهنگ میشه.9- وابستگی شناختی و بحران اعتمادما داریم کم‌کم به ماشین‌ها تکیه می‌کنیم تا حدی که حتی درک خودمون رو با خروجی اون‌ها مقایسه می‌کنیم. این خودش بحران فکریه. هوش مصنوعی باید مشاور بمونه، نه تصمیم‌گیرنده. تا آدم هنوز حس کنه رای خودش مهم‌تره.مثال: کاربری که سال‌ها به پیشنهاد هوش مصنوعی برای فیلم دیدن عادت کرده، وقتی خودش بخواد فیلمی انتخاب کنه، دچار تردید میشه: «نکنه اشتباه انتخاب کنم؟»10- فاصله‌ی میان طراح و کاربربعضی وقت‌ها طراحان در دنیای خودشون زندگی می‌کنن؛ مدل‌های آماری و پارامترها. ولی انسان بیرون از آزمایشگاه دنبال حس و اطمینانه.طراحی درست یعنی شناخت تجربه‌ی واقعی کاربر.11- نبود شهود انسانیگاهی ما فقط با چشم و حس تصمیم درست می‌گیریم، نه با داده. ماشین چون شهود نداره، در مبهم‌ترین موقعیت‌ها گیج می‌مونه. راهش اینه که تجربه‌ی انسانی رو به مدل برگردونیم تا سیستم بفهمه چرا تصمیم گرفته شده، نه فقط چگونه.مثال: تحلیلگر انسانی از نگاه خریدار حس می‌کنه معامله انجام نمیشه، حتی اگه مدل آماری درصد موفقیت بالا بده. تصمیم انسانی در این موقعیت دقیق‌تره چون بر شهود تکیه داره.12- نداشتن هدف درونیهوش مصنوعی فقط کارآمدی را دنبال می‌کنه، نه معنا. انسان اما به خاطر حس و هدف زنده است.تا وقتی ماشین نتونه معنا را بفهمه، همکاری همیشه مکانیکی میمونه.مثال: پزشک شب تا صبح بالای سر بیمار میمونه، نه چون &quot;داده&quot; میگه لازمه بمونی، بلکه چون درونش انگیزه‌ای انسانی وجود داره . انگیزه ای به نام «اهمیت دادن».وقتی هوش مصنوعی یاد بگیره حس بگیره، نه فقط تحلیل کنه، همکاری تبدیل میشه به هم‌زیستی. مثل صحنه‌ی تونی استارک و جارویس—جایی که انسان و ماشین به جای فرمان دادن، همدیگر رو می‌فهمند. :)توی پست بعدی راه حلی که پژوهشگران برای برطرف کردن این شکاف پیدا کردند رو بهتون میگم.</description>
                <category>سارا قربانی</category>
                <author>سارا قربانی</author>
                <pubDate>Sun, 02 Nov 2025 03:15:17 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش pygame کودکان ( پای گیم )</title>
                <link>https://virgool.io/@saraghorbani991/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-pygame-%DA%A9%D9%88%D8%AF%DA%A9%D8%A7%D9%86-buripxxeynsa</link>
                <description>کاوراین اثر، یک تجربه‌ی آموزشی نوآورانه برای آشنایی کودکان و نوجوانان با مفاهیم پایه‌ی برنامه‌نویسی و منطق بازی‌سازی است.در این پروژه، یادگیری کدنویسی از طریق کتابخانه‌ی Pygame در قالب یک داستان همراه–آموزی انجام می‌شود؛ جایی که «رابو»، یک ربات خیالی مهربان، به‌عنوان همراه آموزشی در تمام مراحل ساخت بازی کنار فراگیر قرار می‌گیرد.هدف اصلی این اثر، کاهش استرس ناشی از خطاهای برنامه‌نویسی در کودکان و تبدیل فرایند یادگیری به تجربه‌ای لذت‌بخش، ایمن و خلاقانه است. با طراحی بخش‌های گام‌به‌گام شامل نصب، ساخت پنجره، تغییر رنگ، رسم اشکال و کنترل حرکت قهرمان، مسیر یادگیری کاملاً تدریجی و قابل درک برای مخاطب تازه‌کار شکل گرفته است.در این متن، آموزش فنی زبان پایتون با روایت احساسی و تربیتی ترکیب شده تا تأثیر روانی مثبتی بر اعتمادبه‌نفس کودک بگذارد.سبک نگارشی اثر، صمیمی و محاوره‌ای است؛ به‌گونه‌ای که خواننده حس هم‌صحبتی با مربی دارد، نه مطالعه‌ی درس خشک. همین ویژگی باعث می‌شود محتوا علاوه بر جنبه‌ی فنی، ارزش فرهنگی و تربیتی نیز پیدا کند.این اثر نمونه‌ای از رویکرد «یادگیری مبتنی بر بازی و همراهی عاطفی» است که می‌تواند الگویی برای آموزش فناوری در بستر بومی فارسی‌زبانان باشد و در سطح بین‌المللی به‌عنوان مدل طراحی آموزشی محلی (Localized EdTech Design) معرفی شود.خوش اومدی به دنیای بازی سازی!سلام دوست خوبم!خوش اومدی به دنیای هیجان انگیز بازی سازی! اگه بهت بگم ساختن بازی کامپیوتری اونقدر آسونه که می‌تونی همین امروز امتحانش کنی، باورت میشه؟ قراره با هم، قدم‌به‌قدم وارد دنیایی بشیم که حتی بزرگ‌ترها هم حسرت تجربه ا‌ش رو دارن! ولی اصلاً نترس، قراره درست مثل اینکه با یه دوست باحال وارد آزمایشگاه جادویی شدیم، باهم همه مراحل رو جلو بریم و از نزدیک ببینیم چجوری همه چیز کار می‌کنه. در این مسیر، دوست جدید ما، &quot;رابو&quot;، هم قراره کلی تجربه کسب کنه و باگ‌هایی که ممکنه تو هم ببینی رو برامون بگه و راه حل‌هاش رو یادمون بده.رابو:&quot;سلام دوست خوبم!بزن بریم سراغ دنیای بازی ها!&quot;مرحله اول: نصب Pygameاول از همه ، قفل در آزمایشگاه رو باید باز کنیم:باز کردن قفل یعنی نصب کردن یک وسیله باحال به اسم Pygame که راز اصلی بازی‌سازی با پایتون همینه!اصن pygame چی هست؟pygame در واقع یک کتابخانه (Library) برای زبان برنامه‌نویسی پایتونه. پایتون همونطور که میدونی یک زبان ساده برای صحبت کردن با کامپیوتره (اگه پایتونو نمیشناسی،اول باید بری سراغ اون) ، و حالاpygame چی هست؟pygame  ابزارهایی به ما می‌ده که بتونیم گرافیک، صدا و ورودی‌های کاربر (مثل کیبورد و ماوس) را کنترل کنیم تا یک بازی بسازیم.نحوه نصب pygame:خب، فقط باید کد زیر رو توی ترمینالت (Command Prompt) در ویندوز یا Terminal در (مک/لینوکس) بزنی:pip install pygameواقعاً فقط همین! تا بزنی حس می‌کنی یه دروازه جادویی باز شده و وارد یه دنیای جدید شدی. pip  ابزاری هست که به ما اجازه می‌ده بسته‌های نرم‌افزاری مورد نیاز را از اینترنت دانلود و روی سیستم نصب کنیم.رابو:&quot;اوههه، همین الان داشتم نصب می‌کردم، این ارور رو دیدم:ModuleNotFoundError: No module named &#039;pygame&#039;این یعنی پایتون نمی‌تونه Pygame رو پیدا کنه. این مشکل توی ۹۰ درصد مواقع به خاطر محل نصب یا ورژن پایتون پیش میاد.یکم سرچ کردم، دیدم چند تا قلق داره:۱. مطمئن شو پایتون رو نصب داری! اگه پایتون نصب نباشه، pip  هم کار نمی‌کنه. ۲. مسیر نصب: مطمئن شو که از ترمینال اصلی که برای پایتون تنظیم شده استفاده می‌کنی. ۳. اگه داری از ویندوز استفاده می‌کنی، به جای pip این روش رو امتحان کن: گاهی اوقات در ویندوز، چندین ورژن پایتون نصب است و pip به طور پیش‌فرض به آخرین ورژن اشاره نمی‌کند.py -m pip install pygameبعدش کد زیر رو بنویس و اجرا کن، دیگه اون ارور رو نمی‌بینی:import pygame
#برای تست نصب print(pygame.ver)خلاصه: اول نصب کن، تو همون مسیری باش که فایلته (یا از دستور بالا استفاده کن)، بعد اجراش کن!&quot;مرحله دوم: ساخت اولین پنجره بازیحالا وقتشه اولین پنجره جادویی بازی رو بسازی! حسش مثل باز کردن کادو تولده!این کد رو تو فایل پایتونت بنویس (مثلاً اسم فایلت اینه: game.py ):import pygame
pygame.init()     #برای شروع کردن تمام ماژول‌های Pygame
# تعریف ابعاد پنجره
WINDOW_WIDTH = 500
WINDOW_HEIGHT = 400
window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
pygame.display.set_caption(&#039;بازی من! 🎮&#039;)
# حلقه اصلی بازی (که فعلاً خالیه)
while True:
# مدیریت رویدادها (مثل کلیک کردن روی دکمه بستن)
   for event in pygame.event.get():
      if event.type == pygame.QUIT:
          pygame.quit()
  exit() #برای خروج از برنامه
 # این قسمت برای به‌روزرسانی صفحه است که هنوز چیزی نداریم
pygame.quit()تا اجرا کنی، باید یه پنجره کوچیک بیاد جلوت! حسش مثل پنجره‌ایه که داره فریاد می‌زنه &quot;سلام!&quot;رابو:&quot;وای الان اجرا کردم، دیدم پنجره فقط یه لحظه نشون داده شد و بعد بسته شد! تقریباً توی همه سیستم‌ها اینجوریه، چون حلقه event نداره و برنامه سریع به آخر کد می‌رسه و تموم می‌شه.بعد فهمیدم باید براش یه حلقه بذارم تا نفهمه و باز بمونه. این حلقه اصلی بازی (Game Loop) نام داره. اگر این حلقه نباشه، بازی اجرا می‌شه و بلافاصله تموم می‌شه.این کد اصلاح‌شده رو بنویس، دیگه بسته نمی‌شه تا خودت پنجره رو ببندی:import pygame                                                                    
pygame.init()
window = pygame.display.set_mode((500, 400))                                                          
pygame.display.set_caption(&#039;بازی من! 🎮&#039;)
run = True    # متغیری برای کنترل حلقه اصلی
while run:
    for event in pygame.event.get():
       if event.type == pygame.QUIT:
             run = False   # اگر دکمه بستن زده شد، حلقه رو متوقف کن
  pygame.quit()    # خارج شدن از Pygame یعنی اون تیکه run = True و شرط if event.type == pygame.QUIT رو اضافه کنی، همه چی میاد سر جای خودش و پنجره ثابت می‌مونه.&quot;مرحله سوم: تغییر ظاهر و نمایش مستطیلآماده‌ای وارد بازی‌سازی واقعی شی؟این‌جوری می‌تونی رنگ و شکل پنجره رو تغییر بدی یا حتی یه مستطیل بسازی که مثل قهرمانت حرکت کنه!مفاهیم جدید:رنگ‌ها: در Pygame، رنگ‌ها با استفاده از سیستم RGB تعریف می‌شوند. سه عدد بین ۰ تا ۲۵۵ برای قرمزی (R)، سبزی (G) و آبی (B) به ترتیب. مثلاً (۲۵۵, ۰, ۰) قرمز خالص است. ()window.fill: کل سطح پنجره را با یک رنگ پر می‌کند.()pygame.draw.rect : یک مستطیل را روی سطح پنجره (Window Surface) می‌کشد. پارامترهای آن شامل سطح مورد نظر، رنگ، و مختصات و اندازه مستطیل است:  (x, y, width, height) این کد رو اضافه کن بعد از حلقه بالا: (ما کد حلقه اصلی را از مرحله قبل می‌آوریم و فقط قسمت‌های جدید را اضافه می‌کنیم)کد کامل شده با رنگ و مستطیل:import pygame
pygame.init()
window = pygame.display.set_mode((500, 400))
pygame.display.set_caption(&#039;بازی من 🎮&#039;)
run = True
while run:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
    # --- قسمت های جدید اضافه شده ---
    window.fill((128, 0, 128))          # رنگ بنفش (R=128, G=0, B=128)
    # مستطیل: در مختصات (200, 150) ، با عرض 100 و ارتفاع 80
    pygame.draw.rect(window, (255, 255, 255), (200, 150, 100, 80))
    pygame.display.update() # نمایش تغییرات روی صفحه
pygame.quit() رنگ من بنفش شد! خیلی باحاله نه؟ هر عدد رو تغییر بدی، یه چیز متفاوت می‌بینی.رابو:&quot;اه، اومدم مستطیل بکشم اینجوری:window.fill((128, 0, 128))pygame.draw.rect(window, (255, 255, 255), (200, 150, 100, 80) )ولی هیچی رو تو پنجره ندیدم! پنجره سفید یا سیاه بود (بسته به تنظیمات پیش‌فرض سیستم).وقتی بررسی کردم ،فهمیدم  راه حلش اینه که بعد از اینکه دستور کشیدن (Drawing) رو به Pygame دادیم، حتماً باید بهش بگیم که &#039;باشه، حالا همه این دستورات رو روی صفحه نمایش بده.&#039; برای این کار از دستور زیر استفاده می‌کنیم: pygame.display.update() کد درست اینه که ()pygame.display.update حتماً باید بعد از تمام دستورات fill و draw بیاید: window.fill((128, 0, 128))pygame.draw.rect(window, (255, 255, 255), (200, 150, 100, 80))pygame.display.update()  بدون اون کد آخر، هیچ چیزی نمایش داده نمی‌شه چون دستورات در حافظه موقت باقی می‌مونه و روی صفحه نمیاد!&quot;مرحله چهارم: مستطیل رو حرکت بده و مرز بذارحالا وقتشه که مستطیل رو تکون بدی! یه چیزی مثل فرمان ماشین بازی رو توی دستت بگیر.برای حرکت دادن، ما باید موقعیت x و y مستطیل را در هر فریم بازی تغییر بدیم. همچنین باید مطمئن بشیم که مستطیل از لبه‌های پنجره بیرون نمیره. این اسکریپت رو جای کل حلقه قبلی بذار:import pygame
pygame.init()
window = pygame.display.set_mode((500, 400))
pygame.display.set_caption(&#039;بازی من 🎮&#039;)
# متغیرهای اصلی
x, y = 200, 150   # موقعیت اولیه گوشه بالا چپ مستطیل
speed = 3       # سرعت حرکت
width, height = 100, 80 # ابعاد مستطیل
win_width, win_height = 500, 400       # ابعاد پنجره
run = True
while run:
# ۱. مدیریت رویدادها (بستن پنجره)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False          
 # ۲. مدیریت ورودی کیبورد
    keys = pygame.key.get_pressed() # وضعیت تمام کلیدها را می‌گیرد   
# حرکت به چپ: اگر کلید چپ فشرده شود و موقعیت x از ۰ بیشتر باشد
    if keys[pygame.K_LEFT] and x &gt; 0:
        x -= speed 
      # حرکت به راست اگر کلید راست فشرده شود و x به لبه نرسیده باشد
    if keys[pygame.K_RIGHT] and x &lt; win_width - width:
        x += speed
#حرکت به بالا: اگر کلید بالا فشرده شود و موقعیت y از ۰ بیشتر باشد
    if keys[pygame.K_UP] and y &gt; 0:
        y -= speed
        
# حرکت به پایین: اگر کلید پایین فشرده شود و y به پایین ترین حد نرسیده باشد
    if keys[pygame.K_DOWN] and y &lt; win_height - height:
        y += speed
        
# ۳. رندر کردن (نقاشی مجدد)
    window.fill((128, 0, 128)) # پر کردن صفحه با رنگ بنفش
    pygame.draw.rect(window, (255, 255, 255), (x, y, width, height)) # کشیدن مستطیل در موقعیت جدید
    
# ۴. نمایش نهایی
    pygame.display.update()

pygame.quit()نکته مهم در مورد لبه‌ها:برای جلوگیری از خروج، باید چک کنیم که لبه‌ی مستطیل از مرز نگذره. اگر مستطیل در جهت راست حرکت کنه، حداکثر مختصات x آن باید برابر با WINDOW_WIDTH - width باشد  یعنی width رو از WINDOW_WIDTH کم کنیم . چون اگه بزرگتر بشه، از پنجره بیرون میره.رابو:&quot;اه، وقتی چندبار کلید رو نگه داشتم، مستطیل از قاب بازی رفت بیرون و دیگه ندیدمش! چون یادم رفت شرط بذارم که اگر x و y خواستن از محدوده خارج بشن، نخورن به اون مقدار.مثلاً وقتی کلید راست رو نگه داشتم، چون شرط x &lt; win_width - width رو نذاشتم، مقدار x هی بزرگتر شد و مستطیل غیب شد!راه حلش: بذار شرط بذاریم که اگر x و y خواستن از محدوده خارج بشن، نخورن به اون مقدار. کد بالا کاملاً مرز رو رعایت می‌کنه و دیگه هر چقدر کلید رو بزنی، مستطیل هیچ وقت از پنجره بیرون نمی‌ره!&quot;مرحله پنجم: امتیاز بساز و نشون بدهحالا وقت امتیاز دادنه.میخوایم سیستم امتیازدهی به بازیمون اضافه کنیم!برای نمایش متن، ما به دو چیز نیاز داریم:۱. فونت: باید از کدام قلم برای نوشتن استفاده کنیم. ۲. رندر کردن (Render): تبدیل متن به تصویری که بتوانیم آن را روی صفحه بکشیم.۳ .Blitting : این کلمه به معنی کپی کردن یک تصویر (در اینجا میشه همون متن رندر شده) روی سطح دیگه (اینجا میشه همون پنجره بازی).ما باید قبل از شروع حلقه بازی، فونت رو مقداردهی اولیه کنیم و در هر فریم، امتیاز را محاسبه و نمایش بدیم.کد کامل شده با نمایش امتیاز:import pygame
pygame.init()
window = pygame.display.set_mode((500, 400))
pygame.display.set_caption(&#039;بازی من! 🎮&#039;)

# ۱. مقداردهی اولیه فونت (باید قبل از حلقه باشد)
font = pygame.font.SysFont(None, 36) # فونت سیستمی، اندازه ۳۶

# متغیرهای اصلی
score = 0 # امتیاز شروع
x, y = 200, 150
width, height = 100, 80
speed = 3
win_width, win_height = 500, 400

run = True
while run:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    keys = pygame.key.get_pressed()
    
    # حرکت و افزایش امتیاز در صورت فشردن کلید
    if keys[pygame.K_LEFT] and x &gt; 0:
        x -= speed
        score += 1
    if keys[pygame.K_RIGHT] and x &lt; win_width - width:
        x += speed
        score += 1
        y -= speed
        score += 1
    if keys[pygame.K_DOWN] and y &lt; win_height - height:
        y += speed
        score += 1

    # --- قسمت رندر و امتیاز ---
    window.fill((128, 0, 128))
    pygame.draw.rect(window, (255, 255, 255), (x, y, width, height))

    # رندر کردن متن امتیاز
    # f&#039;امتیاز: {score}&#039; متن ماست. True یعنی متن ضد پیکسل (Anti-aliased) باشد. (255, 255, 0) زرد است.
    score_text = font.render(f&#039;امتیاز: {score}&#039;, True, (255, 255, 0))
    
    # نمایش متن در مختصات (20, 20) روی صفحه
    window.blit(score_text, (20, 20)) 

    pygame.display.update()
pygame.quit()رابو :&quot;اه، اومدم امتیاز رو نشون بدم! کد رو زدم و ارور داد:pygame.error: font not initializedمن یه لحظه فکر کردم Pygame کلاً خراب شده! ولی فهمیدم که برای استفاده از هر بخشی از Pygame، باید اول با pygame.init() اون بخش رو فعال کنیم. همچنین، برای فونت‌ها، باید قبل از حلقه، فونت رو لود کنیم.پس دو تا نکته کلیدی پیدا کردم:۱. باید قبل از حلقه، font = pygame.font.SysFont(None, 36) رو بنویسیم. ۲. چون pygame.init() در ابتدای برنامه نوشته شده، مشکل فعال‌سازی حل شده .(البته باید مطمئن شویم که pygame.init() قبل از تعریف font اجرا شده باشد، که در کد بالا این اتفاق افتاده است.)و نکته دوم: کدهای رندر متن (مثل font.render و window.blit ) باید داخل حلقه اصلی بازی باشند تا هر بار که مستطیل حرکت می‌کند، عدد امتیاز هم به‌روزرسانی و روی صفحه کشیده شود وگرنه امتیاز ثابت می‌ماند! کد بالا هم امتیاز نشون داده میشه، هم مستطیل بیرون نمی‌ره!&quot;جمع‌بندی آخر با یه رفیق مثل رابودیدی چقدر همه چی ساده و قلق‌دار بود؟ ما از نصب Pygame شروع کردیم، یه پنجره ساختیم که بسته نشه، یه شیء رو روی صفحه کشیدیم، اون رو کنترل کردیم تا به مرزها نخوره، و در نهایت یه سیستم امتیازدهی ساده اضافه کردیم.هر جایی خطا دیدی، بدون که همون لحظه با یه سرچ کوچیک و کمی دقت ، راهش پیدا می‌شه. رابو همیشه کنارت هست و هر مشکلی که همین الان خوردی، مطمئن باش اونم همین لحظه بهش خورده و راهش رو پیدا کرده! این یادگیری از طریق خطا، سریع‌ترین راه برای حرفه‌ای شدن در کدنویسیه.رابو:&quot;همونطور که دیدی من هیچوقت با دیدن خطا جا نزدم.تو هم هیچوقت از دیدن خطا نترس.سرسخت و با انگیزه باش و نشون بده قدرتت از چندتا خطا خیلی بیشتره.اینطوری میتونی یه برنامه نویس موفق باشی و توی زندگی شخصی هم عالی پیش بری!&quot;دنیای بازی‌سازی منتظره تا تو اولین کدتو اجرا کنی! فقط امتحانش کن، می‌فهمی چقدر همه چی ساده و باحال هست!امیدوارم از تجربه امروز لذت برده باشی.خدانگهداررابو</description>
                <category>سارا قربانی</category>
                <author>سارا قربانی</author>
                <pubDate>Sat, 18 Oct 2025 16:23:39 +0330</pubDate>
            </item>
            </channel>
</rss>