ساخت بازی آنلاین با php و کار با html و جاوا اسکریپت

saalek110

Well-Known Member
خوب سیستم لوگین و سسیون سازی الان کار می کند. البته ایراداتی دارد ولی بعدا می شود از منابع معتبر کدهای بهتر را جایگزین کرد.
من سیستم ثبت نام را هنوز اضافه نکردم. فعلا یوزر و پسورها را دستی در تیبل مربوطه اضافه کردم. بعدا ممکن است سیستم ثبت نام را هم اضافه کنم.
فعلا می خواهم بازی را سریعتر راه بیاندازم و چند یوزر که نیاز داشتم را هم دستی ساختم.
فکر نکنم کدهای بازی خودم را اینجا بنویسم ولی من در تاپیک وسایل ساخت بازی آنلاین با php را می گویم تا خودتان بازی مورد نظر خودتان را بسازید.
 
آخرین ویرایش:

saalek110

Well-Known Member
دوباره می رویم سراغ بحث فرمی که خود صفحه را صدا می زند و به صفحه ثانی پاس نمی دهد:
PHP:
<?php
if(isset($_POST['submit']))
{
    $name = $_POST['name'];
    echo "User Has submitted the form and entered this name : <b> $name </b>";
    echo "<br>You can use the following form again to enter a new name.";
}
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
   <input type="text" name="name"><br>
   <input type="submit" name="submit" value="Submit Form"><br>
</form>
برگرفته از:
https://html.form.guide/php-form/php-form-action-self
همان طور که در کد می بینید
PHP:
$_POST['submit']
را برای بررسی ورود به فاز دوم یعنی بعد خود-فراخوانی انتخاب کرده.
و فایل فوق خوب و درست کار می کند. یعنی بعد نوشتن اسمی در فرم در فاز دوم بعد خود-فراخوانی از آن اسم درست استفاده می شود.

من(سالک) داشتم فکر می کردم آیا میشه یک فایل چند تا فرم داشته باشه و همه خود-فراخوانی کنند و در فاز دوم submit های متعددی چک شود. بیایید تست کنیم.

من فرم را دو تا کردم و بررسی را هم دوتا کردم. همان کاری را که انتظار داشتم انجام داد.
یعنی وقتی با فرم 1 کار می کردم بعد خود-فراخوانی کدهای مربوط به فرم 1 کار می کرد
و وقتی با فرم 2 کار می کردم بعد خود-فراخوانی کدهای مربوط به فرم 2 کار می کرد.
PHP:
<?php
if(isset($_POST['submit']))
{
    $name = $_POST['name'];
    echo "User Has submitted the form and entered this name : <b> $name </b>";
    echo "<br>You can use the following form again to enter a new name.";
}


if(isset($_POST['submit2']))
{
    $name2 = $_POST['name2'];
    echo "User Has submitted the form and entered this name2 : <b> $name2 </b>";
    echo "<br>You can use the following form again to enter a new name.";
}
?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
   <input type="text" name="name"><br>
   <input type="submit" name="submit" value="Submit Form"><br>
</form>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
   <input type="text" name="name2"><br>
   <input type="submit" name="submit2" value="Submit Form"><br>
</form>
شاید روش ساختن فرم دوم از روی کد فرم اول توسط من اشتباه باشد ولی همان کاری را که لازم داشتم انجام داد و این فعلا برای من کافیه.
من در این فکر بودم اگر در یک صفحه دکمه های متعددی باشد و کاربر بتواند با زدن هر دکمه صفحه کنترلی روی صفحه داشته باشد صفحه مجهزی خواهد شد.
به نظر شما این طور نیست؟ یعنی بعد زدن هر دکمه واکنش خاصی به عمل کاربر نشان دهیم.

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

saalek110

Well-Known Member
حالا که دوبل کردن فرم کار کرد من می خواهم یک قدم جلوتر بروم و برای بعضی دکمه ها کارهای جزیی در نظر بگیرم و یک دکمه اصلی در صفحه باشد که کار مهم و اصلی صفحه را انجام دهد.

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

PHP:
<?php
if(isset($_POST['submit1']))
{
    echo "pic1";
}


if(isset($_POST['submit2']))
{
  echo "pic2";
}

if(isset($_POST['submit']))
{
    $name = $_POST['name'];
    echo "User Has submitted the form and entered this name : <b> $name </b>";
    echo "<br>You can use the following form again to enter a new name.";
}

?>



<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
   <input type="submit" name="submit1" value="Submit Form1"><br>
</form>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
   <input type="submit" name="submit2" value="Submit Form2"><br>
</form>


<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
   <input type="text" name="name"><br>
   <input type="submit" name="submit" value="Submit Form"><br>
</form>
من در دو فرم اول فقط دکمه استفاده کردم. و text را حذف کردم چون نیازی بهشان نبود.
بعد اجرای صفحه داریم:
a1.jpg
و بعد زدن یکی از دکمه های اول یا دوم کلمه pic1 یا pic2 چاپ می شود که البته بعدا با تصویر یک و تصویر 2 جایگزین می شود.
و اگر دکمه سوم را بزنیم عبارت pic1 یا pic2 دیگه نمایش داده نمی شود
یعنی دکمه های اول و دوم فقط کارشان نمایش یک عکس است.
البته هزار نوع کار دیگر می شود به دکمه های یک و دو سپرد و فقط نمایش عکس نیست. شما می توانید هزار خط کد php یا html بعد فشردن دکمه 1 یا دکمه 2 اجرا کنید. این دیگه به ساختار بازی یا نرم افزار شما بستگی دارد.

a2.jpg
 
آخرین ویرایش:

saalek110

Well-Known Member
حالا می رویم سراغ کار با دیتابیس.
قبلا کد کانکت شدن به دیتابیس را نوشتم. و کد جستجوی یوزر و پسورد کاربر را هم کار کردیم.

منبع:
PHP MySQL Insert Data
اضافه کردن امتیاز بازیکن برای یک بازی.
قبلا من تیبل game1 را با دو ستون نام و امتیاز ساختم. name & score
PHP:
<?php
require "conn.php";
$sql = "INSERT INTO game1 (name, score) VALUES ('John', 22)";
$result = mysqli_query($conn ,$sql);
?>
مقادیر john و 22 برای تست است و باید جایگزین شود.

PHP:
<?php
require "conn.php";
session_start();
$aa=$_SESSION["Username"];
$sql = "INSERT INTO game1 (name, score) VALUES (   '$aa'   , 22)";
$result = mysqli_query($conn ,$sql);
?>
با کد بالا نام کاربر لوگین شده در تیبل بازی اضافه می شود
ولی هنوز آن عدد 22 فرضی است و باید در بازی امتیاز کاربر محاسبه شود و جای آن قرار گیرد
ولی مهم این بود بتوانیم نام کاربر و یک عدد را در تیبل بازی خاص اضافه کنیم که انجام شد.
 
آخرین ویرایش:

saalek110

Well-Known Member
بعد ساخت بازی و بعد اینکه چند نفر امتیاز گرفتند وقت نمایش امتیازات است. می توانیم بر حسب امتیاز افراد را مرتب کنیم.
منبع:
PHP MySQL Select Data With ORDER BY Clause
و
PHP print MySQL query in descending order

PHP:
$sql = "SELECT * FROM game1 ORDER BY score";
$result = mysqli_query($conn ,$sql);


    while($info = mysqli_fetch_array( $result ))
    {
    Print $info['name']."  ".$info['score']."<br>" ;
    }
نام تیبل من game1 است و دو ستون name و score دارد. شما بر اساس نامهای خود کد را تنظیم کنید.

a1.jpg
البته من از امتیاز بیشتر به کمتر می خواستم که باید دستور sql این طوری تغییر کند:
PHP:
$sql = "SELECT * FROM game1 ORDER BY score DESC";
a2.jpg
اون فاصله خالی موقع ویرایش عکس ایجاد شد و ربطی به کد ندارد.
 
آخرین ویرایش:

saalek110

Well-Known Member
کار تمام است.

a1.jpg

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

saalek110

Well-Known Member
a2.jpg

یک قسمتی که باید اضافه بشود css است. برای آنهایی که با css آشنایی ندارند بگم که با css می توانید صفحات متعدد سایت خود را همشکل کنید و با یک تغییر کوچک در css کل صفحات سایت شما به روز می شود. مثلا از لحاظ رنگ. و خیلی امکانات دیگر مثل فونت و خیلی تنظیمات.

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

اگر وقت کنم مقداری در مورد css شرح می دهم.
 
آخرین ویرایش:

saalek110

Well-Known Member
a3.jpg

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

من قصد ندارم تاپیک را اینجا تمام کنم ولی چند اشاره کردم تا بدانید کدام مسیرها را خودتان می توانید بروید تا جلو بیافتید
مثل سرچ در گوگل
یاد گرفتن و اضافه کردن css به سایت خود

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

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

a3.jpg

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

saalek110

Well-Known Member
PHP:
$a1=rand(1, 2) ;
$a1=rand(1,10) ;
تابع راندوم.
در اولی اعداد یک و 2 را تصادفی بیرون می دهد
و در دومی اعداد 1 تا 10 را.
 

saalek110

Well-Known Member
فیلد مخفی:

چون ما می خواهیم به خود صفحه پاس بدهیم شاید لازم باشه اعدادی ارسال بشه
برای همین فیلد مخفی مفید است.

منبع:
Tryit Editor v3.6

HTML:
<!DOCTYPE html>
<html>
<body>

<h1>A Hidden Field (look in source code)</h1>

<form action="/action_page.php">
  <label for="fname">First name:</label>
  <input type="text" id="fname" name="fname"><br><br>
  <input type="hidden" id="custId" name="custId" value="3487">
  <input type="submit" value="Submit">
</form>

<p><strong>Note:</strong> The hidden field is not shown to the user, but the data is sent when the form is submitted.</p>

</body>
</html>
نتیجه اجرا را در سایت اصلی ببینید.
یک عدد به شکل مخفی ارسال شده.

دریافت فیلد مخفی هم مثل بقیه فیلدهاست:
PHP:
     $custId = $_POST['custId'];
     echo "custId= ".$custId;
از:
Pass a PHP variable value through an HTML form
PHP:
<input type='hidden' name='var' value='<?php echo "$var";?>'/>
در خط بالا طرز استفاده از یک متغیر php به عنوان فیلد مخفی را می بینید. سالک: من تست نکردم. خودتان ببینید کار می کند یا نه.
 
آخرین ویرایش:

saalek110

Well-Known Member
یکی از راههای ارسال متغیر از فایل حاوی فرم به خودش استفاده از سسیون است.
PHP:
 $a1=rand(1, 2) ;
  $_SESSION['a1']=$a1;
عددی تصادفی بین 1 و 2 ساخته شده و در متغیر a1 است.
آن را در سسیون دخیره می کنیم و بعد پاس فرم به خود فایل می توانیم ازش استفاده کنیم.
start_session(); should be placed at the beginning of your php page.
می گوید سسیون استارت اول صفحه اضافه شود. از منبعی که لینکش در پایین داده شده.
PHP:
 echo "sess a1= ".$_SESSION['a1'];
منبع:
Pass a PHP variable value through an HTML form
 
آخرین ویرایش:

saalek110

Well-Known Member
https://www.liquidweb.com/kb/deleting-fields-from-database-tables-with-phpmyadmin
Deleting Fields from Database Tables with PhpMyAdmin
آموزشهای تصویری کار در phpmyadmin
و این صفحه خاص ازش دیلت کردن یک ردیف از یک تیبل است.

ولی اگر موفق نشدید و خواستید از کوؤری استفاده کنید.:
PHP:
DELETE FROM yourtable where id = 'deletereocrdid';
yourtable و id و deletereocrdid را مطابق تیبل خود تغییر دهید.
منبع:
phpmyadmin can't delete one record
 
آخرین ویرایش:

saalek110

Well-Known Member
COOKIE
کوکی


کوکی چیست؟
کوکی (Cookie) یک فایل است. فایلی که روی کامپیوتر یا موبایل یا تبلت شما ذخیره می‌شود.

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

بنابراین می‌توانیم بگوییم کوکی، یکی از ابزارهایی است که در تعامل و گفتگوی بین مرورگر و سایت‌ها استفاده می‌شود.

کاربرد کوکی چیست؟
وقتی یک سایت را می‌بینید، به علت‌های مختلف ممکن است سایت نیازمند ذخیره‌ی برخی اطلاعات باشد.

یکی از روش‌های ذخیره اطلاعات این است که سرورِ سایت از مرورگر شما درخواست کند این اطلاعات را برایش نگهداری کند.





فرض کنید به سایتی سر می‌زنید که به شما اجازه می‌دهد رنگ‌های مختلفی را برای پس‌زمینه‌ی آن انتخاب کنید.

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

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

حالا دفعه‌ی بعد که به سایت سر می‌زنید می‌توانید همان رنگ مورد علاقه‌ی خودتان را ببینید.

البته این تنها یک مثال است و صدها مثال دیگر از کاربرد کوکی قابل تصور است.

یکی از رایج‌ترین کاربردهای کوکی، کمک به تسریع لاگین کردن در سایت‌هاست.





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

سایت‌ها برای اینکه این کار را انجام دهند از مرورگرتان می‌خواهند یک کوکی روی کامپیوتر یا موبایل شما ایجاد کند و دفعه‌های بعد که به سایت سر می‌زنید با استفاده از اطلاعات ثبت شده در همان کوکی، بدون اینکه لازم باشد نام کاربری و پسوورد را وارد کنید به عنوان کاربر به سرویس‌های سایت دسترسی پیدا می‌کنید. به این نوع کوکی‌ها، Authentication Cookies گفته می‌شود.


کوکی چیست؟ چرا و چگونه کوکی را غیر فعال و پاک کنیم؟ - متمم

PHP:
$_COOKIE["cookie"] = "foo bar";
PHP: Cookies - Manual

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

جدیدترین ارسال ها

بالا