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

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

نحوه ایجاد یک تایمر با استفاده از کتابخانه Arcade Python برای رویدادهای مبتنی بر زمان

یاد بگیرید که چگونه زمان را اندازه گیری کنید و از آن برای کنترل جنبه های مختلف بازی خود استفاده کنید.

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

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

با ایجاد یک بازی ساده برای درک اصول اولیه شروع کنید. یک بازی بسازید که بازیکن بتواند به چپ و راست حرکت کند و یک پلتفرم واحد وجود داشته باشد. یک فایل جدید به نام simple-game.py ایجاد کنید و ماژول آرکید را وارد کنید، که عملکردهای لازم برای ایجاد بازی را فراهم می کند.

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

در مرحله بعد، کلاس GameWindow را تعریف کنید که یک زیر کلاس از arcade.Window است. در داخل کلاس GameWindow، متد __init__ را تعریف کنید، که پنجره را با عرض، ارتفاع و عنوان مشخص شده مقداردهی اولیه می کند.

روش on_key_press فشار دادن کلید فلش چپ یا راست را تشخیص می دهد. با فشار دادن سمت چپ، player_x 10 واحد کاهش می یابد در حالی که فشار دادن راست، آن را 10 واحد افزایش می دهد. این به بازیکن اجازه می دهد تا به صورت افقی در پنجره بازی حرکت کند.

برای اجرای بازی، تابع اصلی را تعریف کنید، یک نمونه از GameWindow ایجاد کنید، متد setup را برای تنظیم پنجره بازی فراخوانی کنید و در نهایت حلقه بازی را با استفاده از (arcade.run) شروع کنید.

طراحی ساختار کلاس تایمر

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

import time

class Timer:
    def __init__(self, duration):
        self.duration = duration
        self.start_time = 0
        self.is_running = False

    def start(self):
        self.start_time = time.time()
        self.is_running = True

    def stop(self):
        self.is_running = False

    def get_elapsed_time(self):
        if self.is_running:
            return time.time() - self.start_time
        return 0

    def is_expired(self):
        return self.get_elapsed_time() >= self.duration

کلاس Timer در طول مقداردهی اولیه، یک پارامتر مدت زمان را بر حسب ثانیه می گیرد. کلاس شامل ویژگی هایی مانند start_time برای ذخیره زمان شروع تایمر و is_running برای ردیابی وضعیت تایمر است.

مطلب مرتبط:   کار با متغیرهای محیطی در زنگ

متد start() start_time را با استفاده از time.time() روی زمان جاری تنظیم می کند و is_running را روی True تنظیم می کند. متد stop() به سادگی is_running را روی False قرار می دهد. متد get_elapsed_time() زمان سپری شده را با کم کردن start_time از زمان فعلی محاسبه می کند.

اگر تایمر در حال اجرا باشد، زمان سپری شده را برمی گرداند. در غیر این صورت، 0 را برمی گرداند. متد is_expired() بررسی می کند که آیا زمان سپری شده بیشتر یا برابر با مدت زمان است یا خیر، که نشان می دهد تایمر منقضی شده است.

پیاده سازی تایمرهای شمارش معکوس

برای نشان دادن شمارش معکوس در بازی خود، می توانید زمانی که بازیکن کلید خاصی مانند کلید فاصله را فشار می دهد تایمر را شروع کنید. با استفاده از دستور چاپ پایتون شمارش معکوس را برای کنسول چاپ کنید. یک فایل جدید به نام timer.py ایجاد کنید و کد را با این به‌روزرسانی‌ها اضافه کنید:

import time

class GameWindow(arcade.Window):
    def __init__(self):
        super().__init__(WIDTH, HEIGHT, "Simple Game")
        self.player_x = WIDTH // 2
        self.player_y = HEIGHT // 2
        self.timer = Timer(10)

    def on_key_press(self, key, modifiers):
        if key == arcade.key.SPACE:
            self.timer.start()

    def on_draw(self):
        # Existing code
        if self.timer.is_running:
            elapsed_time = self.timer.get_elapsed_time()
            r_time = self.timer.duration - elapsed_time
            remaining_time = max(r_time, 0)
            print(f"Countdown: {remaining_time:.1f} seconds")

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

تایمر ساده با شمارش معکوس متن

مدیریت رویدادهای تایمر و اقدامات راه اندازی

همچنین می‌توانید تابعی را فعال کنید که با پایان یافتن تایمر شمارش معکوس، یک مستطیل می‌کشد. یک فایل جدید با نام handle-event.py ایجاد کنید و کد را با به روز رسانی های زیر اضافه کنید:

def on_draw(self):
    # Existing code
    if self.timer.is_expired():
        self.draw_rectangle()

def draw_rectangle(self):
    arcade.draw_rectangle_filled(WIDTH // 2, HEIGHT // 2, 100, 100, red)

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

بازی با اشیاء بازیکن، پلتفرم و رویداد

مکث، تنظیم مجدد و از سرگیری تایمر

برای افزودن قابلیت توقف، تنظیم مجدد و از سرگیری تایمر، می توانید کلاس Timer را با روش های مناسب گسترش دهید. در اینجا یک مثال است:

class Timer:
    # Existing code

    def pause(self):
        self.duration -= self.get_elapsed_time()
        self.is_running = False

    def reset(self):
        self.start_time = 0
        self.is_running = False

    def resume(self):
        self.start_time = time.time()
        self.is_running = True

افزودن بازخورد بصری به تایمر

برای ارائه بازخورد بصری برای تایمر، می توانید متن یا عناصر گرافیکی را روی صفحه بازی قرار دهید. یک فایل جدید به نام visual.py ایجاد کنید و کد را با به روز رسانی های زیر اضافه کنید:

def on_draw(self):
    # Existing code
    if self.timer.is_running:
        text = f"Countdown: {remaining_time:.1f} seconds"
        arcade.draw_text(text, 10, 10, black, 18)

اکنون به جای کنسول، تایمر را مستقیماً در پنجره بازی خواهید دید:

مطلب مرتبط:   نحوه اتصال PostgreSQL به یک برنامه Next.js با استفاده از Prisma

بازی با شی پلیر و پلتفرم و تایمر بصری

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

برای افزایش بیشتر رویدادهای مبتنی بر زمان، می‌توانید ویژگی‌های اضافی زیر را در بازی‌های خود پیاده‌سازی کنید.

پاور آپ ها یا جوایز مبتنی بر زمان

پاور آپ ها یا پاداش هایی را که به صورت دوره ای در طول بازی ظاهر می شوند، معرفی کنید. این قدرت‌ها می‌توانند توانایی‌های موقت، امتیازات اضافی، افزایش سرعت یا سلاح‌های پیشرفته را ارائه دهند.

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

چالش های محدود به زمان

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

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

موانع یا دشمنان زمان بندی شده

موانع یا دشمنانی که بازیکن را تهدید می کند، به موقع اجرا کنید. به عنوان مثال، سکوهای متحرکی که در فواصل منظم ظاهر می شوند و ناپدید می شوند، یا دشمنانی که برای مدت محدودی شکست ناپذیر می شوند.

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

مطلب مرتبط:   نحوه دانلود فایل ها با Node.js

بهترین شیوه ها برای رویدادهای مبتنی بر زمان

هنگام اجرای رویدادهای مبتنی بر زمان در بازی های خود، رعایت این بهترین شیوه ها ضروری است.

تست و تعادل

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

بازخورد کاربر

در مورد وضعیت تایمر و هر رویداد مبتنی بر زمان، بازخورد واضح و شهودی را به بازیکنان ارائه دهید. افزودن جلوه‌های صوتی، شاخص‌های بصری یا نشانه‌های متنی می‌تواند به بازیکنان کمک کند محدودیت‌های زمانی و عواقب اقدامات خود را درک کنند.

اندازه گیری زمان ثابت

از یک سیستم اندازه گیری زمان ثابت در طول بازی خود استفاده کنید. به عنوان مثال، از ثانیه به عنوان واحد برای تمام تایمرها و محاسبات مربوط به زمان استفاده کنید. این امر ثبات و سهولت درک را برای بازیکنان و توسعه دهندگان تضمین می کند.

دستگیره های لبه

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

با پیروی از این بهترین شیوه‌ها، می‌توانید رویدادهای مبتنی بر زمان ایجاد کنید که گیم‌پلی را بهبود می‌بخشد، بازیکنان را به چالش می‌کشد و تجربه‌ای متعادل و لذت‌بخش را ارائه می‌دهد.

با رویدادهای مبتنی بر زمان، بازی ها را سرگرم کننده تر کنید

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

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