php猜單詞游戲
更新時間:2015年09月29日 16:21:20 投稿:lijiao
這是一款基于php實現(xiàn)的猜單詞小游戲,用的SESSION配合AJAX實現(xià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 "最多可以猜錯 "$_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=">重新開始</a>';
}
?>
這是一款php實現(xiàn)的猜單詞游戲,希望大家可以舉一反三,實現(xiàn)其他小游戲,熟練掌握php編程。
您可能感興趣的文章:
- php實現(xiàn)的中秋博餅游戲之繪制骰子圖案功能示例
- php實現(xiàn)的網(wǎng)頁版剪刀石頭布游戲示例
- php實現(xiàn)貪吃蛇小游戲
- php實現(xiàn)的簡易掃雷游戲?qū)嵗?/a>
- PHP實現(xiàn)扎金花游戲之大小比賽的方法
- jQuery+PHP實現(xiàn)的擲色子抽獎游戲?qū)嵗?/a>
- PHP使用header()輸出圖片緩存實例
- php將圖片文件轉(zhuǎn)換成二進制輸出的方法
- php讀取圖片內(nèi)容并輸出到瀏覽器的實現(xiàn)代碼
- PHP提取數(shù)據(jù)庫內(nèi)容中的圖片地址并循環(huán)輸出
- php實現(xiàn)的中秋博餅游戲之擲骰子并輸出結(jié)果功能詳解
相關(guān)文章
php筆記之:php數(shù)組相關(guān)函數(shù)的使用
本篇文章介紹了,php中數(shù)組相關(guān)函數(shù)的使用。需要的朋友參考下2013-04-04
php中is_null,empty,isset,unset 的區(qū)別詳細介紹
本篇文章介紹了,php中is_null,empty,isset,unset 的區(qū)別詳細分析。需要的朋友參考下2013-04-04
laravel數(shù)據(jù)庫查詢結(jié)果自動轉(zhuǎn)數(shù)組修改實例
這篇文章主要介紹了laravel數(shù)據(jù)庫查詢結(jié)果自動轉(zhuǎn)數(shù)組修改實例,有需要的同學可以借鑒參考下2021-02-02

