توی این پست راجع به نوشتن یه برنامه صحبت میکنم که میتونه به جای من روی یه نقطه از صفحه کلیک کنه. اما چه نیازی باعث شده که من سراغ درست کردن چنین برنامهای برم و به چه دردهایی ممکنه بخوره؟
اگه درست یادم باشه سال ۹۰ بود که من سراغ برنامه نویسی GUI جاوا رفته بودم. توی همون زمان، موقع انتخاب واحد من نزدیک بودش و سیستم انتخاب دانشگاه ما اینطوری بود که اگر کد درس رو میزدی و روی دکمه گرفتن درس کلیک میکردی ۳ حالت اتفاق ممکن بود که برات بیفته:
حالت اول: درس برات انتخاب میشد و شاد و خوشحال میرفتی دنبال زندگیت.
حالت دوم: پیغام «سقف کلاس پر است.» برات نمایش داده میشد و کلاس رو نمیتونستی بگیری و اعصابت خورد میشد.
و وقتی حالت دوم برات انتخاب میفتاد و نمیخواستی بری دانشگاه و با مدیر گروه سر و کله بزنی فقط ۱ راه برات میموند:
این که اینقدر روی دکمه گرفتن درس کلیک کنی تا این که یا یه نفر همون موقع تصمیم بگیره درس رو حذف کنه یا این که مدیر گروه ظرفیت کلاس رو زیاد کنه تا شما بتونید درس رو بگیرین.
اتفاقا همون موقع هم من درس ریزپردازنده رو باید با یه استادی میگرفتم که متقاضی زیادی داشت و امکان داشت که به من نرسه. نشستم یه کم با خودم فکر کردم و گفتم خب احتمال این که این کلاس به من نرسه زیاد هستش و در نتیجه اگه خیلی برای گرفتنش مصمم باشم باید بشینم پشت سیستم و یه تعداد خیلی زیادی کلیک کنم. چی میشه اگه بتونم یه برنامهای بنویسم که بهجای خودم کلیک کنه؟
با یه کم سرچ کردن دیدم که زبان جاوا یه کلاسی داره به نام Robot که میتونه رفتارهای ماوس و کیبورد کامپیوتر رو به صورت خودکار برامون انجام بده. پس رفتم سراغ پیادهسازی یه برنامه که بتونه به هر تعداد و با هر سرعتی که من دوست دارم روی یک نقطه از صفحه هر نوع کلیکی(چپ، راست و وسط ) که لازم دارم رو برام انجام بده و در یک روز پیادهسازیش کردم.
زمان انتخاب واحدم که رسید کد درس ریزپردازنده رو وارد کردم و دکمه گرفتن درس رو زدم و با همون پیغام لعنتی «سقف کلاس پر است.» مواجه شدم. منم همون موقع برنامهای که نوشتم رو اجرا کردم و گذاشتم روی دکمه گرفتن درس کلیک کنه و رفتم گرفتم خوابیدم. چند ساعت بعد که بیدار شدم، رفتم و سیستمم رو چک کردم و دیدم برنامهای که نوشتم درسی که میخواستم رو برام گرفته و همچنان داره روی دکمه گرفتن درس کلیک میکنه و پیغام «درس مورد نظر قبلا انتخاب شده است» روی صفحه نمایش داده میشه.
چند سال بعد بازی Clash of Clans مد شد و منم مثل خیلیهای دیگه رفتم سراغش و یه مدت معتادش شدم.
یکی از قوانین بازی این بود که تا وقتی بازی باز بود، بهمون حملهای نمیشد.
از طرفی یه شبیهساز اندروید به اسم BlueStacks برای کامپیوتر وجود داشت و اونایی که مثل من دوست داشتن بازی رو روی کامپیوتر هم بازی کنن میتونستن ازش استفاده کنن. باز من رفتم سراغ همون برنامه و هر موقع که با کامپیوترم کار نمیکردم و حوصله بازی رو هم نداشتم، BlueStacks رو باز میکردم و میرفتم داخل بازی و میذاشتم که برنامه روی صفحه بازی هر چند وقت یکبار کلیک کنه. ایجوری هم توی بازی میوندم، هم خودم بازی نمیکردم و هم بهم حملهای نمیشد. (البته خود بازی بعد از ۶ ساعت پیغام میداد که شما خیلی توی بازی بودین، بهتره برین یه هوایی بخورین و برگردین.)
این اواخر یکی از دوستام سراغ همین برنامهای که نوشتم رو از من میگرفت. ازش پرسیدم: «تو که دیگه دانشجو نیستی، اهل بازی هم که نیستی، پس این برنامه به چه دردت میخوره؟» گفت: این روزا که اینستاگرام و فالور و این داستانا خیلی طرفدار داره یه سری برنامه اومده که میگه روی این دکمه کلیک کن تا یه نفر رو فالو کنی و در عوض یه نفر هم شما رو فالو میکنه.
با این برنامهای که تو نوشتی میتونم کلی فالور برای خودم جمع کنم.
برنامهای که توی اون زمان نوشتم خیلی کوچیک و ساده بود و چون اطلاعاتی که داشتم خیلی کمتر از اطلاعات الانم بود، خیلی ساده نوشتمش و خیلی از اصول برنامهنویسی و مهندسی نرمافزار رو داخلش رعایت نکردم. کاربردهایی که برای این برنامه اینجا نوشتم، خیلی ساده و پیش پا افتاده هستن ولی هیچوقت فکرش رو نمیکردم که ممکنه همین کاربردهای مسخره رو هم داشته باشه.
سورس کد این برنامه در سایت گیتلب در دسترس هست و اگه کسی فکر میکنه که ممکنه خود برنامه یا دونستن طرز کارش به دردش بخوره و یا میتونه بهترش کنه، آزاده که ازش استفاده کنه و اگر دوست داره تغییراش رو در اختیار بقیه هم بذاره.