You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
473 lines
11 KiB
473 lines
11 KiB
/*This code was originally based on code by
|
|
Husain Limdiyawala(MSc IT DA-IICT)*/
|
|
|
|
|
|
|
|
$(document).ready(function () {
|
|
|
|
|
|
});
|
|
|
|
|
|
//Global Variables
|
|
var totblocks=0;
|
|
var data="";
|
|
var currentblock=0;
|
|
var position=0;
|
|
var lastposition = new Array();
|
|
var randomno=0;
|
|
var tots= new Array();
|
|
var l=0;
|
|
var srcsnake=new Array(4);
|
|
var destsnake=new Array(4);
|
|
|
|
var ladsrc = new Array(3);
|
|
var laddest = new Array(3);
|
|
var quest = new Array(); //available questions along with multiple answers
|
|
var COR_answered = new Array(); //record all questions (along with answers) the user responded CORRECTLY
|
|
var WRO_answered = new Array(); //record all questions (along with answers) the user responded WRONGLY
|
|
|
|
|
|
|
|
//var door = new Array(1)
|
|
|
|
var user = new Array();
|
|
|
|
//var pythons = new Array(1);
|
|
|
|
//Constract table with questions and answers and pick question to display
|
|
|
|
quest[0]="Spell 1";
|
|
quest[1]="one";
|
|
quest[2]="two";
|
|
quest[3]="three";
|
|
quest[4]="Spell 2";
|
|
quest[5]="two";
|
|
quest[6]="three";
|
|
quest[7]="four";
|
|
quest[8]="Spell 3";
|
|
quest[9]="three";
|
|
quest[10]="two";
|
|
quest[11]="four";
|
|
quest[12]="Spell 4";
|
|
quest[13]="four";
|
|
quest[14]="three";
|
|
quest[15]="one";
|
|
z=0;
|
|
for (z=0;quest[z]!=null;z++);
|
|
allQuest=z/4;
|
|
|
|
|
|
function selectQuest(all)
|
|
{
|
|
pickOne = Math.floor((Math.random() * all));
|
|
return pickOne;
|
|
}
|
|
|
|
|
|
|
|
|
|
//The Below Function will hide all the snakes
|
|
|
|
function hideAll()
|
|
{
|
|
document.getElementById("img1").style.display = "none";
|
|
document.getElementById("img2").style.display = "none";
|
|
document.getElementById("img3").style.display = "none";
|
|
document.getElementById("img4").style.display = "none";
|
|
|
|
document.getElementById("lad1").style.display = "none";
|
|
document.getElementById("lad2").style.display = "none";
|
|
document.getElementById("lad3").style.display = "none";
|
|
}
|
|
|
|
|
|
//The Below Function will Render The Main Board
|
|
|
|
function paintBoard(a)
|
|
{
|
|
totblocks = (a*a);
|
|
if((a*a) % 2 == 0)
|
|
{
|
|
currentblock = (a*a) - a + 1;
|
|
for(j=0;j<(a/2);j++)
|
|
{
|
|
|
|
for(i=0;i<a;i++)
|
|
{
|
|
data += "<div class='blocks' id='" + currentblock + "'>" + currentblock + "</div>";
|
|
currentblock++;
|
|
}
|
|
currentblock -= (a+1);
|
|
|
|
for(i=0;i<a;i++)
|
|
{
|
|
data += "<div id='" + currentblock + "' class ='blocks'>" + currentblock + "</div>";
|
|
currentblock--;
|
|
}
|
|
currentblock -= (a-1);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
|
|
currentblock = (a*a);
|
|
for(j=0;j<(a/2);j++)
|
|
{
|
|
|
|
|
|
for(i=0;i<a;i++)
|
|
{
|
|
data += "<div class='blocks' id='" + currentblock + "'>" + currentblock + "</div>";
|
|
currentblock--;
|
|
}
|
|
|
|
currentblock -= (a-1);
|
|
|
|
if(currentblock < 2)
|
|
break;
|
|
|
|
for(i=0;i<a;i++)
|
|
{
|
|
data += "<div id='" + currentblock + "' class ='blocks'>" + currentblock + "</div>";
|
|
currentblock++;
|
|
}
|
|
currentblock -= (a+1);
|
|
}
|
|
}
|
|
document.getElementById("cont").style.width = (a*52+52) + "px"
|
|
|
|
|
|
document.getElementById("cont").innerHTML = data;
|
|
$("#cont").slideDown("slow");
|
|
$("#cont").effect("shake",3000);
|
|
$("img:hidden").fadeIn(5000);
|
|
|
|
if(a == 6)
|
|
{
|
|
|
|
|
|
registerSnake(158,196,"img1",14,3,0);
|
|
registerSnake(62,183,"img2",27,24,1);
|
|
registerSnake(175,18,"img3",18,4,2);
|
|
registerSnake(10,45,"img4",32,23,3);
|
|
|
|
registerLadder(27,132,"lad1",28,34,0);
|
|
registerLadder(90,22,"lad2",19,30,1);
|
|
registerLadder(179,137,"lad3",2,16,2);
|
|
|
|
//registerDoor("5",5,0);
|
|
//registerDoor("21",21,1)
|
|
|
|
//registerPython("15",15,0)
|
|
}
|
|
|
|
|
|
else if(a == 8)
|
|
{
|
|
|
|
|
|
registerSnake(300,380,"img1",44,29,0);
|
|
registerSnake(180,550,"img2",51,46,1);
|
|
registerSnake(290,50,"img3",41,40,2);
|
|
registerSnake(500,280,"img4",27,22,3);
|
|
|
|
registerLadder(350,515,"lad1",19,35,0);
|
|
registerLadder(180,230,"lad2",43,54,1);
|
|
registerLadder(80,350,"lad3",53,60,2);
|
|
|
|
//registerDoor("14",14,0);
|
|
//registerDoor("26",26,1)
|
|
|
|
//registerPython("32",32,0)
|
|
}
|
|
|
|
|
|
}
|
|
|
|
//The below Function will simulate throwing of a dice
|
|
|
|
function throwDice(i)
|
|
{
|
|
|
|
randomno = Math.floor((Math.random() * 6)) + 1;
|
|
document.getElementById("diceimg").src = "images/dice_" + randomno + ".PNG";
|
|
document.getElementById("diceimg").style.display = "block";
|
|
if(lastposition[i]>0)
|
|
{
|
|
document.getElementById(lastposition[i]).style.background = "url(images/square52.png)";
|
|
|
|
}
|
|
tots[i] += randomno;
|
|
|
|
if(totblocks - tots[i] >= 0)
|
|
{
|
|
|
|
lastposition[i] = tots[i];
|
|
document.getElementById(tots[i]).style.background = "url(images/pawn1.png)";
|
|
}
|
|
else
|
|
{
|
|
|
|
tots[i] -= randomno;
|
|
document.getElementById(tots[i]).style.background = "url(images/pawn1.png)";
|
|
}
|
|
|
|
}
|
|
|
|
//The below Function Checks The Snake Biting for a user
|
|
|
|
function snakescheck(k)
|
|
{
|
|
i=0;
|
|
|
|
for(i=0;i<=srcsnake.length;i++)
|
|
{
|
|
|
|
if(srcsnake[i] == tots[k])
|
|
{
|
|
alert("Ωχ! Σε τσίμπησε φίδι στο τετράγωνο " + srcsnake[i] + " και θα πρέπει να γυρίσεις στο τετράγωνο " + destsnake[i] + ", εκτός κι αν απαντήσεις σωστά στην ερώτηση που ακολουθεί.");
|
|
document.getElementById(destsnake[i]).style.background = "url(images/pawn1.png)";
|
|
document.getElementById(tots[k]).style.background = "url(images/square52.png)";
|
|
lastposition[k] = destsnake[i];
|
|
tots[k] = destsnake[i];
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(!checkWin(k))
|
|
alert("???d?se?!S???a??t???a!");
|
|
}
|
|
|
|
//The below function checks the ladders for a user
|
|
|
|
function laddercheck(k)
|
|
{
|
|
i=0;
|
|
|
|
for(i=0;i<=ladsrc.length;i++)
|
|
{
|
|
|
|
if(ladsrc[i] == tots[k])
|
|
{
|
|
alert("Υπάρχει μια σκάλα στο τετράγωνο " + ladsrc[i] + " και θα σας οδηγήσει κατευθείαν στο τετράγωνο " + laddest[i] +"αν απαντήσεις σωστά στην ερώτηση που ακολουθεί.");
|
|
document.getElementById(laddest[i]).style.background = "url(images/pawn1.png)";
|
|
document.getElementById(tots[k]).style.background = "url(images/square52.png)";
|
|
lastposition[k] = laddest[i];
|
|
tots[k] = laddest[i];
|
|
break;
|
|
}
|
|
}
|
|
if(!checkWin(k))
|
|
alert("You have won!");
|
|
}
|
|
|
|
//The below function checks the existence of doors
|
|
|
|
/*function doorcheck(k)
|
|
{
|
|
i=0;
|
|
|
|
for(i=0;i<=door.length;i++)
|
|
{
|
|
|
|
if(door[i] == tots[k])
|
|
{
|
|
|
|
|
|
var randomdoor = Math.floor((Math.random() * totblocks)) + 1;
|
|
alert("Magic Door Entered!! You are redirected to " + randomdoor);
|
|
document.getElementById(randomdoor).style.background = "url(images/pawn.png) #000000";
|
|
document.getElementById(tots[k]).style.background = "url(images/door.png) #000000";
|
|
lastposition[k] = randomdoor;
|
|
tots[k] = randomdoor;
|
|
|
|
}
|
|
}
|
|
if(!checkWin(k))
|
|
alert("You Have Won!!");
|
|
} */
|
|
|
|
//The below Function checks for pythons
|
|
|
|
function pythoncheck(k)
|
|
{
|
|
i=0;
|
|
|
|
for(i=0;i<pythons.length;i++)
|
|
{
|
|
|
|
if(pythons[i] == tots[k])
|
|
{
|
|
|
|
|
|
alert("You have been eaten up by a python.Your game is over");
|
|
document.getElementById(tots[k]).style.background = "url(images/csnake.gif) #000000";
|
|
lastposition[k] = null;
|
|
tots[k] = null;
|
|
break;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
//The below function will register a snake
|
|
|
|
function registerSnake(tp,lft,dv,src,dest,i)
|
|
{
|
|
document.getElementById(dv).style.top = tp + "px";
|
|
document.getElementById(dv).style.left = lft + "px";
|
|
srcsnake[i] = src;
|
|
destsnake[i] = dest;
|
|
}
|
|
|
|
//The below function will register a ladder.
|
|
|
|
function registerLadder(tp,lft,dv,src,dest,i)
|
|
{
|
|
document.getElementById(dv).style.top = tp + "px";
|
|
document.getElementById(dv).style.left = lft + "px";
|
|
ladsrc[i] = src;
|
|
laddest[i] = dest;
|
|
}
|
|
|
|
//The below function will register a door.
|
|
|
|
/*function registerDoor(dv,srcc,i)
|
|
{
|
|
document.getElementById(dv).style.background = "url(images/door.png) #000000";
|
|
door[i] = srcc;
|
|
|
|
}
|
|
|
|
//The below function will register a python.
|
|
function registerPython(dv,srcc,i)
|
|
{
|
|
document.getElementById(dv).style.background = "url(images/csnake.gif) #000000";
|
|
pythons[i] = srcc;
|
|
|
|
}
|
|
*/
|
|
|
|
|
|
//The below function checks the change in the boardtype selection combobox
|
|
|
|
function selectBoard()
|
|
{
|
|
totblocks=0;
|
|
data="";
|
|
currentblock=0;
|
|
position=0;
|
|
|
|
hideAll();
|
|
if(document.getElementById("boardtype").value != null)
|
|
{
|
|
paintBoard(parseInt(document.getElementById("boardtype").value));
|
|
}
|
|
}
|
|
|
|
//The below function checks the change in the player selection combobox
|
|
|
|
function selectPlayer()
|
|
{
|
|
|
|
if(document.getElementById("players").value != null)
|
|
{
|
|
|
|
user[document.getElementById("players").value-1] = 0;
|
|
tots[document.getElementById("players").value-1] = 0;
|
|
lastposition[document.getElementById("players").value-1] = 0;
|
|
for(var j=0;j < lastposition.length;j++)
|
|
{
|
|
lastposition[j] = 0;
|
|
tots[j] = 0;
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
//The below function starts the play
|
|
|
|
function play()
|
|
{
|
|
if(tots[l] != null)
|
|
{
|
|
//...&&(quest[0]!=NULL)
|
|
disableField();
|
|
document.getElementById("status").innerHTML = "<ul class='nodis'><li>O Paiktis " + (l+1) + " </li><li>brisketai sto tetragwno " + tots[l] + "</li><li></li></ul>";
|
|
//
|
|
Question();
|
|
document.getElementById("status").innerHTML = "<ul class='nodis'><li>O Paiktis " + (l+1) + " </li><li>vrisketai sto tetragwno " + tots[l] + "</li></ul>";
|
|
}
|
|
else
|
|
document.getElementById("status").innerHTML = "<ul class='nodis'><li>Molis exases...</li></ul>";
|
|
|
|
if(l == lastposition.length-1)
|
|
l = 0;
|
|
else
|
|
l++;
|
|
|
|
|
|
}
|
|
|
|
//The below function regulates the play
|
|
|
|
function doit(i)
|
|
{
|
|
|
|
throwDice(i);
|
|
|
|
if(checkWin(i))
|
|
{
|
|
|
|
//doorcheck(i);
|
|
snakescheck(i);
|
|
laddercheck(i);
|
|
//pythoncheck(i);
|
|
}
|
|
else
|
|
alert("ÏëïêëÞñùóåò ôçí ðßóôá, óõã÷áñçôÞñéá!!!");
|
|
}
|
|
|
|
//The below function checks whether the player has won or not
|
|
|
|
function checkWin(i)
|
|
{
|
|
if(tots[i] == totblocks)
|
|
return false;
|
|
else
|
|
return true;
|
|
|
|
}
|
|
|
|
//The below function will disable both the combobox
|
|
|
|
function disableField()
|
|
{
|
|
document.getElementById("players").disabled = "disabled";
|
|
document.getElementById("boardtype").disabled = "disabled";
|
|
|
|
}
|
|
|
|
function Question()
|
|
{
|
|
picked=selectQuest(allQuest);
|
|
alert("Randomly selected number:" +picked);
|
|
Q1=prompt(quest[picked*4],"Απάντηση");
|
|
if (Q1==quest[picked*4+1])
|
|
{
|
|
alert("Σωστά!")
|
|
doit(l);
|
|
|
|
COR_answered.concat(quest.splice(picked*4,4));
|
|
}
|
|
else
|
|
{
|
|
alert("Η απάντηση δεν ήταν σωστή. Χάνεις τη σειρά σου για αυτό το γύρο!")
|
|
//document.getElementById("playbtn").disabled = "disabled";
|
|
WRO_answered.concat(quest.splice(picked*4,4));
|
|
}
|
|
//remove question and answers from available questions - (thus not allowing to have a Repeated question) ---XOXOXO
|
|
allQuest--;
|
|
}
|