ساخت قهرمان
### داستان نوزدهم: ساخت قهرمان
آراد پس از یادگیری ماژولها و کتابخانهها، میخواست وارد دنیای برنامهنویسی شیءگرا شود. یک روز به سینا گفت: «سینا، میخوام شخصیتهای مجازی خلق کنم؛ مثلاً یه قهرمان توی بازی! چطوری میتونم این کار رو با کدنویسی انجام بدم؟»
سینا لبخندی زد و گفت: «آراد، وقتش رسیده که با مفاهیم کلاسها و شیءگرایی آشنا بشی. این مفاهیم بهت اجازه میده تا با ساخت اشیاء و تعریف ویژگیها و رفتارهای مختلف برای اونها، دنیای مجازی خودت رو بسازی. مثلاً میتونیم یک “قهرمان” با ویژگیهایی مثل نام، قدرت، سطح سلامتی، و رفتارهایی مثل حمله و دفاع بسازیم.»
#### ساخت کلاس قهرمان
سینا برای آراد توضیح داد: «ما از کلاس برای تعریف ویژگیهای قهرمان استفاده میکنیم و با ایجاد شیء از روی این کلاس، میتونیم قهرمانهای مختلف با ویژگیهای متفاوت بسازیم.»
او کد زیر را نوشت و توضیح داد:
“`python
class قهرمان:
def __init__(self, نام, قدرت, سلامتی):
self.نام = نام
self.قدرت = قدرت
self.سلامتی = سلامتی
def حمله(self):
print(f”{self.نام} با قدرت {self.قدرت} حمله میکند!”)
def دفاع(self):
print(f”{self.نام} در حالت دفاعی قرار میگیرد و {self.قدرت // ۲} آسیب کمتر میبیند.”)
“`
سینا توضیح داد که متد `__init__` به عنوان سازندهی کلاس عمل میکند و به ما امکان میدهد ویژگیهای اولیه مانند نام، قدرت، و سلامتی را هنگام ایجاد قهرمان تعیین کنیم.
#### ایجاد یک قهرمان
آراد با استفاده از کلاس `قهرمان`، یک قهرمان جدید به نام «رستم» ایجاد کرد:
“`python
رستم = قهرمان(“رستم”, ۹۰, ۱۰۰)
رستم.حمله()
رستم.دفاع()
“`
آراد کد را اجرا کرد و خروجی به این شکل بود:
“`
رستم با قدرت ۹۰ حمله میکند!
رستم در حالت دفاعی قرار میگیرد و ۴۵ آسیب کمتر میبیند.
“`
آراد با هیجان گفت: «چقدر عالیه! حالا میتونم قهرمانهای مختلفی بسازم!»
#### اضافه کردن تواناییهای جدید به قهرمان
سینا پیشنهاد داد که توانایی جدیدی به قهرمان اضافه کنند. او یک متد `بهبود_سلامتی` به کلاس اضافه کرد تا قهرمان بتواند سلامتی خود را بازیابی کند:
“`python
class قهرمان:
def __init__(self, نام, قدرت, سلامتی):
self.نام = نام
self.قدرت = قدرت
self.سلامتی = سلامتی
def حمله(self):
print(f”{self.نام} با قدرت {self.قدرت} حمله میکند!”)
def دفاع(self):
print(f”{self.نام} در حالت دفاعی قرار میگیرد و {self.قدرت // ۲} آسیب کمتر میبیند.”)
def بهبود_سلامتی(self, مقدار):
self.سلامتی += مقدار
print(f”{self.نام} سلامتی خود را بهبود داد. سلامتی فعلی: {self.سلامتی}”)
“`
آراد متد جدید را امتحان کرد:
“`python
رستم.بهبود_سلامتی(۲۰)
“`
خروجی این کد به شکل زیر بود:
“`
رستم سلامتی خود را بهبود داد. سلامتی فعلی: ۱۲۰
“`
آراد متوجه شد که با استفاده از کلاسها و اشیاء میتواند شخصیتهای مختلفی با ویژگیها و تواناییهای گوناگون بسازد.
#### ایجاد چندین قهرمان و مبارزه بین آنها
سینا پیشنهاد داد که آراد چند قهرمان دیگر بسازد و آنها را در مقابل هم قرار دهد. آراد کد زیر را نوشت و قهرمان دیگری به نام «سهراب» ساخت:
“`python
سهراب = قهرمان(“سهراب”, ۸۰, ۱۱۰)
رستم.حمله()
سهراب.دفاع()
“`
آراد خروجی را بررسی کرد و دید که قهرمانها میتوانند با هم تعامل داشته باشند. او با هیجان گفت: «حالا میتونم دنیای خودم رو با قهرمانها و دشمنان مختلف بسازم!»
سینا لبخند زد و گفت: «آفرین، آراد! دنیای شیءگرایی بهت این امکان رو میده که شخصیتهای مختلفی بسازی و با تعریف ویژگیها و رفتارها، دنیای مجازی خودت رو توسعه بدی. با این دانش میتونی به پروژههای پیچیدهتر فکر کنی و بازیهای جذابی بسازی.»
آراد با رضایت گفت: «ممنون سینا! حالا میدونم که چطور قهرمانهای مختلف بسازم و ویژگیها و تواناییهای متفاوتی به اونها بدم. این خیلی جالبه!»