الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

لعبة X و O بتقنية جديدة للجافا سكربت

بدأه فاكو في 18 يونيو 2008 · 0 رد · 712 مشاهدة · في قسم البرمجة بــ Javascript
مشاركة: واتساب X فيسبوك تيليجرام
#1

لسلام عليكم،

هذا أول موضوع لي في المنتدى( و قد أعدت كتابتة الى الان ثلات مرات، لا ادري هل الخطا في الجهاز عندي ام في صفحة الويب هذه) , و أردت ان أتحدث فيه عن اللعبة الشهيرة X و O التي تنتشر الأكواد المصدرية لها بلغة الجافا سكربت على الانترنت للتحميل، لكن العيب في هذه السكربتات أنها تحمل الكثير من السطور البرمجية،و الشروط المنطقية و تعمل على نفس الروتين و عدد محدود من الخانات:عادة 3 او 4 في كل صف،

بكل اختصار وانا العب هذه اللعبة على احدى صفحات الويب منذ يومين، ارتأيت الى تصميم هذه العبة بحيث تعمل على عدد غير محدود من الخانات حسب رغبة المستخدم، و باقل سطور برمجية،

و هذا الكود المفكر في اللعبة:

for(rg=1;rg<=4;rg++){
		for(b=1;b<=a;b++){
			nbr_O=nbr_X=0
			for(c=1;c<=a;c++){
				switch(rg){
					case 1: ob_x=ob_y=c;break;
					case 2: ob_x=c;ob_y=(a-(c-1));break;
					case 3: ob_x=b;ob_y=c;break;
					case 4: ob_x=c;ob_y=b;break;
					}
				if(bot[ob_x][ob_y]=='O')nbr_O++
				else if(bot[ob_x][ob_y]=='X')nbr_X++
				else s_vide=ob_x+'q'+ob_y
				}
			if(nbr_O==a) win=1
			else if((nbr_X==(a-1))&&(nbr_O==0)){marque=s_vide;win=2}
			else if(((nbr_O==(a-1))&&(nbr_X==0))&&(marque=='')) marque=s_vide
			else if((nbr_X>=pb)&&(nbr_O==0)){pb=nbr_X;marque_2=s_vide}//chrcher la bonne case a crocher,
			else if(marque_2=='') marque_2=s_vide
			if(((rg==1)|(rg==2))|(win!='')) break;
			if(rg==3) ed-=nbr_O+nbr_X
			}
		if(win!='') break;
		}

طبعا اضفت الى هذا الكود العديد من السطور الاخرى الهدف منها انشاء الخانات او تلوين الصف الكامل او اختيار اللغة المناسبة للمستخدم و غير ذلك

الملف في المرفقات يمثل اللعبة، بامكانك مشاهدة الكود سورس باي معالج للنصوص، للعب المرجو تغيير الامتداد الى احد امتدادات صفحات الهتمل، (مثلا htm)

اسف لقد فشلت في تحميل الملف، المرجو نشخ الكود اسفله الى ملف هتمل لتعمل اللعبة:

<html dir="rtl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>loading...</title>
<script language="javascript">
<!--
lc='arabe'// الأساسية اللغة اختيار  
speed=new Array(0,500); // الحاسب سرعة
bgwl= new Array(0,"#00CC00","#FF99FF")//الرابح الحقل لون

/* المستخدم الى الموجهة بالرسائل الأمر يتعلق ،المزدوجتين بين لك يحلو ما هنا غير
 اليونيكود العالمي التشفير لاخيار طبيعي هذا و مقلوبة تكون العربية اللغة */
lg_cou=new Array()
lg_cou['arabe']=new Array()
	lg_cou['arabe']['dire']='rtl'
	lg_cou['arabe']['titre']='لعبة ْX و O'
	lg_cou['arabe']['vec']='مبروك لقد ربحت'
	lg_cou['arabe']['ech']='للأسف لقد خسرت !'
	lg_cou['arabe']['equ']='حسنا لقد تعادلنا !'
	lg_cou['arabe']['toi']='دورك الآن ...'
	lg_cou['arabe']['ord']='الحاسوب يفكر...'
	lg_cou['arabe']['actu']='البدأ من جديد'
	lg_cou['arabe']['rec']='هل تريد حقا البدأ من جديد؟'
	lg_cou['arabe']['nbr1']='كم عدد الصفوف و الأعمدة تشاء؟'
	lg_cou['arabe']['vet1']='سرعة استجابة الحاسب'
	lg_cou['arabe']['rap']='سريع'
	lg_cou['arabe']['norm']='عادي'
	lg_cou['arabe']['non_acc']='المرجو كتابة رقم أكبر من ثلاثة!'
	lg_cou['arabe']['fin']='انتهى.'
	lg_cou['arabe']['attender']='من فضلك انتظر ...'
	lg_cou['arabe']['dem']='إبدأ'
	lg_cou['arabe']['res']='مسح'
lg_cou['Francais']=new Array()
	lg_cou['Francais']['dire']='ltr'
	lg_cou['Francais']['titre']='Jeux de X et O'
	lg_cou['Francais']['vec']='Bravo tu a gagne'
	lg_cou['Francais']['ech']='Perdu !'
	lg_cou['Francais']['equ']='voila, nous somme égaux !'
	lg_cou['Francais']['toi']='C\'est toi qui va marquer...'
	lg_cou['Francais']['ord']='on attende l\'etape suivante de l\'ordinateur... '
	lg_cou['Francais']['actu']='recommencer'
	lg_cou['Francais']['rec']='Etes vous sûr de vouloire recommencer?'
	lg_cou['Francais']['nbr1']='Combien des champs voulez vous?'
	lg_cou['Francais']['vet1']='la vetesse de l\'ordinateur'
	lg_cou['Francais']['rap']='Rapide'
	lg_cou['Francais']['norm']='Normale'
	lg_cou['Francais']['non_acc']='Veuillez taper un nombre plus ou egale a trois!'
	lg_cou['Francais']['fin']='Fin.'
	lg_cou['Francais']['attender']='Veuillez patienter ...'
	lg_cou['Francais']['dem']='commencer'
	lg_cou['Francais']['res']='Reinitialiser'
lg_cou['English']=new Array()
	lg_cou['English']['dire']='ltr'
	lg_cou['English']['titre']='The X,O \'s geme'
	lg_cou['English']['vec']='you win!'
	lg_cou['English']['ech']='Sorry, you did\'nt succes!'
	lg_cou['English']['equ']='Great, I hope you will win next time!'
	lg_cou['English']['toi']='Your turn ...'
	lg_cou['English']['ord']='Computer turn..'
	lg_cou['English']['actu']='restart'
	lg_cou['English']['rec']='Are you sur that you want to restart the game?'
	lg_cou['English']['nbr1']='How match of rows and columns you would?'
	lg_cou['English']['vet1']='Computer speed'
	lg_cou['English']['rap']='Fast'
	lg_cou['English']['norm']='Normal'
	lg_cou['English']['non_acc']='wrong number!'
	lg_cou['English']['fin']='End.'
	lg_cou['English']['attender']='Please wait...'
	lg_cou['English']['dem']='start'
	lg_cou['English']['res']='reset'

// هنا شيئ أي بتغيير ينصح لا
document.write(unescape("%3Cscript%20language%3D%22javascript%22%3Esp%3D1%3Bte%3D0%3Bfunction%20langue%28la%29%7Bdocument.bott.lga.disabled%3Ddocument.bott.lgf.disabled%3Ddocument.bott.lge.disabled%3Dfalse%3Bob%3Ddocument.getElementById%28la%29%3Blc%3Dla%3Bob.disabled%3D%22disabled%22%3Bdocument.dir%3Dlg_cou%5Blc%5D%5B%27dire%27%5D%3Bdocument.title%3Dlg_cou%5Blc%5D%5B%27titre%27%5D%3Bdocument.bott.actu.value%3Dlg_cou%5Blc%5D%5B%27actu%27%5D%3Bdocument.prep.dem.value%3Dlg_cou%5Blc%5D%5B%27dem%27%5D%3Bdocument.prep.resep.value%3Dlg_cou%5Blc%5D%5B%27res%27%5D%3Bif%28document.all%7C%7Cdocument.getElementById%29%7B%3Bcrst%3Ddocument.getElementById%3F%20document.getElementById%28%22nbr1%22%29%3Adocument.all.nbr1%3Bif%28crst%29%7Bcrst.innerHTML%3D%27%26nbsp%3B%27+lg_cou%5Blc%5D%5B%27nbr1%27%5D+%27%26nbsp%3B%26nbsp%3B%27%3Bcrst%3Ddocument.getElementById%3F%20document.getElementById%28%22vet1%22%29%3Adocument.all.vet1%3Bcrst.innerHTML%3D%27%26nbsp%3B%27+lg_cou%5Blc%5D%5B%27vet1%27%5D+%27%26nbsp%3B%26nbsp%3B%27%3Bdocument.prep.vet2.value%3Dlg_cou%5Blc%5D%5B%27norm%27%5D%3Bdocument.prep.vet3.value%3Dlg_cou%5Blc%5D%5B%27rap%27%5D%3B%7D%7D%7D%3Bfunction%20spd%28vl%29%7Bif%28vl%3D%3D0%29%7Bdocument.prep.vet3.disabled%3D%22disabled%22%3Bdocument.prep.vet2.disabled%3Dfalse%3Bsp%3D0%7Delse%7Bdocument.prep.vet3.disabled%3Dfalse%3Bdocument.prep.vet2.disabled%3D%22disabled%22%3Bsp%3D1%7D%7D%3Bfunction%20creer_cases%28%29%7Bwindow.status%3Dlg_cou%5Blc%5D%5B%27attender%27%5D%3Bif%28document.prep.nbr2.value%3E2%29%7Bdocument.bott.actu.disabled%3Dfalse%3Ba%3Ddocument.prep.nbr2.value%3Bif%28a%3C%3D27%29%7Bwh%3DMath.ceil%28a*%28-2.5%29+82%29%3Bfs%3DMath.ceil%28wh/2%29%7D%3Belse%7Bwh%3D15%3Bfs%3D8%7D%3Bif%28document.all%7C%7Cdocument.getElementById%29%7B%3Bcreer%3Ddocument.getElementById%3F%20document.getElementById%28%22pres%22%29%3Adocument.all.pres%3Bbot%3Dnew%20Array%28%29%3Bcr_%3D%27%3Cform%20id%3D%22geme%22%3E%3Ctable%20border%3D%220%22%20cellpadding%3D%220%22%20cellspacing%3D%220%22%3E%27%3Bfor%28b%3D1%3Bb%3C%3Da%3Bb++%29%7Bbot%5Bb%5D%3Dnew%20Array%28%29%3Bcr_+%3D%27%3Ctr%3E%27%3Bfor%28c%3D1%3Bc%3C%3Da%3Bc++%29%7Bbot%5Bb%5D%5Bc%5D%3D%27%27%3Bcr_+%3D%27%3Ctd%3E%3Cinput%20type%3D%22button%22%20id%3D%22%27+b+%27q%27+c+%27%22%20value%3D%22%22%20%20style%3D%22width%3A%27+wh+%27%20px%3B%20height%3A%27+wh+%27%20px%3B%20font-size%3A%27+fs+%27%20px%22%20onClick%3D%22commencer%28this%29%22/%3E%3C/td%3E%27%3B%7D%3Bcr_+%3D%27%3C/tr%3E%27%3B%7Dcreer.innerHTML%3Dcr_+%27%3C/table%3E%3C/form%3E%27%3B%7D%7Delse%20alert%28lg_cou%5Blc%5D%5B%27non_acc%27%5D%29%3Bwindow.status%3D%27%27%3Breturn%20false%3B%7Dfunction%20res%28%29%7Bco%3Dconfirm%28lg_cou%5Blc%5D%5B%27rec%27%5D%29%3Bif%28co%3D%3Dtrue%29%20document.location.reload%28%29%3B%7D%3Bfunction%20commencer%28ob%29%7Bif%28%28%28ob.value%21%3D%27X%27%29%26%28ob.value%21%3D%27O%27%29%29%26%28te%3D%3D0%29%29%7Bte%3D1%3Bob.value%3D%27O%27%3Bbot%5Bob.id.split%28%27q%27%29%5B0%5D%5D%5Bob.id.split%28%27q%27%29%5B1%5D%5D%3D%27O%27%3Bob.disabled%3D%22disabled%22%3Bwindow.status%3Dlg_cou%5Blc%5D%5B%27ord%27%5D%3BsetTimeout%28%22jouer%28%29%22%2Cspeed%5Bsp%5D%29%3B%7D%7D%3Bfunction%20pm%28c%29%7B%3Bif%28c%3D%3D%27p%27%29%20document.prep.nbr2.value++%3Belse%20if%28document.prep.nbr2.value%3E3%29document.prep.nbr2.value--%3B%7D%3C/script%3E"));

function jouer(){
	s_vide=marque=marque_2=win=''
	pb=0;ed=a*a
	for(rg=1;rg<=4;rg++){
		for(b=1;b<=a;b++){
			nbr_O=nbr_X=0
			for(c=1;c<=a;c++){
				switch(rg){
					case 1: ob_x=ob_y=c;break;
					case 2: ob_x=c;ob_y=(a-(c-1));break;
					case 3: ob_x=b;ob_y=c;break;
					case 4: ob_x=c;ob_y=b;break;
					}
				if(bot[ob_x][ob_y]=='O')nbr_O++
				else if(bot[ob_x][ob_y]=='X')nbr_X++
				else s_vide=ob_x+'q'+ob_y
				}
	if(nbr_O==a) win=1
	else if((nbr_X==(a-1))&&(nbr_O==0)){marque=s_vide;win=2}else if(((nbr_O==(a-1))&&(nbr_X==0))&&(marque=='')) marque=s_vide
	else if((nbr_X>=pb)&&(nbr_O==0)){pb=nbr_X;marque_2=s_vide}else if(marque_2=='') marque_2=s_vide
	if(((rg==1)|(rg==2))|(win!='')) break;
	if(rg==3) ed-=nbr_O+nbr_X
		}
	if(win!='') break;
		}
	if(win!='') for(b=1;b<=a;b++){
		switch(rg){
				case 1: ob_x=ob_y=b;break;
				case 2: ob_x=b;ob_y=(a-(b-1));break;
				case 3: ob_x=marque.split('q')[0];ob_y=b;break;
				case 4: ob_x=b;ob_y=marque.split('q')[1];break;
				}
		document.getElementById(ob_x+'q'+ob_y).style.background=bgwl[win];}
	if(win==1){
		window.status=lg_cou[lc]['fin'];alert(lg_cou[lc]['vec']);alert(lg_cou[lc]['fin']);document.location.reload();}
	else if(ed!=0){
			if(marque=='') marque=marque_2;ob=document.getElementById(marque);ob.value=bot[marque.split('q')[0]][marque.split('q')[1]]='X';ed--;ob.disabled="disabled";window.status=lg_cou[lc]['toi']
			if(win==2){
			window.status=lg_cou[lc]['fin'];alert(lg_cou[lc]['ech']);alert(lg_cou[lc]['fin']);document.location.reload()};}if(ed==0){
		window.status=lg_cou[lc]['fin'];alert(lg_cou[lc]['equ']);alert(lg_cou[lc]['fin']);document.location.reload()
		}
		te=0
	}
-->
</script>
<style type="text/css">
<!--
#Layer1 {

}
-->
</style>
</head>
<body onLoad="langue(lc)">

<div style="position:absolute;left:2%;top:2%;z-index:1;">
  <table border="1"  bordercolor="#FFCC66" cellspacing="0" cellpadding="0" style="border: 5 #99CC33 groove">
    <tr bgcolor="#00CC66">
      <td align="right"><form name="bott"><input type="button" name="actu" value="" style="background-color:#CCCCCC" onClick="res()" disabled="disabled">
              <input name="lga" type="button" value="العربية" id="arabe" style="width:80px" onClick="langue('arabe')"><input name="lgf" type="button" id="Francais" value="Francais" style="width:80px" onClick="langue('Francais')"><input name="lge" type="button" value="English" id="English" style="width:80px" onClick="langue('English')"></form></td>
    </tr>
    <tr bgcolor="#CCCCCC">
      <td>
	  <div id="pres" align="left"><form name="prep" onSubmit="return creer_cases()"><table border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td  id="nbr1"></td>
    <td>:  
     <input type="button" name="Submit" value=" « " onClick="pm('m')"><input name="nbr2" type="text" value="4" size="4" maxlength="3"><input type="button" name="Submit" value=" » " onClick="pm('p')"></td>
  </tr>
  <tr>
    <td id="vet1"></td>
    <td>: <input type="button" value="" name="vet2" style="width:85px; background-color:#dddddd" disabled="disabled" onClick="spd('1')"><input type="button" value="" name="vet3" style="width:85px; background-color:#eeeeee" onClick="spd('0')"></td>
  </tr>
<tr><td></td><td><br><input name="dem" type="button" value="" style="width:80" onClick="creer_cases()"><input name="resep" type="reset" value="" style="width:80"></td></tr></table></form></div></td>
    </tr>
    <tr bgcolor="#00CC66">
      <td align="right" style="color:#666666; font-weight:bold; font-style:italic" dir="ltr">   By Khalid Rafik ‹ raf.khalid@gmail.com ›  </td>
    </tr>
  </table></form>
</div>
</body>
</html>

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…