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