خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

نحوه پیاده سازی سطوح بازی در بازی Python

کتابخانه Python Arcade یک راه ساده و موثر برای پیاده سازی سطوح بازی در پروژه های شما ارائه می دهد.

توسعه بازی یک فرآیند هیجان انگیز و خلاقانه است که به شما امکان می دهد ایده های تخیلی خود را زنده کنید. هنگام طراحی یک بازی، یکی از عناصر کلیدی که می تواند تجربه بازیکن را تا حد زیادی افزایش دهد، اجرای سطوح بازی است.

سطوح ساختار، پیشرفت و چالش‌ها را ارائه می‌کنند و به بازیکنان حس موفقیت و مشارکت را در مراحل مختلف بازی می‌دهند.

یک بازی ساده بسازید

قبل از شروع، مطمئن شوید که پیپ را روی دستگاه خود نصب کرده اید. برای نصب کتابخانه آرکید از این دستور استفاده کنید:

pip install arcade

یک بازی اساسی ایجاد کنید که بازیکن بتواند به چپ و راست حرکت کند.

کد استفاده شده در این مقاله در این مخزن GitHub موجود است و برای استفاده شما تحت مجوز MIT رایگان است.

از قابلیت های کتابخانه Arcade برای مدیریت ورودی کاربر و به روز رسانی وضعیت بازی بر این اساس استفاده کنید. یک فایل جدید با نام simple-game.py ایجاد کنید و کد زیر را اضافه کنید:

import arcade

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

class MyGame(arcade.Window):
    def __init__(self):
        super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "My Game")
        arcade.set_background_color(arcade.color.WHITE)
        self.player_x = SCREEN_WIDTH // 2

    def on_draw(self):
        arcade.start_render()
        arcade.draw_rectangle_filled(self.player_x, 50, 50, 50, arcade.color.BLUE)

    def on_key_press(self, key, modifiers):
        if key == arcade.key.LEFT:
            self.player_x -= 10
        elif key == arcade.key.RIGHT:
            self.player_x += 10

    def on_key_release(self, key, modifiers):
        if key == arcade.key.LEFT or key == arcade.key.RIGHT:
            pass

def main():
    game = MyGame()
    arcade.run()

if __name__ == "__main__":
    main()

در زیر خروجی است:

بازی آرکید ساده با یک شی بازیکن

ایجاد سطوح چندگانه

اکنون با افزودن سطوح مختلف، بازی را گسترش دهید. هر سطح ویژگی های منحصر به فرد خود را دارد که چالش های مختلفی را برای بازیکن فراهم می کند. شما می توانید کد قبلی را تغییر دهید تا سطوح اضافی را شامل شود. در اینجا یک مثال است:

class LevelOne:
    def __init__(self):
        self.player_x = SCREEN_WIDTH // 2

    def update(self):
        pass

    def draw(self):
        arcade.draw_rectangle_filled(self.player_x, 50, 50, 50, arcade.color.BLUE)

class LevelTwo:
    def __init__(self):
        self.player_x = SCREEN_WIDTH // 2

    def update(self):
        pass

    def draw(self):
        arcade.draw_rectangle_filled(self.player_x, 50, 50, 50, arcade.color.RED)

class MyGame(arcade.Window):
    def __init__(self):
        super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "My Game")
        arcade.set_background_color(arcade.color.WHITE)
        self.levels = [LevelOne(), LevelTwo()]
        self.current_level = 0

    def on_draw(self):
        arcade.start_render()
        self.levels[self.current_level].draw()

    def on_key_press(self, key, modifiers):
        if key == arcade.key.LEFT:
            self.levels[self.current_level].player_x -= 10
        elif key == arcade.key.RIGHT:
            self.levels[self.current_level].player_x += 10

    def on_key_release(self, key, modifiers):
        if key == arcade.key.LEFT or key == arcade.key.RIGHT:
            pass

    def update(self, delta_time):
        self.levels[self.current_level].update()

def main():
    game = MyGame()
    arcade.run()

if __name__ == "__main__":
    main()

انتقال بین سطوح

برای ایجاد یک انتقال صاف بین سطوح، تشخیص دهید که بازیکن چه زمانی از یک مرز خاص عبور می کند. شما می توانید حرکت بازیکن را ردیابی کنید، و هنگامی که بازیکن از مرز عبور کرد، می توانید به سطح بعدی بروید. یک فایل جدید با نام transition-between-levels.py ایجاد کنید و کد را با به روز رسانی های زیر اضافه کنید:

class MyGame(arcade.Window):
    # ...

    def update(self, delta_time):
        self.levels[self.current_level].update()

        # Check if the player crossed the boundary
        if self.levels[self.current_level].player_x < 0:
            self.current_level += 1
            self.current_level %= len(self.levels)
            self.levels[self.current_level].player_x = SCREEN_WIDTH
        elif self.levels[self.current_level].player_x > SCREEN_WIDTH:
            self.current_level += 1
            self.current_level %= len(self.levels)
            self.levels[self.current_level].player_x = 0

    # ...

در زیر خروجی است:

مطلب مرتبط:   نحوه استفاده از Mongoose در برنامه های اکسپرس

بازیکن در حال انتقال بین سطوح

از جمله ویژگی های اضافی

برای جذاب‌تر کردن سطح بازی‌تان، می‌توانید ویژگی‌های اضافی مانند افزایش قدرت و اهداف را در آن قرار دهید.

اهداف

اهداف اهداف یا اهداف خاصی را برای بازیکن فراهم می کند تا در یک سطح به آن دست یابد. آنها حس هدف و پیشرفت را اضافه می کنند. در اینجا مثالی از اجرای یک ویژگی هدف آورده شده است:

class Objective:
    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.radius = 20

    def draw(self):
        arcade.draw_circle_filled(self.x, self.y, self.radius, arcade.color.GREEN)

class LevelOne:
    def __init__(self):
        self.objective = Objective(600, 400)
        # ...

    def update(self):
        # Check if the player reaches the objective
        if arcade.check_for_collision(self.player, self.objective):
            self.complete_objective()

    def draw(self):
        self.objective.draw()
        # ...

    def complete_objective(self):
        # Code to handle objective completion
        pass

کلکسیونی ها

کلکسیون ها آیتم ها یا پاداش هایی هستند که بازیکن می تواند در تمام سطوح جمع آوری کند. در اینجا نمونه ای از پیاده سازی یک ویژگی کلکسیونی آورده شده است:

class Collectible:
    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.radius = 10
        self.is_collected = False

    def draw(self):
        if not self.is_collected:
            arcade.draw_circle_filled(self.x, self.y, self.radius, arcade.color.ORANGE)

    def collect(self):
        self.is_collected = True
        # Code to handle the collectible's effect on the player

class LevelOne:
    def __init__(self):
        self.collectible = Collectible(300, 300)
        # ...

    def update(self):
        # Check if the player collects the item
        if arcade.check_for_collision(self.player, self.collectible):
            self.collectible.collect()

    def draw(self):
        self.collectible.draw()
        # ...

موانع

موانع می توانند اشیاء ثابت یا موجودات متحرکی باشند که مسیر بازیکن را مسدود می کنند. آنها از بازیکن می خواهند که استراتژی داشته باشد و راه هایی برای غلبه بر آنها بیابد. در اینجا مثالی از اجرای ویژگی موانع آورده شده است:

class Obstacle:
    def __init__(self, x, y, width, height):
        self.x = x
        self.y = y
        self.width = width
        self.height = height

    def draw(self):
        arcade.draw_rectangle_filled(self.x, self.y, self.width, self.height, arcade.color.GRAY)

class LevelOne:
    def __init__(self):
        self.obstacles = [Obstacle(400, 200, 100, 50), Obstacle(600, 500, 80, 120)]
        # ...

پاور آپ ها

قدرت‌آپ‌ها می‌توانند توانایی‌های بازیکن را افزایش دهند یا مزایای موقتی ایجاد کنند. در اینجا مثالی از اجرای یک ویژگی power-up آورده شده است:

class PowerUp:
    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.radius = 10
        self.is_active = True

    def draw(self):
        if self.is_active:
            arcade.draw_circle_filled(self.x, self.y, self.radius, arcade.color.YELLOW)

    def activate_power_up(self):
        self.is_active = True

    def deactivate_power_up(self):
        self.is_active = False

class LevelOne:
    def __init__(self):
        self.power_up = PowerUp(200, 200)
        # ...

    def update(self):
        # Check if the player collides with the power-up
        if arcade.check_for_collision(self.player, self.power_up):
            self.player.activate_power_up()
            self.power_up.deactivate_power_up()

    def draw(self):
        self.power_up.draw()
        # ...

بهترین روش ها برای طراحی سطح

طراحی سطح نقش مهمی در ایجاد تجربه های جذاب و لذت بخش از گیم پلی بازی می کند. در اینجا برخی از بهترین روش‌ها وجود دارد که باید هنگام طراحی سطوح برای بازی خود در نظر بگیرید:

مطلب مرتبط:   چگونه یک بازی امتحانی تعاملی در پایتون بسازیم

اهداف روشن

هر سطح باید یک هدف یا هدف مشخص برای دستیابی بازیکن داشته باشد. چه رسیدن به یک مکان خاص، چه شکست دادن دشمنان یا حل پازل، هدف باید به خوبی تعریف شده و به بازیکن اطلاع داده شود.

منحنی دشواری تدریجی

سطوح را با افزایش تدریجی دشواری طراحی کنید تا یک منحنی یادگیری صاف برای بازیکنان فراهم کنید. با چالش های ساده تر شروع کنید و به تدریج مکانیک ها یا موانع جدید را با پیشرفت بازیکن معرفی کنید. افزایش ناگهانی سختی می تواند بازیکنان را ناامید کند، بنابراین حفظ یک پیشرفت متعادل مهم است.

وضوح بصری

اطمینان حاصل کنید که طراحی سطح و عناصر بصری به وضوح اطلاعات مهم را به بازیکن منتقل می کند. ترکیب موسیقی و جلوه های صوتی نیز می تواند سرنخ های مهمی را منتقل کند و اطلاعات ضروری را به پخش کننده ارائه دهد.

تست بازی و تکرار

تست بازی منظم برای اصلاح و بهبود طراحی سطح ضروری است. بازخورد بازیکنان را جمع آوری کنید و تجربیات آنها را مشاهده کنید تا مناطقی را که ممکن است نیاز به تنظیمات داشته باشند شناسایی کنید. طراحی سطح خود را بر اساس این بازخورد تکرار کنید تا گیم پلی لذت بخش تر و متعادل تری ایجاد کنید.

تعادل پاداش و چالش

به بازیکنان برای غلبه بر چالش ها در سطوح خود پاداش دهید. این را می توان از طریق قدرت، کلکسیون، باز کردن قفل مناطق جدید، یا پیشرفت روایت به دست آورد. متعادل کردن سختی چالش ها با پاداش های معنادار به انگیزه بازیکنان کمک می کند و حس موفقیت را ایجاد می کند.

مطلب مرتبط:   چگونه با استفاده از Netlify و GitHub یک وب سایت Angular میزبانی کنیم

بازی ها را با سطوح جذاب تر کنید

با پیاده سازی سطوح بازی، می توانید تجربه کلی بازیکن را بهبود ببخشید و یک محیط گیم پلی جذاب تری ایجاد کنید. سطوح پیشرفت، چالش و تنوع را فراهم می کند و بازیکنان را سرمایه گذاری و با انگیزه نگه می دارد. آنها به شما اجازه می دهند مکانیک ها، موانع، دشمنان و پاداش های جدید را معرفی کنید و اطمینان حاصل کنید که هر سطح متمایز و هیجان انگیز است.