آموزش ساخت بازی آنلاین-نوبتی(قسمت دوم)


 آموزش ساخت بازی آنلاین-نوبتی(قسمت دوم)


در این بخش قصد داریم با استفاده از php دو پلیر رو وارد یک روم کنیم که آماده مبارزه باشن.

یه اسپرایت با نام spr_loading برای زمانی که پلیر منتظر ورود پلیر دوم و شروع بازی هست میسازیم.

چهار اسپرایت با نامهای spr_h_1_stop و spr_h_2_stop و spr_h_3_stop و spr_h_4_stop برای نمایش حالت ایست کاراکتر ها ایجاد میکنیم

یه اسپرایت هم برای نمایش جان به نام spr_healthbar ایجاد میکنیم.

یه آبجکت با نام obj_loading_player ایجاد میکنیم و این آبجکت رو در لابی یا محل انتظار قرار میدیم که پلیر منتظر پلیر بعدی هست

در ایونت Create همین آبجکت کدهای زیر رو وارد میکنیم

http_get(string('https://gmstudio.ir/online_tenbase/player.php?name=')
+string(global.username)+string('&hero=')+string(global.userhero))

get = ''

image_speed=0.5

show=0
size=0


alarm[0]=150
  • خط اول , دوم اطلاعات کاربر (نام و کاراکتر انتخابیش) رو به سرور ارسال میکنیم تا ثبت بشه
  • خطوط 4 تا 9 چند متغییر ایجاد کردیم که بعدا لازممون میشه
  • خط 12 آلارم رو برابر 150 قرار میدیم که برابر 5 ثانیه میشه و قراره کدهای بررسی سرور رو در این ایونت قرار بدیم تا چک کنه ببینه کاربر دیگه ای وارد شده که بازی رو شروع کنیم یا خیر

در ایونت آلارم کدهای زیر رو قرار میدیم .

get = http_get(string("https://gmstudio.ir/online_tenbase/start.php?name=")
+string(global.username)+string('&hero=')+string(global.userhero))
alarm[0]=150
  • خط اول و دوم اطلاعات ما رو به سرور ارسال میکنه تا اطلاعات جدید رو در ایونت .http. دریافت کنیم
  • خط سوم مجددا ایونت الارم رو برابر 150 قرار میدیم یعنی 5 ثانیه.

در ایونت http کدهای زیر رو وارد میکنیم

var type = ds_map_find_value(async_load,'id');
    if type == get
    {
        if ds_map_find_value(async_load,'status') == 0
        {
            var requestResult = ds_map_find_value(async_load,'result');
            var resultMap = json_decode(requestResult);
            var list = ds_map_find_value(resultMap, "default");
            top_rank_size = ds_list_size(list);
            size=real(top_rank_size);
            for (var n = 0; n < ds_list_size(list); n++;)
            {
                var map = ds_list_find_value(list, n);
                var curr = ds_map_find_first(map);
                while (is_string(curr))
                {  
                 
                name[n] = ds_map_find_value(map, "name");
                hero[n] = ds_map_find_value(map, "hero");
                
                curr = ds_map_find_next(map, curr);
                } 
     
                show = ds_map_find_value(map, "show");                      
                    
                ds_map_destroy(map);
            }
            ds_list_destroy(list);
            ds_map_destroy(resultMap);
        }
    }
  • با استفاده از این کدها متغییر های name , hero , show رو از سرور دریافت خواهیم کرد.

در ایونت .step. کدهای زیر رو وارد میکنیم

if(show='1' or show='2')
{
global.e_username=string(name[0])
global.e_userhero=real(hero[0])

global.tern=real(show)

room_goto_next()
}
  • توی این خطوط بررسی میکنیم اگه اطلاعات از سرور دریافت شده باشه اطلاعات دشمن رو به روز کرده و میریم روم بعدی (اگه سه روم ندارین سومین روم رو هم ایجاد کنید)

یه آبجکت ایجاد کرده در روم سوم قرار میدیم با نام obj_helthbar این آبجکت برای نمایش هلث پلیر و دشمن هست

کدهای زیر رو در ایونت draw این آبجکت وارد میکنیم

draw_healthbar(x+143,y+66,x+291,y+85,global.heath,c_black,c_aqua,c_aqua,0,1,0)
draw_healthbar(x+496,y+66,x+344,y+85,global.e_heath,c_black,c_aqua,c_aqua,0,1,0)

draw_set_colour(c_white)
draw_text(x+180,y+43,global.username)
draw_text(x+457,y+43,global.e_username)

draw_sprite(sprite_index,0,x,y)

خط اول و دوم هلث پلیر و دشمن رو در مختصات خاصی رسم میکنه

خط 4 و 5 و 6 نام پلیر و نام دشمن پلیر رو با رنگ سفید رسم میکنه

خط 8 هم اسپرایتمون رو رسم میکنه برای زیبایی

یه آبجکت با نام obj_player ایجاد کرده تو روم سوم میزاریم

در ایونت Create این آبجکت کدهای زیر رو وارد میکنیم

image_speed=0.2

if(global.userhero=1)
{sprite_index=spr_h_1_stop}
if(global.userhero=2)
{sprite_index=spr_h_2_stop}
if(global.userhero=3)
{sprite_index=spr_h_3_stop}
if(global.userhero=4)
{sprite_index=spr_h_4_stop}
  • این کدها فقط بررسی میکنه کدوم کاراکتر رو انتخاب کردیم و اسپرایت همون رو برامون نمایش میده

یه آبجکت با نام obj_enemy ایجاد کرده تو روم سوم میزاریم

در ایونت Create این آبجکت کدهای زیر رو وارد میکنیم

image_speed=0.2
image_xscale=-1

if(global.e_userhero=1)<
{sprite_index=spr_h_1_stop}
if(global.e_userhero=2)
{sprite_index=spr_h_2_stop}
if(global.e_userhero=3)
{sprite_index=spr_h_3_stop}
if(global.e_userhero=4)
{sprite_index=spr_h_4_stop}
  • این کدها فقط بررسی میکنه کدوم کاراکتر رو انتخاب کردیم و اسپرایت همون رو برامون نمایش میده فقط خط دوم اسپرایتمون رو برعکس میکنه چون این ابجکت دشمنه ما هست با این خط دو کاراکتر روبه روی هم قرار میگیرن

تو سرور یا هاست یه فایل خالی با نام start.txt ایجاد میکنیم 

بعد یه فایل با نام player.php ایجاد میکنیم و کدهای زیر رو داخلش وارد میکنیم.

<?php

$user=$_GET['name'];
$hero=$_GET['hero'];

$read = file("start.txt");

foreach($read as $name)

{
$old_user=$name; 
}


$char=substr_count($old_user,"±");
if($char!=0)
{
$myfile = fopen("start.txt", "w");
fclose($myfile); 
$old_user='';
}


if($old_user!='')
{
$myfile = fopen("start.txt", "w");
fwrite($myfile,$old_user."±".$user.'°'.$hero);
fclose($myfile);
}
else
{
$myfile = fopen("start.txt", "w");
fwrite($myfile,$user.'°'.$hero);
fclose($myfile);
}

?>

 

  • خط 3 و 4 دو متغییر رو که از سمت گیم میکر ارسال شده دریافت میکنیم
  • خط 6 تا 12 محتویات فایل start.txt رو میخونیم و در متغییر $old_user ذخیره میکنیم
  • خط 15 تعداد کاراکتر ± موجود در محتویات فایل start.txt رو برمیگردونیم (چون اطلاعات دو پلیر رو با ± از هم جدا میکنیم پس اگه این کاراکتر وجود داشته باشه یعنی دوتا پلیر داریم)
  •  خط 16 تا 21 اگه تعداد این کاراکترمون صفر نباشه محتویات فایل رو خالی کرده و متغییر $old_user رو خالی میکنیم (این حالت یعنی دو پلیر قبلا وارد شده و باهم بازی کردن و این پلیر جدید باید منتظر یه پلیر دیگه باشه پس فایل رو پاک میکنیم برای ثبت اطلاعات این پلیر)
  • خط 24 بررسی میکنیم اگ فایل start.txt خالی نباشه خط 25 تا خط 29 اجرا بشه و اگه خالی باشه کدهای خط 31 تا 35 اجرا بشه.
  • خط 25 تا 29 اطلاعات پلیر منتظر (پلیر موجود) رو با ± از اطلاعات پلیر جدید از هم جدا کرده در فایل ثبت میکنیم (نام و کاراکتر انتخابی پلیر رو با استفاده از ° از هم جدا میکنیم)
  •  خط 31 تا 35 اطلاعات پلیر جدید در فایل ثبت میکنیم (نام و کاراکتر انتخابی پلیر رو با استفاده از ° از هم جدا میکنیم)

 آموزش ساخت بازی آنلاین-نوبتی(قسمت دوم)

 یه فایل دیگه با نام start.php ایجاد کرده و کدهای زیر رو داخلش وارد میکنیم

<?php

$user=$_GET['name'];

$array = array();

$read = file("start.txt");
foreach($read as $name)
{$file=$name; }


$char=substr_count($file,"±");
if($char!=0)
{

$users=explode("±",$file);

$users1=explode("°",$users[0]);
$users2=explode("°",$users[1]);

if($user==$users1[0])
{
array_push($array,array("name"=>"$users2[0]","hero"=>"$users2[1]"));
array_push($array,array("show"=>"1"));
}
else
{
array_push($array,array("name"=>"$users1[0]","hero"=>"$users1[1]"));
array_push($array,array("show"=>"2")); 
}


$print = json_encode($array);

echo $print;


}
?>

 

  •  خط سوم نام پلیر درخواست کننده رو میگیریم
  • خط 5 یه متغییر از نوع آرایه ایجاد میکنیم بعدا لازم داریم
  • خط 7 تا 9 اطلاعات فایل start.txt رو میخونیم
  • خط 12 تعداد کاراکتر ± موجود در محتویات فایل start.txt رو برمیگردونیم (چون اطلاعات دو پلیر رو با ± از هم جدا میکنیم پس اگه این کاراکتر وجود داشته باشه یعنی دوتا پلیر داریم)
  • خط 13 بررسی میکنیم اگه کاراکتر ± داخل فایل موجود باشه (یعنی اگه دو پلیر وجود داشته باشه) کدهای خطوط 23 تا 35 رو اجرا میکنیم
  • خطوط 16 و 18 و 19 به ترتیب اطلاعات دو پلیر رو از هم جدا کرده بعد نام و شماره کاراکتر پلیرها رو از هم جدا میکنیم 
  • خط 21 بررسی میکنیم اگه پلیر درخواست دهنده پلیر اول باشه کدهای خطوط 23 و 24 رو اجرا میکنیم در غیر این صورت کدهای خطوط 28 و 29 اجرا میشه
  • خط 23 و 24 نام پلیر دوم رو در متغییر ارایه خودمون برای نمایش به کاربر اول (درخواست دهنده )ذخیره میکنیم و بعد متغییر show رو برابر یک وارد میکنیم به آرایه که یعنی پلیر درخواست دهنده پلیر اول ما هست.
  •  خط 28 و 29 نام پلیر اول رو در متغییر ارایه خودمون برای نمایش به کاربر دوم (درخواست دهنده) ذخیره میکنیم و بعد متغییر show رو برابر دو وارد میکنیم به آرایه که یعنی پلیر درخواست دهنده پلیر دوم ما هست.
  •  خط 33 و 35 متغییر آرایه خودمون رو تبدیل به جیسون کرده و نمایش میدیم.

 از بازی خروجی گرفته دو بار اجرا کرده تست میکنیم نتیجه میشه این

 آموزش ساخت بازی آنلاین-نوبتی(قسمت دوم)

 فایلهای آموزش رو میتونید از لینک زیر دانلود کنید.


Download

zip

1.2 mb

    نظرات


    نام: احمدرضا

    27 آبان 1396
    سلام آموزش خیلی خوب و مفیدی بود بابت زحمتش خیلی ممنون لطفا در صورت امکان آموزش های دیگه ای هم در این رابطه بگذارید با تشکر
    نام: ایران رادا

    7 دی 1396
    حتما بخوانید با سامانه افزایش بازدید ایران رادا رتبه گوگل و الکسا سایتتان را بهبود دهید. ویژگی های استفاده از سامانه افزایش بازدید ایران رادا : 1 ) بهبود رتبه الکسا 2 ) بهبود جایگاه سایت در گوگل 3 ) قدرت بسیار زیاد نسبت به پاپ آپ 4 ) بهبود بانس ریت و پیج و ویو و تایم سایت 5 ) قیمت مناسب و تاثیر گذاری بالا به ما اعتماد کنید و یکبار تست کنید لینک سفارش : https://goo.gl/rQpcqs در صورت نیاز به هرگونه مشاوره با ما تماس بگیرید ☎️ تلفن : 03136511074 و 09395304616






ارسال نظر




رفتن به بالا