- ベストアンサー
文字を隠すゲーム
ゲームを作っています。 ページを更新するたびに20種類のことわざから1つが表示されます。 1文字ずつテーブルのセルにいれていくのですが、 隠れています。文字の隠れてる部分をクリックすると文字が現れるのですが、文字数の半分が現れたら プロンプトで「ことわざを予想してください」と表示。ユーザに答えさせる、というゲームです。 文字数の半分、文字を隠すをイベントハンドラで表現したのですが、 左から半分の文字だけが現れる関数になってしまいました。 ことわざの文字数が半分現れたら… という状況にしたいのですが、行き詰ってます。 コードは以下のとおりです。何かアドバイスをいただけないでしょうか。 <script language="JavaScript"> <!-- if (document.getElementById){ document.write ("<style type='text/cs\s'>"); document.write ("<!--"); document.write("span{color:lavender;background-color:lavender;"); document.write ("border:2px ridge ivory;cursor:hand;cursor:pointer;}"); document.write ("-->"); document.write ("</style>"); } function setEvent(){ if (!document.getElementById) return; var elms = document.getElementsByTagName("span"); for(i = 0; i < elms.length/2; i++){ elms[i].onclick=show; } } function show(e){ if(window.event) obj =window.event.srcElement; else if(e) obj = e.currentTarget; obj.style.backgroundColor="ivory"; obj.style.color="black"; } //--> </script>
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは 表示部が無い様でそのままコピペしても真っ白だったのでちょっと創ってみました(HTML仕様です)(^^) 参考になればいいのですが・・・ テーブル部と諺の数は意図的に減らしてるので増やしてくださいね <body onLoad="setText()"> <SCRIPT language="JavaScript"> m = 0, x = 0, y = 0; str = new Array(); adv = new Array(); hit = new Array(); hit[0] = 1; adv[0] = '棚から牡丹餅'; hit[1] = 1; adv[1] = '猿も木から落ちる'; hit[2] = 1; adv[2] = '石の上にも三年'; hit[3] = 1; adv[3] = '光陰矢のごとし'; hit[4] = 1; adv[4] = '犬も歩けば棒に当る'; for(i=0; i<=hit.length - 1; i++) { m += hit[i]; } n = Math.floor(Math.random() * m); n++; for(i=0; i<=hit.length - 1; i++) { x = y; y += hit[i]; if(x<n && n<=y) str = adv[i]; } function setText() { if(document.all)document.all["ID"].innerHTML=str; document.all["ID"].style.color = "#ffffff"; document.all["ID"].style.display = "none"; } //--> <!-- cnt=0; n = str.length/2; function strFade(num,ID) { document.all[ID].style.color = "#000000"; document.all[ID].innerHTML=(str.charAt(num)); cnt++; if(cnt >= n) { proverb = prompt("諺を予想してください",""); if(proverb == str) alert("正解!!"); else alert("残念!!もう一文字開けてみてください"); } } //--> </SCRIPT> <DIV id="ID"></DIV><BR> <form name="form"> <table border="1"> <tr height="20"> <td width="20" onClick="strFade('0','ID0')" style="cursor:hand;"><span id="ID0"> </span></td> <td width="20" onClick="strFade('1','ID1')" style="cursor:hand;"><span id="ID1"> </span></td> <td width="20" onClick="strFade('2','ID2')" style="cursor:hand;"><span id="ID2"> </span></td> <td width="20" onClick="strFade('3','ID3')" style="cursor:hand;"><span id="ID3"> </span></td> <td width="20" onClick="strFade('4','ID4')" style="cursor:hand;"><span id="ID4"> </span></td> <td width="20" onClick="strFade('5','ID5')" style="cursor:hand;"><span id="ID5"> </span></td> </tr></table> </form>
その他の回答 (1)
- ANASTASIAK
- ベストアンサー率19% (658/3306)
そもそも論で恐縮ですが・・・ お考えの発想では、隠されている文字のところをマウスで ドラッグすると正解が見えてしまいます。 各文字を画像化してダミー画像と差し替えるようにするとか するのがよいのではと思いますが。
お礼
助言ありがとうございます。 確かにその通りです。
お礼
回答ありがとうございました。 少し、質問の仕方が悪かったようなので、新しい質問を立ち上げます。 ご協力ありがとうございました。
補足
回答ありがとうございます。 javascriptの一部しかのせずに、わかりにくい質問になっていたことに気づきました。すみません。それにもかかわらず回答ありがとうございます。 回答者さんのプログラムをコピーしたのですが、うまくいきませんでした。 これは、回答者さんのコンピュータでは動きました?? ちなみに現時点での僕のプログラムは以下のとおりです。 ↓ <!DOCTYPE html PUBLIC "-//w3c//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <title> Game </title> <script language="JavaScript"> <!-- if (document.getElementById){ document.write ("<style type='text/cs\s'>"); document.write ("<!--"); document.write ("span{color:lavender;background-color:lavender;"); document.write ("border:2px ridge ivory;cursor:hand;cursor:pointer;}"); document.write ("-->"); document.write ("</style>"); } function setEvent(){ if (!document.getElementById) return; var elms = document.getElementsByTagName("span"); for(i = 0; i < elms.length/2; i++){ elms[i].onclick=show; } } function show(e){ if(window.event) obj =window.event.srcElement; else if(e) obj = e.currentTarget; obj.style.backgroundColor="ivory"; obj.style.color="black"; } function hide(e){ if(window.event) obj =window.event.srcElement; else if(e) obj = e.currentTarget; obj.style.backgroundColor="lavender"; obj.style.color="lavender"; } //--> </script> </head> <body onload="setEvent();"> <script type ="text/javascript"> <!-- var a = Math.random() *100 ; var b = Math.ceil(a); switch(b%20){ case 0 : string1 = new String("A bad cause requires many words."); break; case 1 : string1 = new String("A book is like a garden carried in the pocket."); break; case 2 : string1 = new String("A bird in the hand is worth two in a bush."); break; case 3 : string1 = new String("A broken hand works, but not a broken heart."); break; case 4 : string1 = new String("A cat has nine lives."); break; case 5 : string1 = new String("Friendship is a furrow in the sand."); break; case 6 : string1 = new String("Sweet is the wine but sour is the payment."); break; case 7 : string1 = new String("Mankind fears an evil man but heaven does not."); break; case 8 : string1 = new String("May your every wish be granted."); break; case 9 : string1 = new String("Necessity never made a good bargain."); break; case 10 : string1 = new String("No man limps because another is hurt."); break; case 11 : string1 = new String("Praise the young and they will blossom."); break; case 12: string1 = new String("Procrastination is the thief of time."); break; case 13: string1 = new String("Speak the truth, but leave immediately after."); break; case 14: string1 = new String("The comforter's head never aches."); break; case 15: string1 = new String("The hole is more honorable than the patch"); break; case 16: string1 = new String("Youth does not mind where it sets its foot."); break; case 17: string1 = new String("Wonder is the beginning of wisdom."); break; case 18: string1 = new String("Witches and harlots come out at night."); break; case 19: string1 = new String("A bad cause requires many words."); break; } document.write("<table border=4>") document.write("<tr>"); for(var i=0;i<string1.length;i++) { document.write("<td>","<span>" +string1[i]+"</td>","</span>"); } for(i;i<50;i++) { document.write("<td> </td>"); } document.write("</tr>","<tr>"); for(i=0;i<50;i++) { document.write("<td> </td>"); } document.write( "</tr>", "</table>"); --> </script> </body> </html>