جستجو در تالارهای گفتگو
در حال نمایش نتایج برای برچسب های 'sfml'.
4 نتیجه پیدا شد
-
در کتابخانهی SFML کلاس Http این امکان را فراهم میکند تا به راحتی بتوانید تحت روشهای Post، Get و Head درخواستهای مورد نظر را دریافت و ارسال کنید. توجه داشته باشید این کتابخانه تنها از مباحث ابتدائی پروتکل Http پشتیبانی میکند. برای دسترسی و استفاده از این ویژگی کافی است سرآیند زیر را وارد کنید: #include <SFML/Network.hpp> سپس با فراخوانی فضای نام به صورت زیر، از کلاس مربوطه یک نمونه خواهیم ساخت: sf::Http http; به عنوان مثال کد زیر جهت آماده سازی برای ارسال به سمت سرور کافی است: #include <SFML/Network.hpp> sf::Http http; http.setHost("http://www.iostream.ir/"); با توجه به نیازهای مربوط به این مبحث، ارسال مقادیر به یک صفحه و آدرس اینترنتی توسط Request و Response صورت میگیرد که جهت دسترسی به این ویژگیها کافی است از کلاس مربوطه به صورت زیر نمونه گرفته شود. sf::Http::Request request; request.setMethod(sf::Http::Request::Post); request.setUri("/page.html"); request.setHttpVersion(1, 1); // HTTP 1.1 request.setField("From", "me"); request.setField("Content-Type", "application/x-www-form-urlencoded"); request.setBody("para1=value1¶m2=value2"); sf::Http::Response response = http.sendRequest(request); در کد فوق، روش درخواست از نوع Post و یا Get مشخص میشود که از متد setMethod جهت اعمال آن استفاده شده است. در ادامه مشخصهی setUri صفحه و یاآدرسی را که قرار است اطلاعات به آن ارسال یا دریافت شود را مشخص میکند. نسخهی پروتکل http با مشخصهی setHttpVersion با مقادیر صحیح مقدار دهی میشود که در این مثال مقدار ۱ به عنوان پشتیبانی از پروتکل نسخهی Http 1.1 تعیین شده است. با توجه به ماهیت روش Post مقادیری که برای ارسال نیاز است را باید ارسال کنید، برخی از اطلاعات ارسالی مانند Content-Type و غیره توسط مشخصهی setField مشخص میشود و همچنین مشخصهی setBody پارامترها (ورودیهایی) که از طرف کاربر ارسال میشود را فراهم میکند. در نهایت کلاس Response جهت دریافت و مدیریت دادههای ارسالی از سمت سرور را مدیریت میکند که برای دسترسی و چاپ اطلاعات تحت آن به صورت زیر خواهد بود: sf::Http::Response response = http.sendRequest(request); std::cout << "status: " << response.getStatus() << std::endl; std::cout << "HTTP version: " << response.getMajorHttpVersion() << "." << response.getMinorHttpVersion() << std::endl; std::cout << "Content-Type header:" << response.getField("Content-Type") << std::endl; std::cout << "body: " << response.getBody() << std::endl; مثال فوق وضعیت، نسخهی مرتبط با پروتکل مربوطه، مقدار Content-Type و همچنین اطلاعات ارسال شده در مشخصهی body را چاپ خواهد کرد. در ادامه مثال مشخصی را برای ارسال یک نظر را آوردهایم که به صورت زیر خواهد بود: #include <SFML/Network.hpp> #include <sstream> void sendComment(const std::string &message, const std::string &username) { // Prepare the request sf::Http::Request request("/comment.php", sf::Http::Request::Post); // Encode the parameters in the request body std::ostringstream stream; stream << "username=" << username << "&message=" << score; request.setBody(stream.str()); // Send the request sf::Http http("http://www.iostream.ir/"); sf::Http::Response response = http.sendRequest(request); // Check the status if (response.getStatus() == sf::Http::Response::Ok) { // Check the contents of the response std::cout << response.getBody() << std::endl; } else { std::cout << "Request failed" << std::endl; } } توجه داشته باشید که جهت بررسی وضعیت ارسالی از نمونهی response متد getStatus را میتوان با شمارندههای موجود در کلاس Response مورد ارزیابی قرار داد. در نهایت در سمت سرور کد زیر میتواند مقادیر ارسال شده را دریافت و پاسخ دهد: <?php $username = $_POST['username']; $message = $_POST['message']; if (write_to_database($username, $message)) { echo "Your comment has been added!"; } else { echo "failed to write your message to database..."; } ?> نکته: مثالهای فوق صرفاً برای آشنایی با نحوهی استفاده از ویژگی مربوطه در این کتابخانه است، بنابراین بسیار ساده و فاقد کدهای امنیتی و سفارشی است.
-
با توجه به موضوع قبل بعد از نصب و راه اندازی کتابخانه برای اینکه ساده ترین مثال ممکن را توضیح دهیم در پروژهی خود در فایل main.cpp کد زیر را وارد کنید. #include <iostream> #include <SFML/Window.hpp> int main() { sf::Window window(sf::VideoMode(640, 480), "Hello world!"); std::cout << "Window is created!" << std::endl; return 0; } در کتابخانهی SFML تمامی کلاسها در هدرهای مخصوص خود قرار دارند، همانند استاندارد تمامی کتابهانههای سیپلاسپلاس ? بنابراین جهت نمایش یک پنجره ساده با ابعاد مشخص ما نیاز به هدر Window.hpp خواهیم داشت که در کُد بالا وارد شده است. از کلاس فوق نمونه گیری کرده و سپس تحت مشخصهی VideoMode ابعاد و عنوان پنجرهی خود را وارد میکنیم. برنامه را اجرا کنید در صورتی که کتابخانهی شما مشکلی نداشته باشد پنجرهی شما با مشخصات وارد شده نمایان خواهد شد. دقت کنید که برای ثابت نگه داشتن در یک بازهی زمانی بهتر است از کد دستوری زیر برای نگهداری پنجره در زمان اجرا استفاده شود که هیچ قدرت قابل توجهی را از جانب پردازنده نمیطلبد: sf::sleep(sf::seconds(3)); کُد بهینه شده با توجه به ایجاد رخداد کلیدی برای پایان دادن برنامه به صورت زیر خواهد بود: #include <SFML/Window.hpp> int main() { sf::Window window(sf::VideoMode(640, 480), "Hello world!"); while (window.isOpen()) { sf::Event event; while (window.pollEvent(event)) { if (event.type == sf::Event::KeyPressed) window.close(); } } return 0; } در داخل حلقهی while در صورتی که رخداد فشرده شدن کلیدی از طرف دستگاه ورودی مانند صفحه کلید رُخ دهد، پنجره بسته خواهد شد. کُد مربوطه را اجرا کنید، در صورتی که مشکلی وجود نداشته باشد پنجره ساخته شده شما نمایان و با فشرده شدن کلیدی از صفحه کلید بسته خواهد شد.? در ادامه آموزشهای لازم در بخش مربوطه ارائه خواهد شد.
-
کتابخانهی SFML به عنوان یک واسط کامپوننتهای مفیدی را برای سیستم فراهم میکند که جهت توسعه برنامههای گرافیکی و بازی سازی بسیار مفید است. ماژولهای این کتابخانه با عناوین System, Window, Graphics, Audio و Network به صورت چند-سکویی ارائه شدهاند. جهت دریافت نسخهی مورد نظر از این بخش اقدام کنید. بعد از دریافت در یکی از محیطهای توسعه پروژهای را ایجاد و مسیرهای مرتبط با include و lib به پروژهی خود معرفی کنید. به عنوان مثال در محیط Qt Creator به صورت زیر خواهد بود: win32: LIBS += -L$$PWD/../../YourPath/SFML-2.5.0/lib/ sfml-graphics.lib sfml-window-s.lib sfml-window.lib sfml-system-s.lib sfml-system.lib INCLUDEPATH += $$PWD/../../YourPath/SFML-2.5.0/include DEPENDPATH += $$PWD/../../YourPath/SFML-2.5.0/include توجه داشته باشید برای معرفی ماژولهای ذکر شده می بایست آنها را در بخش lib معرفی کنید. آموزش نصب و راه اندازی کتابخانه در ++C
-
نگارش 2.5.۱
64 دریافت
کتابخانهی SFML به عنوان یک واسط کامپوننتهای مفیدی را برای سیستم فراهم میکند که جهت توسعه برنامههای گرافیکی و بازی سازی بسیار مفید است. ماژولهای این کتابخانه با عناوین System, Window, Graphics, Audio و Network به صورت چند-سکویی ارائه شدهاند. این کتابخانه برای زبانهای C/C++/C#/Python و Java مورد استفاده قرار میگیرد. جهت یادگیری سریع این کتابخانه در مرجع میتوانید به بخش اختصاصی SFML مراجعه کنید.رایگان