ব্রাউজার ভিত্তিক কৌশল গেমের জন্য একটি ডেটাবেস থেকে কীভাবে পিএইচপি-তে একটি ষড়ভুজ বিশ্ব মানচিত্র তৈরি করবেন


28

আমি আমার পিএইচপি ব্রাউজার ভিত্তিক কৌশল গেমের জন্য একটি ষড়ভুজ বিশ্ব মানচিত্র তৈরি করার চেষ্টা করছি। আমি আমার ডাটাবেসে সারি প্রতি নিম্নলিখিত তথ্য সহ একটি সারণী তৈরি করেছি: আইডি, টাইপ, এক্স, ওয়াই ও দখল করা। যেখানে টাইপ হ'ল ধরণের টাইলস যা সংখ্যায় সংজ্ঞায়িত হয়। উদাহরণস্বরূপ, 1 হল ঘাস। মানচিত্রটি নিজেই 25 x 25।

আমি ক্লিকযোগ্য টাইলস সহ ডাটাবেস থেকে মানচিত্রটি আঁকতে চাই এবং তীরের সাহায্যে মানচিত্রটি ন্যাভিগেট করতে সক্ষম করব। এটি কীভাবে শুরু করা যায় তার কোনও সত্যতা আমার কাছে নেই এবং যে কোনও সহায়তা প্রশংসিত হবে।

উত্তর:


38

* সম্পাদনা করুন: জাভাস্ক্রিপ্টে স্থির ত্রুটি যা ফায়ারফক্সে ত্রুটি ঘটায় *

সম্পাদনা করুন: পিএইচপি উত্স কোডটিতে কেবলমাত্র হেক্সেসকে স্কেল করার ক্ষমতা যুক্ত করা হয়েছে। ক্ষুদ্র 1/2 আকারের আকার বা 2x জাম্বো, এটি আপনার উপর নির্ভর করে :)

এই সমস্ত লেখার ক্ষেত্রে কীভাবে রাখবেন আমি পুরোপুরি নিশ্চিত ছিলাম না তবে খুঁজে পেলাম একটি সম্পূর্ণ লাইভ উদাহরণের জন্য কোডটি লেখা সহজ easier পৃষ্ঠাটি (নীচের লিঙ্ক এবং উত্স) গতিশীলভাবে পিএইচপি সহ একটি হেক্সম্যাপ তৈরি করে এবং মানচিত্রের ক্লিকগুলি পরিচালনা করতে জাভাস্ক্রিপ্ট ব্যবহার করে। একটি হেক্সে ক্লিক করা হেক্সকে হাইলাইট করে।

মানচিত্রটি এলোমেলোভাবে উত্পাদিত হয়েছে তবে মানচিত্রটি জনপ্রিয় করার পরিবর্তে আপনার নিজের কোড ব্যবহার করতে সক্ষম হওয়া উচিত। এটি একটি সাধারণ 2 ডি অ্যারে দ্বারা প্রতিনিধিত্ব করা হয়, প্রতিটি অ্যারে উপাদান সেই হেক্সে ভূখণ্ডের প্রকার ধারণ করে।

হেক্স মানচিত্রের উদাহরণটি দেখতে আমাকে ক্লিক করুন

ব্যবহার করতে, এটি হাইলাইট করতে যে কোনও হেক্সে ক্লিক করুন।

এই মুহুর্তে এটি একটি 10x10 মানচিত্র উত্পন্ন করছে, তবে আপনি পিএইচপি-তে মানচিত্রের আকারটি আপনার পছন্দ অনুযায়ী কোনও আকারে পরিবর্তন করতে পারবেন। উদাহরণস্বরূপ আমি ওয়েসনথ গেমটি থেকে টাইলসের একটি সেটও ব্যবহার করছি। এগুলির উচ্চতা 72x72 পিক্সেল, তবে উত্সটি আপনাকে আপনার হেক্স টাইলসের আকার নির্ধারণ করতে দেয়।

হেক্সগুলি "হেক্সের বাইরে" অঞ্চলগুলি স্বচ্ছ হিসাবে সেট করে পিএনজি চিত্রগুলি দ্বারা প্রতিনিধিত্ব করে। প্রতিটি হেক্সের অবস্থান নির্ধারণের জন্য, আমি প্রতিটি টাইলের পরম অবস্থান সেট করতে সিএসএস ব্যবহার করছি, যা হেক্স গ্রিড স্থানাঙ্ক দ্বারা গণনা করা হয়। মানচিত্রটি একটি একক ডিআইভিতে আবদ্ধ রয়েছে, যা উদাহরণটি পরিবর্তন করতে আপনার পক্ষে সহজ হবে।

এখানে পুরো পৃষ্ঠা কোডটি দেওয়া আছে। আপনি ডেমো উত্সটি (সমস্ত হেক্স চিত্র সহ) ডাউনলোড করতে পারেন ।

<?php
// ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
// :: HEX.PHP
// ::
// :: Author:  
// ::    Tim Holt, tim.m.holt@gmail.com
// :: Description:  
// ::    Generates a random hex map from a set of terrain types, then
// ::    outputs HTML to display the map.  Also outputs Javascript
// ::    to handle mouse clicks on the map.  When a mouse click is
// ::    detected, the hex cell clicked is determined, and then the
// ::    cell is highlighted.
// :: Usage Restrictions:  
// ::    Available for any use.
// :: Notes:
// ::    Some content (where noted) copied and/or derived from other 
// ::    sources.
// ::    Images used in this example are from the game Wesnoth.
// ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

// --- Turn up error reporting in PHP
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// --- Define some constants
$MAP_WIDTH = 10;
$MAP_HEIGHT = 10;
$HEX_HEIGHT = 72;

// --- Use this to scale the hexes smaller or larger than the actual graphics
$HEX_SCALED_HEIGHT = $HEX_HEIGHT * 1.0;
$HEX_SIDE = $HEX_SCALED_HEIGHT / 2;
?>
<html>
    <head>
        <title>Hex Map Demo</title>
        <!-- Stylesheet to define map boundary area and hex style -->
        <style type="text/css">
        body {
            /* 
            margin: 0;
            padding: 0;
            */
        }

        .hexmap {
            width: <?php echo $MAP_WIDTH * $HEX_SIDE * 1.5 + $HEX_SIDE/2; ?>px;
            height: <?php echo $MAP_HEIGHT * $HEX_SCALED_HEIGHT + $HEX_SIDE; ?>px;
            position: relative;
            background: #000;
        }

        .hex-key-element {
            width: <?php echo $HEX_HEIGHT * 1.5; ?>px;
            height: <?php echo $HEX_HEIGHT * 1.5; ?>px;
            border: 1px solid #fff;
            float: left;
            text-align: center;
        }

        .hex {
            position: absolute;
            width: <?php echo $HEX_SCALED_HEIGHT ?>;
            height: <?php echo $HEX_SCALED_HEIGHT ?>;
        }
        </style>
    </head>
    <body>
    <script>

function handle_map_click(event) {
    // ----------------------------------------------------------------------
    // --- This function gets a mouse click on the map, converts the click to
    // --- hex map coordinates, then moves the highlight image to be over the
    // --- clicked on hex.
    // ----------------------------------------------------------------------

    // ----------------------------------------------------------------------
    // --- Determine coordinate of map div as we want the click coordinate as
    // --- we want the mouse click relative to this div.
    // ----------------------------------------------------------------------

    // ----------------------------------------------------------------------
    // --- Code based on http://www.quirksmode.org/js/events_properties.html
    // ----------------------------------------------------------------------
    var posx = 0;
    var posy = 0;
    if (event.pageX || event.pageY) {
        posx = event.pageX;
        posy = event.pageY;
    } else if (event.clientX || e.clientY) {
        posx = event.clientX + document.body.scrollLeft
            + document.documentElement.scrollLeft;
        posy = event.clientY + document.body.scrollTop
            + document.documentElement.scrollTop;
    }
    // --- Apply offset for the map div
    var map = document.getElementById('hexmap');
    posx = posx - map.offsetLeft;
    posy = posy - map.offsetTop;
    //console.log ("posx = " + posx + ", posy = " + posy);

    // ----------------------------------------------------------------------
    // --- Convert mouse click to hex grid coordinate
    // --- Code is from http://www-cs-students.stanford.edu/~amitp/Articles/GridToHex.html
    // ----------------------------------------------------------------------
    var hex_height = <?php echo $HEX_SCALED_HEIGHT; ?>;
    x = (posx - (hex_height/2)) / (hex_height * 0.75);
    y = (posy - (hex_height/2)) / hex_height;
    z = -0.5 * x - y;
    y = -0.5 * x + y;

    ix = Math.floor(x+0.5);
    iy = Math.floor(y+0.5);
    iz = Math.floor(z+0.5);
    s = ix + iy + iz;
    if (s) {
        abs_dx = Math.abs(ix-x);
        abs_dy = Math.abs(iy-y);
        abs_dz = Math.abs(iz-z);
        if (abs_dx >= abs_dy && abs_dx >= abs_dz) {
            ix -= s;
        } else if (abs_dy >= abs_dx && abs_dy >= abs_dz) {
            iy -= s;
        } else {
            iz -= s;
        }
    }

    // ----------------------------------------------------------------------
    // --- map_x and map_y are the map coordinates of the click
    // ----------------------------------------------------------------------
    map_x = ix;
    map_y = (iy - iz + (1 - ix %2 ) ) / 2 - 0.5;

    // ----------------------------------------------------------------------
    // --- Calculate coordinates of this hex.  We will use this
    // --- to place the highlight image.
    // ----------------------------------------------------------------------
    tx = map_x * <?php echo $HEX_SIDE ?> * 1.5;
    ty = map_y * <?php echo $HEX_SCALED_HEIGHT ?> + (map_x % 2) * (<?php echo $HEX_SCALED_HEIGHT ?> / 2);

    // ----------------------------------------------------------------------
    // --- Get the highlight image by ID
    // ----------------------------------------------------------------------
    var highlight = document.getElementById('highlight');

    // ----------------------------------------------------------------------
    // --- Set position to be over the clicked on hex
    // ----------------------------------------------------------------------
    highlight.style.left = tx + 'px';
    highlight.style.top = ty + 'px';
}
</script>
<?php

// ----------------------------------------------------------------------
// --- This is a list of possible terrain types and the
// --- image to use to render the hex.
// ----------------------------------------------------------------------
    $terrain_images = array("grass"    => "grass-r1.png",
                            "dirt"     => "dirt.png",
                            "water"    => "coast.png",
                            "path"     => "stone-path.png",
                            "swamp"    => "water-tile.png",
                            "desert"   => "desert.png",
                            "oasis"    => "desert-oasis-tile.png",
                            "forest"   => "forested-mixed-summer-hills-tile.png",
                            "hills"    => "hills-variation3.png",
                            "mountain" => "mountain-tile.png");

    // ==================================================================

    function generate_map_data() {
        // -------------------------------------------------------------
        // --- Fill the $map array with values identifying the terrain
        // --- type in each hex.  This example simply randomizes the
        // --- contents of each hex.  Your code could actually load the
        // --- values from a file or from a database.
        // -------------------------------------------------------------
        global $MAP_WIDTH, $MAP_HEIGHT;
        global $map, $terrain_images;
        for ($x=0; $x<$MAP_WIDTH; $x++) {
            for ($y=0; $y<$MAP_HEIGHT; $y++) {
                // --- Randomly choose a terrain type from the terrain
                // --- images array and assign to this coordinate.
                $map[$x][$y] = array_rand($terrain_images);
            }
        }
    }

    // ==================================================================

    function render_map_to_html() {
        // -------------------------------------------------------------
        // --- This function renders the map to HTML.  It uses the $map
        // --- array to determine what is in each hex, and the 
        // --- $terrain_images array to determine what type of image to
        // --- draw in each cell.
        // -------------------------------------------------------------
        global $MAP_WIDTH, $MAP_HEIGHT;
        global $HEX_HEIGHT, $HEX_SCALED_HEIGHT, $HEX_SIDE;
        global $map, $terrain_images;

        // -------------------------------------------------------------
        // --- Draw each hex in the map
        // -------------------------------------------------------------
        for ($x=0; $x<$MAP_WIDTH; $x++) {
            for ($y=0; $y<$MAP_HEIGHT; $y++) {
                // --- Terrain type in this hex
                $terrain = $map[$x][$y];

                // --- Image to draw
                $img = $terrain_images[$terrain];

                // --- Coordinates to place hex on the screen
                $tx = $x * $HEX_SIDE * 1.5;
                $ty = $y * $HEX_SCALED_HEIGHT + ($x % 2) * $HEX_SCALED_HEIGHT / 2;

                // --- Style values to position hex image in the right location
                $style = sprintf("left:%dpx;top:%dpx", $tx, $ty);

                // --- Output the image tag for this hex
                print "<img src='$img' alt='$terrain' class='hex' style='zindex:99;$style'>\n";
            }
        }
    }

    // -----------------------------------------------------------------
    // --- Generate the map data
    // -----------------------------------------------------------------
    generate_map_data();
    ?>

    <h1>Hex Map Example</h1>
    <a href='index.phps'>View page source</a><br/>
    <a href='hexmap.zip'>Download source and all images</a>

    <!-- Render the hex map inside of a div block -->
    <div id='hexmap' class='hexmap' onclick='handle_map_click(event);'>
        <?php render_map_to_html(); ?>
        <img id='highlight' class='hex' src='hex-highlight.png' style='zindex:100;'>
    </div>

    <!--- output a list of all terrain types -->
    <br/>
    <?php 
        reset ($terrain_images);
        while (list($type, $img) = each($terrain_images)) {
            print "<div class='hex-key-element'><img src='$img' alt='$type'><br/>$type</div>";
        }
    ?>
    </body>
</html>

এখানে উদাহরণের একটি স্ক্রিনশট ...

হেক্স ম্যাপের উদাহরণ স্ক্রিনশট

অবশ্যই কিছু উন্নতি ব্যবহার করতে পারে। আমি পূর্ববর্তী মন্তব্যে লক্ষ্য করেছি আপনি বলেছেন যে আপনি jQuery এর সাথে পরিচিত ছিলেন, যা ভাল। জিনিসগুলি সহজ রাখতে আমি এখানে এটি ব্যবহার করি নি তবে এটি ব্যবহার করা বেশ কার্যকর হবে।


1
আপনাকে
কুদোস

1
অবশ্যই ফুুর উদাহরণ দেখুন। আপনি হেক্স চিত্রগুলির অবস্থান নির্ধারণ এবং jQuery এবং JSON এর পরামর্শের সাথে ক্লিকগুলি নির্ধারণের পদ্ধতি ব্যবহার করতে সক্ষম হতে পারেন। ওহ, আপনি কীভাবে আমি মানচিত্রে হাইলাইটটি ওভারলে করে দেখছি। এটি কেবল একটি চিত্র, তবে আমি জেড-ইনডেক্স স্টাইলের সম্পত্তিটি টাইলগুলির চেয়ে বেশি সংখ্যায় সেট করেছি - যার অর্থ এটি পরে আঁকা drawn আপনি করতে চান এমন কিছু সম্পর্কে কোনও খেলোয়াড়, চিহ্নিতকারী, মেঘের দ্বারা বয়ে যাওয়া, ওভারলে করতে একই ধারণাটি ব্যবহার করতে পারেন।
টিম হল্ট

এর্ক - এটি ফায়ারফক্সে পরীক্ষা করে নি। ক্লিকের অবস্থান নির্ধারণ করতে এবং এখন ফায়ারফক্সে কাজ করার জন্য আমি কোডটিকে নতুন বিট দিয়ে আপডেট করেছি। এই কারণেই আপনি jQuery ব্যবহার করেন, সুতরাং আপনাকে এই জিনিসগুলি সম্পর্কে চিন্তা করতে হবে না :)
টিম হল্ট

1
ঠিক তাই আপনি ডেমোতে জানেন যে আপনি প্রতিটি ডিভের উপর জিনডেক্স: 99 ব্যবহার করেন। এটি জেড-ইনডেক্স হওয়া উচিত: 99, তবে আপনার এটির দরকার নেই।
কোরিমাথিউজ

@ কোরিমাথিউস আসলে টাইলগুলির "টুকরো টুকরো" জিনিসগুলি বিবেচনার জন্য বাস্তবায়ন শুরু হওয়ার মতো দেখে মনে হচ্ছে বন টাইলের ডানদিকে গাছের মতো। এটির সূচী পরিবর্তন হওয়া দরকার যাতে অন্যান্য টাইলগুলি গাছটিকে ওভারল্যাপ না করে (যা বর্তমান আচরণ)।
জোনাথন কনেল

11

আপনার একটি ছোট জাভাস্ক্রিপ্ট টাইল লেআউট ইঞ্জিন লিখতে হবে যা ওয়েব পৃষ্ঠায় একটি ডাটাবেসের টাইল স্থানাঙ্ককে মানচিত্র করে, কারণ এটি আপনাকে প্লেয়ার্স কম্পিউটারে সিপিইউ প্রসেসিংয়ের সময় আউটসোর্স করতে দেয়। এটি করা কঠিন নয় এবং আপনি কোডের কয়েকটি পৃষ্ঠায় এটি করতে পারেন।

সুতরাং মূলত আপনি পিএইচপি এর একটি পাতলা স্তর লিখবেন যার কেবলমাত্র উদ্দেশ্য আপনার ডেটাবেস থেকে ক্লায়েন্টকে সমন্বিত তথ্য সরবরাহ করা, বিশেষত আপনার ওয়েব পৃষ্ঠা থেকে আজেএক্স কলের প্রতিক্রিয়ায়। আপনি সম্ভবত সহজে পার্সিংয়ের জন্য একটি জেএসএন ডেটা ফর্ম্যাট ব্যবহার করছেন এবং তারপরে মানচিত্রটি উত্পন্ন ও প্রদর্শন অংশটি জাভাস্ক্রিপ্টে লেখা হবে এবং ক্লাসিকের উপর নিকো 16 দ্বারা প্রস্তাবিত jQuery এর মতো লাইব্রেরি ব্যবহার করে কার্যকর করা হবে। এই অংশটি করা তুলনামূলকভাবে সহজ এবং বাস্তব ধারণাগুলি হিসাবে একই ধারণাগুলি প্রয়োগ হয় সুতরাং নিবন্ধের কম্যুনিস্ট হাঁসের তালিকা আপনাকে হেক্স প্রদর্শনের অংশটি ব্যাখ্যা করবে।

খেলোয়াড়দের স্ক্রিনে মানচিত্রের গ্রাফিক্স প্রদর্শনের জন্য আমি আপনাকে সুপারিশ করব যে আপনি সিএসএস স্প্রাইটস কৌশলটি ব্যবহার করুন যা আপনাকে আপনার মানচিত্রের সমস্ত টাইল একক ফাইলে সংরক্ষণ করতে দেয়। অবস্থানের জন্য আপনি একটি ডিভ মধ্যে মোড়ানো টাইল চিত্রের জন্য নিখুঁত স্থানাঙ্ক ব্যবহার করবেন, যা আবার তুলনামূলকভাবে অবস্থানযুক্ত ধারক ডিভের মধ্যে রয়েছে in

আপনি যদি এই চিত্র মোড়ানোর ডিভিজে jQuery ক্লিক ইভেন্টগুলি প্রয়োগ করেন তবে মাউস পজিশনের পরামর্শ অনুযায়ী ম্যানুয়ালি না করে আপনি মানচিত্রটিকে সহজেই ক্লিকযোগ্য করে তুলতে পারবেন। মানচিত্রটিকে সুন্দর দেখানোর জন্য জাজযুক্ত লাইন হেক্স টাইলগুলির পরিবর্তে মানচিত্রের প্রান্তগুলি বর্গক্ষেত্র হিসাবে ছাঁটাই করতে একটি ওভারফ্লো ক্লিপিং সহ ধারক ডিভ স্টাইল করুন। :)


আপনাকে অনেক ধন্যবাদ. আমি ইতিমধ্যে jQuery এর সাথে পরিচিত কারণ এটি একটি আশ্চর্যজনক লাইব্রেরি! আবার আপনাকে ধন্যবাদ!
ফিবিয়ানপাস

অবশ্যই jQuery - দুর্দান্ত ভাষা ব্যবহার করুন। ফুউ, আপনার উত্তরটি অবশ্যই আমার চেয়ে আরও মার্জিত এবং উদাহরণটি আরও সময় দেওয়ার জন্য আমি যে পথে যাব। jQuery + JSON মানচিত্রের ডেটা পেতে যাওয়ার উপায় হবে।
টিম হল্ট

1

আমার ধারণা হ'ল ডেটাবেস থেকে ডেটা পড়ার সাথে সাথে প্রতিটি টাইলটি আপনার (x, y) পয়েন্ট দ্বারা নির্দিষ্ট যে কোনও অবস্থানে ষড়ভুজ চিত্রের মানচিত্রযুক্ত বর্গাকার চিত্র হিসাবে তৈরি করা হবে। যার অর্থ আপনার চারপাশের খালি আলফা চ্যানেলটি দিয়ে আপনাকে হেক্সাগন হিসাবে আপনার টাইল চিত্রগুলি তৈরি করতে হবে, যাতে আপনি আপনার টাইলগুলি একসাথে ফিট করে তুলতে কিছুটা ওভারল্যাপ করতে পারেন। আপনি গ্রাফিক্স এবং জিনিসগুলির ইউআই পাশ (অ্যানিমেশন, দ্রুত এবং সহজ এজ্যাক্স, সহজ ইভেন্ট হ্যান্ডলিং, ইত্যাদি) পোলিশ করতে সহায়তা করতে jQuery সন্ধান করতে পারেন।


1

আমি ভয় করি যে আমি পিএইচপি কথা বলি না, তাই আমি কোড উদাহরণগুলি করতে পারি না। তবে, এখানে সম্পদের একটি দুর্দান্ত তালিকা রয়েছে যা আপনাকে সাহায্য করতে পারে। :)

গেমদেব-তে আইসোমেট্রিক / ষড়ভুজ গ্রিড নিবন্ধগুলির একটি দুর্দান্ত তালিকা এখানে রয়েছে ; ছোটো থেকে কিভাবে ষড়্ভুজাকার coords সঙ্গে মোকাবিলা করার জন্য করতে ক্যাশে টাইলস । (অবশ্যই, বেশিরভাগ উপাদান প্রাসঙ্গিক হবে না কারণ এটি বেশিরভাগই ... শব্দটি কী? পিসিতে কোনও ওয়েব ব্রাউজার নয়))

গ্রাফিকাল ডিসপ্লে হিসাবে, কেবল একটি ষড়ভুজাকার টাইলের বর্গাকার চিত্রের মধ্যে স্বচ্ছতা যুক্ত করুন।

'ক্লিকযোগ্য' এমন কিছু হবে:

if mouse button down on app:  
take screen coordinates of mouse  
Compare to screen coordinates of tiles

পিএইচপি ব্যবহারকারীর ইভেন্টস এবং ডাটাবেস-হুকিং-আপ-এর পথে কতটা আছে সে সম্পর্কে আমার কোনও ধারণা নেই, সুতরাং এর জন্য আপনাকে অন্য ভাষা এবং ফ্রেমওয়ার্কগুলিও খতিয়ে দেখতে হতে পারে।

আপনার সৌভাগ্য কামনা করছি. :)


এমনকি ব্রাউজার ভিত্তিক গেমগুলিতে, আরও স্তরের প্রয়োজন না হলে নিম্ন স্তরের প্রোগ্রামিং কৌশলগুলি প্রশংসা করা হয়।
টোর ভ্যালামো

1

ফুয়ের পদ্ধতির অনুসরণ করে, আমি একটি সংস্করণ কাজ করেছি যা ব্রাউজারে জাভাস্ক্রিপ্ট এবং jQuery উপর নির্ভর করে হেক্স ম্যাপটি রেন্ডার করতে। এই মুহূর্তে এমন একটি ফাংশন রয়েছে যা জেএসএনে এলোমেলো মানচিত্রের কাঠামো উত্পন্ন করে (দুটি সম্ভাব্য টাইলের মধ্যে) কমবেশি এর মতো:

var মানচিত্র = [["সমুদ্র," মরুভূমি "," মরুভূমি "], [" মরুভূমি, "মরুভূমি", "সমুদ্র"], ["সমুদ্র," মরুভূমি "," সমুদ্র "]]

... তবে ওয়েব পৃষ্ঠাটি কোডটি নিজেই তৈরি করার পরিবর্তে কোনও সার্ভার থেকে এই জাতীয় মানচিত্রের কাঠামোটি পেতে একটি অজ্যাক্স কল প্রদান করার কথা কল্পনা করা সহজ।

কোডটি জিসফিলের উপরে রয়েছে , সেখান থেকে আপনি এটি ব্যাখ্যা করে একটি ব্লগ পোস্টের লিঙ্ক এবং যদি আপনার আগ্রহী হন তবে একটি গিথুব লিঙ্কও দেখতে পাবেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.