في هذا الكود البسيط الخاص بلعبة الشرب بلغة الجافا سكريبت، يظهر أن هناك بعض الأخطاء في ترتيب وكتابة الشيفرة. سأقوم بتوضيح بعض النقاط التي يمكن تحسينها:
مقالات ذات صلة
-
الصياغة العامة للكود:
- يجب عليك وضع الكود داخل وسم
script
في الجزء السفلي من الصفحة للتأكد من أن جميع العناصر في الصفحة قد تم تحميلها بشكل صحيح قبل تنفيذ الكود. - يُفضل أيضاً استخدام
addEventListener
للتفاعل مع الضغط على العنصر بدلاً من وضع الكود مباشرة في العنصر.
- يجب عليك وضع الكود داخل وسم
-
أخطاء في الكود:
- يوجد خطأ في السطر:
document.getElementById("ppp".innerHTML = "have a shot each";
حيث أنه يجب إغلاق القوس الزائد بعد “ppp”. - في السطر:
selector = 0;
يفضل استبدال القيمة بـselector = 3;
لضمان عمل التبديل بشكل صحيح. - افتقدت وسم الفتح
<
في السطر:في نهاية الصفحة.
- يوجد خطأ في السطر:
-
التسميات والتعليقات:
- يفضل إضافة تعليقات توضيحية للكود لجعله أكثر فهمًا للآخرين ولنفسك في المستقبل.
-
تحسينات إضافية:
- يمكنك اختصار الكود وتجنب تكرار النصوص بتعريف متغير لنص "have a shot" واستخدامه في كلتا القائمتين.
-
الأمان:
- يفضل استخدام "use strict" في بداية السكريبت لتحسين أمان الكود.
اليك الكود المعدل:
htmlhtml>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hometitle>
head>
<body>
<script>
"use strict";
var boy = ["have a shot", "item 2", "item 3"];
var girl = ["have a shot", "item 2", "item 3"];
var selector = 1;
function rbg() {
var outcomeElement = document.getElementById("ppp");
if (selector === 1) {
outcomeElement.innerHTML = boy[Math.floor(Math.random() * boy.length)];
selector = 3;
} else if (selector === 2) {
outcomeElement.innerHTML = girl[Math.floor(Math.random() * girl.length)];
selector = 3;
} else {
outcomeElement.innerHTML = "have a shot each";
selector = 1;
}
}
// Add event listener for better practice
document.getElementById("random").addEventListener("click", rbg);
script>
<div id="random">Randomdiv>
<p id="ppp">outcomep>
body>
html>
يمكنك تجربة هذا الكود المعدل ويمكنك تكييفه بما يناسب احتياجات لعبتك.
المزيد من المعلومات
بالطبع، دعونا نوسع الموضوع بالحديث عن بعض النقاط الإضافية التي قد تساعدك في تحسين وتطوير لعبتك بلغة الجافا سكريبت:
تنظيف الشيفرة:
- استخدام الدوال والتعليقات:
يمكنك تنظيم الشيفرة أكثر باستخدام الدوال لتجميع الكود ذي الصلة معًا. أيضا، قم بإضافة تعليقات لشرح ما يقوم به كل قسم من الكود.
javascriptfunction getRandomOutcome() {
// تحديد مصدر النصوص
var source = (selector === 1) ? boy : girl;
// اختيار نص عشوائي
return source[Math.floor(Math.random() * source.length)];
}
- التعامل مع الأخطاء:
يمكنك إضافة تفتيش للتحقق من وجود عناصر في المصفوفاتboy
وgirl
قبل تشغيل اللعبة.
javascriptfunction startGame() {
if (boy.length === 0 || girl.length === 0) {
console.error("Empty arrays. Please fill the arrays with items.");
return;
}
// بدء اللعبة
// ...
}
تحسين تجربة المستخدم:
- تغيير لون النص:
يمكنك جعل تجربة اللعبة أكثر تفاعلًا بتغيير لون النص عند ظهور النتيجة.
javascriptfunction updateOutcomeText(text) {
var outcomeElement = document.getElementById("ppp");
outcomeElement.innerHTML = text;
outcomeElement.style.color = getRandomColor();
}
function getRandomColor() {
// توليد لون عشوائي
var letters = "0123456789ABCDEF";
var color = "#";
for (var i = 0; i < 6; i++) {
color += letters[Math.floor(Math.random() * 16)];
}
return color;
}
- إضافة صور أو رسومات:
يمكنك تعزيز تجربة اللعبة بإضافة صور أو رسومات توضح النتيجة بشكل أفضل.
html
<img id="resultImage" src="placeholder.jpg" alt="Game Result" style="display: none;">
function updateOutcomeImage(source) {
var imageElement = document.getElementById("resultImage");
imageElement.src = source;
imageElement.style.display = "block";
}
التحسينات التقنية:
- استخدام let و const:
استخدمlet
للمتغيرات التي يمكن تغيير قيمتها واستخدمconst
لتعريف الثوابت.
javascriptconst boy = ["have a shot", "item 2", "item 3"];
const girl = ["have a shot", "item 2", "item 3"];
let selector = 1;
- استخدام مصفوفة واحدة:
يمكنك تحسين هيكلة البيانات باستخدام مصفوفة واحدة تحتوي على كائنات تحتوي على معلومات اللاعبين.
javascriptconst players = [
{ gender: "boy", items: ["have a shot", "item 2", "item 3"] },
{ gender: "girl", items: ["have a shot", "item 2", "item 3"] }
];
// للوصول إلى مصفوفة الفتى: players[0].items
// للوصول إلى مصفوفة الفتاة: players[1].items
تلك هي بعض الأفكار التي يمكن تطبيقها لتحسين كود لعبتك وجعله أكثر تفاعلية وسهولة في الصيانة.