Sách mả nguồn Javascript/Trò chơi Hangman
Giao diện
<SCRIPT LANGUAGE="javascript">
var alpha=new Array();
var alpha_index=0;
var bravo=new Array();
var bravo_index=0;
var running=0;
var failnum=0;
var advising=0;
function pick()
{
var choice="";
var blank=0;
for (i=0; i<words[index].length; i++)
{
t=0;
for(j=0; j<=alpha_index; j++)
if(words[index].charAt(i)==alpha[j] || words[index].charAt(i)==alpha[j].toLowerCase()) t=1;
if (t) choice+=words[index].charAt(i)+" ";
else
{
choice+="_ ";
blank=1;
}
}
document.f.word.value=choice;
if (!blank)
{
document.f.tried.value=" === You Win! ===";
document.f.score.value++;
running=0;
}
}
function new_word(form)
{
if(!running)
{
running=1;
failnum=0;
form.lives.value=failnum;
form.tried.value="";
form.word.value="";
index=Math.round(Math.random()*10000) % 100;
alpha[0]=words[index].charAt(0);
alpha[1]=words[index].charAt(words[index].length-1);
alpha_index=1;
bravo[0]=words[index].charAt(0);
bravo[1]=words[index].charAt(words[index].length-1);
bravo_index=1;
pick();
}
else advise("A word is already in play!");
}
function seek(letter)
{
if (!running) advise(".....Click GO to start !");
else
{
t=0;
for (i=0; i<=bravo_index; i++)
{
if (bravo[i]==letter || bravo[i]==letter.toLowerCase()) t=1;
}
if (!t)
{
document.f.tried.value+=letter+" "
bravo_index++;
bravo[bravo_index]=letter;
for(i=0;i<words[index].length;i++)
if(words[index].charAt(i)==letter || words[index].charAt(i)==letter.toLowerCase()) t=1;
if(t)
{
alpha_index++;
alpha[alpha_index]=letter;
}
else failnum++;
document.f.lives.value=failnum;
if (failnum==6)
{
document.f.tried.value="You lose - Try again!";
document.f.word.value=words[index];
document.f.score.value--;
running=0;
}
else pick();
}
else advise("Letter "+letter+" is already used!");
}
}
function advise(msg)
{
if (!advising)
{
advising=-1;
savetext=document.f.tried.value;
document.f.tried.value=msg;
window.setTimeout("document.f.tried.value=savetext; advising=0;",1000);
}
}
var words = new Array("","acrimonious","allegiance","ameliorate","annihilate","antiseptic","articulate","authoritative","benefactor","boisterous","breakthrough","carcinogenic","censorious","chivalrous","collarbone","commendable","compendium","comprehensive","conclusive","conscientious","considerate","deferential","denouement","determinate","diffidence","disruption","earthenware","elliptical","entanglement","escutcheon","extinguish","extradition","fastidious","flamboyant","forethought","forthright","gregarious","handmaiden","honeysuckle","hypocritical","illustrious","infallible","lumberjack","mischievous","mollycoddle","nimbleness","nonplussed","obliterate","obsequious","obstreperous","opalescent","ostensible","pandemonium","paraphernalia","pawnbroker","pedestrian","peremptory","perfunctory","pernicious","perpetrate","personable","pickpocket","poltergeist","precipitous","predicament","preposterous","presumptuous","prevaricate","propensity","provisional","pugnacious","ramshackle","rattlesnake","reciprocate","recrimination","redoubtable","relinquish","remonstrate","repository","reprehensible","resolution","resplendent","restitution","retaliation","retribution","saccharine","salubrious","skulduggery","skyscraper","soothsayer","tearjerker","transcribe","turpentine","unassuming","underscore","undertaker","underwrite","unobtrusive","vernacular","waterfront","watertight");
</SCRIPT>
<FORM NAME="f">
<TABLE BGCOLOR=#C0C0C0 BORDER=1>
<TR>
<TD COLSPAN=4 ALIGN=RIGHT>
Score : <INPUT TYPE=TEXT NAME="score" VALUE="0" onfocus="score.blur();" SIZE=2>
<BR>
Fails (6): <INPUT TYPE=TEXT NAME="lives" VALUE="0" onfocus="lives.blur();" SIZE=2>
</TD>
<TD COLSPAN=7 ALIGN=CENTER>
<INPUT TYPE=TEXT NAME="word" VALUE=" --- Hangman ---" onfocus="word.blur();" SIZE=25>
<BR>
<INPUT TYPE=TEXT NAME="tried" VALUE="Click GO to get a word." onfocus="tried.blur();" SIZE=25>
</TD>
<TD COLSPAN=2 ALIGN=CENTER>
<INPUT TYPE=BUTTON onclick="new_word(this.form);" VALUE=" GO ">
</TD>
</TR>
<TR>
<TD><INPUT TYPE=BUTTON VALUE=" A " onclick="seek('A');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" B " onclick="seek('B');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" C " onclick="seek('C');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" D " onclick="seek('D');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" E " onclick="seek('E');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" F " onclick="seek('F');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" G " onclick="seek('G');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" H " onclick="seek('H');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" I " onclick="seek('I');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" J " onclick="seek('J');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" K " onclick="seek('K');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" L " onclick="seek('L');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" M " onclick="seek('M');"></TD>
</TR>
<TR>
<TD><INPUT TYPE=BUTTON VALUE=" N " onclick="seek('N');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" O " onclick="seek('O');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" P " onclick="seek('P');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" Q " onclick="seek('Q');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" R " onclick="seek('R');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" S " onclick="seek('S');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" T " onclick="seek('T');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" U " onclick="seek('U');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" V " onclick="seek('V');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" W " onclick="seek('W');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" X " onclick="seek('X');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" Y " onclick="seek('Y');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" Z " onclick="seek('Z');"></TD>
</TR>
</TABLE>
</FORM>