php猜單詞游戲
更新時(shí)間:2015年09月29日 16:21:20 投稿:lijiao
這是一款基于php實(shí)現(xiàn)的猜單詞小游戲,用的SESSION配合AJAX實(shí)現(xiàn)的,感興趣的小伙伴可以參考一下。
直接復(fù)制本地運(yùn)行就可以了
<?php
session_start();
header("Content-type:text/html;charset=utf-");
$url='http://'$_SERVER['HTTP_HOST']$_SERVER['PHP_SELF'];
function get_word(){
$wordtext="Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution Neither the name of Yii Software LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE";
$words=preg_split("/[\s,]+/",$wordtext);
do{
$i=rand(,count($words)-);
$word=strtoupper($words[$i]);
}while(strlen($word)< || !ctype_alpha($word));
return $word;
}
function guess($word){
return str_repeat('_',strlen($word));
}
function output($word){
$str='';
for($i=;$i<strlen($word);$i++){
$str=$word[$i]" ";
}
return rtrim($str);
}
if(isset($_GET['op']) && $_GET['op']=='start'){
$k=$_GET['k'];
$_SESSION['num']=$k;
exit;
}
if(isset($_GET['restart']) && $_GET['restart']==){
session_unset();
header("location:$url");
exit;
}
if(!isset($_SESSION['word'])){
$word=get_word();
$_SESSION['word']=$word;
}else{
$word=$_SESSION['word'];
}
$guessguess_word=guess($word);
if(isset($_GET['op']) && $_GET['op']=='ajax'){
$k=$_GET['k'];
$re='';
if(!isset($_SESSION['already'])){
$_SESSION['already']=guess($_SESSION['word']);
}
if(!isset($_SESSION['count'])){
$_SESSION['count']=;
}
if(strpos($_SESSION['word'],$k)!==false){
for($i=;$i<strlen($_SESSION['word']);$i++){
if($_SESSION['word'][$i]!=$k){
$re='_';
}else{
$re=$_SESSION['word'][$i];
}
}
for($i=;$i<strlen($_SESSION['word']);$i++){
if($_SESSION['already'][$i]=='_'){
$_SESSION['already'][$i]=$re[$i];
}
}
}else{
$_SESSION['count']+=;
}
$return=output($_SESSION['already']);
if($_SESSION['count'] <= $_SESSION['num']){
if($_SESSION['already']==$_SESSION['word']){
$return="|";
}else{
$return="|";
}
}else{
$return="|";
}
echo $return;
exit;
}
?>
<script>
function Ajax(recvType){
var aj=new Object();
ajrecvType=recvType ? recvTypetoUpperCase() : 'HTML';
ajtargetUrl='';
ajsendString='';
ajresultHandle=null;
ajcreateXMLHttpRequest=function(){
var xmlHttp = false;
if(windowXMLHttpRequest){
xmlHttp = new XMLHttpRequest();
}else if(windowActiveXObject){
try{
xmlHttp = new ActiveXObject("MsxmlXMLHTTP");
}catch(error){
try{
xmlHttp = new ActiveXobject("MicrosoftXMLHttp");
}catch(error){
xmlHttp = false;
}
}
}
return xmlHttp;
}
ajXMLHttpRequest=ajcreateXMLHttpRequest();
ajprocessHandle=function(){
if(ajXMLHttpRequestreadyState == ){
if(ajXMLHttpRequeststatus == ){
if(ajrecvType=="HTML"){
ajresultHandle(ajXMLHttpRequestresponseText);
}else if(ajrecvType=="XML"){
ajresultHandle(ajXMLHttpRequestresponseXML);
}
}
}
}
ajget=function(targetUrl, resultHandle){
ajtargetUrl=targetUrl;
if(resultHandle!=null){
ajXMLHttpRequestonreadystatechange=ajprocessHandle;
ajresultHandle=resultHandle;
}
if(windowXMLHttpRequest){
ajXMLHttpRequestopen("get", ajtargetUrl);
ajXMLHttpRequestsend(null);
}else{
ajXMLHttpRequestopen("get", ajtargetUrl, true);
ajXMLHttpRequestsend();
}
}
return aj;
}
</script>
<script>
var ajax=Ajax();
function select(v){
documentgetElementById(v)styledisplay='none';
ajaxget("guessphp?op=ajax&k="+v, function(r){
var t=rsplit("|");
documentgetElementById('word')innerHTML=t[];
if(t[] == ){
documentgetElementById('select')styledisplay='none';
documentgetElementById('result')innerHTML='成功';
}else if(t[] == ){
documentgetElementById('select')styledisplay='none';
documentgetElementById('result')innerHTML='失敗';
}
});
}
function check(v){
ajaxget("guessphp?op=start&k="+v, function(r){
windowlocationhref="<?php echo $url;?>";
});
}
</script>
<?php
if(!isset($_SESSION['num'])){
echo '<input type="radio" onclick="check();" /> easy: wrong <br />';
echo '<input type="radio" onclick="check();" /> normal: wrong <br />';
echo '<input type="radio" onclick="check();" /> hard: wrong <br />';
}else{
//echo $word;
echo "最多可以猜錯(cuò) "$_SESSION['num']" 次";
echo "<br />";
echo "<div id='word'>";
echo output($guess_word);
echo "</div>";
echo '<br />';
echo '<div id="select">';
for($i=ord('A');$i<=ord('Z');++$i){
echo "\n";
$letter=chr($i);
echo '<span id="'$letter'" style="display:"><a href="javascript:void();" onclick="select(\''$letter'\');">'$letter'</a></span>';
}
echo '</div>';
echo '<br />';
echo '<br />';
echo '<div id="result"></div>';
echo '<br />';
echo '<br />';
echo '<a href="'$url'?restart=">重新開(kāi)始</a>';
}
?>
這是一款php實(shí)現(xiàn)的猜單詞游戲,希望大家可以舉一反三,實(shí)現(xiàn)其他小游戲,熟練掌握php編程。
您可能感興趣的文章:
- php實(shí)現(xiàn)的中秋博餅游戲之繪制骰子圖案功能示例
- php實(shí)現(xiàn)的網(wǎng)頁(yè)版剪刀石頭布游戲示例
- php實(shí)現(xiàn)貪吃蛇小游戲
- php實(shí)現(xiàn)的簡(jiǎn)易掃雷游戲?qū)嵗?/a>
- PHP實(shí)現(xiàn)扎金花游戲之大小比賽的方法
- jQuery+PHP實(shí)現(xiàn)的擲色子抽獎(jiǎng)游戲?qū)嵗?/a>
- PHP使用header()輸出圖片緩存實(shí)例
- php將圖片文件轉(zhuǎn)換成二進(jìn)制輸出的方法
- php讀取圖片內(nèi)容并輸出到瀏覽器的實(shí)現(xiàn)代碼
- PHP提取數(shù)據(jù)庫(kù)內(nèi)容中的圖片地址并循環(huán)輸出
- php實(shí)現(xiàn)的中秋博餅游戲之?dāng)S骰子并輸出結(jié)果功能詳解
相關(guān)文章
php原生數(shù)據(jù)庫(kù)分頁(yè)的代碼實(shí)例
在本篇內(nèi)容中小編給大家分享了關(guān)于php原生數(shù)據(jù)庫(kù)分頁(yè)的代碼實(shí)例的簡(jiǎn)單介紹,需要的朋友們跟著學(xué)習(xí)下。2019-02-02
淺談PHP鏈表數(shù)據(jù)結(jié)構(gòu)(單鏈表)
下面小編就為大家?guī)?lái)一篇淺談PHP鏈表數(shù)據(jù)結(jié)構(gòu)(單鏈表)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06
PHP+MySQL實(shí)現(xiàn)對(duì)一段時(shí)間內(nèi)每天數(shù)據(jù)統(tǒng)計(jì)優(yōu)化操作實(shí)例
這篇文章主要介紹了PHP+MySQL實(shí)現(xiàn)對(duì)一段時(shí)間內(nèi)每天數(shù)據(jù)統(tǒng)計(jì)優(yōu)化操作,結(jié)合具體實(shí)例形式分析了php針對(duì)mysql查詢(xún)統(tǒng)計(jì)相關(guān)優(yōu)化操作技巧,需要的朋友可以參考下2018-03-03
laravel 修改記住我功能的cookie保存時(shí)間的方法
今天小編就為大家分享一篇laravel 修改記住我功能的cookie保存時(shí)間的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10
Apache+php+mysql在windows下的安裝與配置(圖文)
2008-02-02

