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


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


خب بریم یکم ثبت امتیاز رو بهتر کنیم و یکم حرفه ای ترش کنیم

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

برای این کار فایل submit.php رو تغییر میدیم و کدهای زیر رو جایگزینش میکنیم.

<?php
$pdo = new PDO('mysql:host=localhost;dbname=your DB','Your user','your Pass');

$name=$_GET['name'];
$score=$_GET['score'];

$res01=$pdo->query("SELECT * FROM bestscore where name='$name'");
$num = $res01->rowCount();

if($num>'0')
 {
 $res=$pdo->query("SELECT * FROM bestscore where name='$name'");
 foreach($res as $row) 
 {
 $scores=$row['score'] ;
 }
 if($scores<$score)
 {
 $res0=$pdo->query("UPDATE bestscore SET score='$score' WHERE name='$name' ");
 }
 }
else
 {
 $res=$pdo->query("INSERT INTO bestscore (name,score) VALUES 
 ('$name','$score' )");
 }
 
$pdo=null;

?>

این همون فایل قبلیه که چند خط و شرط بهش اضافه کردیم.

  • خط اول شروع کد نویسی php هست و خط 28 پایان کد نویسی هست که الزامیه (your DB:نام دیتابیس شما ، Your user:یوزر نیم دیتابیس شما ، your Pass پسورد دیتابیس شما )
  • خط دوم ورود اطلاعات اتصال دیتابیس هست (من از روش pdo استفاده کردم میتونید از روشهای دیگه مثل mysql یا mysqli استفاده کنید)
  • در خط 4 و 5 متعییر های دریافتی با روش get رو دریافت میکنم که قراره از طرف گیم میکر ارسال کنیم.
  • خط 7 و 8 تعداد سطر (داده) موجود با نام ارسال شده رو به دست میاریم (اگه کاربر اسمش جدیده عدد 0 و اگه قبلا ثبت کرده عدد بزرگتر از صفر و معمولا یک بر میگرده)
  • خط 10 شرط میکنیم اگه کاربرمون قدیمیه (متغییر بزرگتر از صفر) میره کدهای خطوط 12 تا 20 رو بررسی و اجرا میکنه (برای اینکه چک کنه ببینه لازمه امتیاز کاربرمون آپدیت بشه یا نه امتیاز جدید کمتر از امتیاز قدیمیه و نیاز به به روز رسانی نداره)
  • در خط 12 تا 16 ما امتیاز کار بر رو میگیریم تا ببینیم نیازمند به روز رسانی امتیاز هست یا خیر
  • در خط 17 چک میکنیم اگه امتیاز قدیمی (ثبت شده در جدول sql) کمتر از امتیاز جدید باشه خط 19 رو اجرا میکنیم تا مقادیر امتیاز به روز بشه.
  • در خط 24 و 25 امدیم اطلاعات دریافتی رو در جدولمون ذخیره میکنم (چون کاربر جدیده)(با توجه به روش pdo)
  • خط 28 اتصال دیتابیس رو لغو میکنیم

خب بریم ادامه کار 

ممکنه کاربر ما جزء نفرات برتر نباشه پس لازمه ما امتیاز فرد رو هم بگیریم و بهش نشون بدیم.

برای این کار در ایونت Create آبجکت obj_show یه تغییر جزئی ایجاد میکنیم و در هنگام ارسال متغییر get نام کاربر رو هم ارسال میکنیم تا از طرف سرور اسم رو بگیریم و امتیاز کاربر رو برگردونیم برای نمایش

get = http_get(string("https://gmstudio.ir/best/score.php?name=")+string(global.name));
show='0'
size=0

فایل score.php رو هم تغییر میدیم و چند خط بهش اضافه میکنیم به صورت زیر 

<?php
$pdo = new PDO('mysql:host=localhost;dbname=your DB','Your user','your Pass');

$array = array();
$names=$_GET['name'];

$res=$pdo->query(" SELECT * FROM bestscore ORDER BY score DESC limit 10");
foreach($res as $row) 
 {
 $name=$row['name'] ;
 $score=$row['score'] ;

 array_push($array,array("score"=>"$score","name"=>"$name"));
 }


$res=$pdo->query(" SELECT * FROM bestscore where name='$names'");
foreach($res as $row) 
 {
 $score=$row['score'] ;
$res01=$pdo->query("SELECT * FROM bestscore where score>'$score'");
$num = $res01->rowCount()+1;
 array_push($array,array("score"=>"$num","name"=>"$names"));
 }
array_push($array,array("show"=>"1"));

$print = json_encode($array);

echo $print;

$pdo=null;


?>
  • خط اول شروع کد نویسی php هست و خط 34 پایان کد نویسی هست که الزامیه(your DB:نام دیتابیس شما ، Your user:یوزر نیم دیتابیس شما ، your Pass پسورد دیتابیس شما )
  • خط دوم ورود اطلاعات اتصال دیتابیس هست (من از روش pdo استفاده کردم میتونید از روشهای دیگه مثل mysql یا mysqli استفاده کنید)
  • خط 4 یه آرایه ایجاد میکنیم برای استفاده در خطوط بعدی
  • خط 5 متغییر نام رو میگیریم
  • خط 7 و 8 اطلاعات جدول رو مرتب کرده از بزرگ به کوچک و تعداد 10 تا امتیاز برتر رو انتخاب میکنیم و در حلقه خط 8 ازش استفاده میکنیم (با توجه به روش pdo در اتصال)
  • خط 9 حلقه رو باز میکنیم
  • خط 10 و 11 اطلاعات نام و امتیاز رو از جدول دریافت میکنیم
  • خط 13 اطلاعات دریافتی رو در آرایه خودمون اضافه میکنیم (همون آرایه که در خط 4 ایجاد کردیم)
  • خط 14 حلقه رو میبندیم
  • خط 17 تا 24 امتیاز کاربر رو میگیریم و با استفاده از امتیاز کاربر رتبه کاربر رو به همراه نامش در آرایه اضافه میکنیم
  • خط 25 یه متغییر show به آرایه خودمون اضافه میکنیم با مقدار 1 که بعدا بتونیم تو گیم میکر چک کنیم اطلاعات از سرور گرفته شده یا نه.
  • خط 27 ارایه موجودمون رو به جیسون تبدیل میکنیم و اونو تو متغییرprint میریزیم
  • خط 29 متغییر جیسونمون رو چاپ میکنیم
  • خط 31 اتصال دیتابیس رو قطع میکنیم.

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

if (show='1')
{

for(i=0;i<size-1;i++)
{
draw_text(100,20+(i*40),name[i])
draw_text(200,20+(i*40),scores[i])
}

draw_text(300,50,name[size-1])
draw_text(400,50,scores[size-1])

}

خطوط 10 و 11 رتبه و نام کاربر رو رسم میکنه.

خسته نباشید.

 


Download

zip

0.01 mb

    نظرات


    نام: sina

    17 آذر 1396
    سلام آموزشهای خیلی خوب و مفیدی دارید بابت زحمتش خیلی ممنون لطفا اگر ممکن بود درخواست چندتا اموزش دارم. البته تو یک سایت اموزشش رو گذاشتن ولی من نتونستم درستشون کنم . یکی در مورد نوار سلامتی با شکل دایره ای مختلف هست که لینکشو میذارم ببینید http://www.davetech.co.uk/gamemakercircularhealthbars و یکی هم در مورد روشن شدن فکر کنم نقشه هست . اینم لینکش http://www.davetech.co.uk/gamemakerscratchcard و البته اموزشهای دیگه ای هم هست ولی هیچکدوم ترجمه شده نیستن باز هم بابت اموزشها ممنونم






ارسال نظر




رفتن به بالا