php猜单词游戏

 更新时间:2015年09月29日 16:21:20   投稿:lijiao   我要评论
这是一款基于php实现的猜单词小游戏,用的SESSION配合AJAX实现的,感兴趣的小伙伴可以参考一下。

直接复制本地运行就可以了

<?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实现的猜单词游戏,希望大家可以举一反三,实现其他小游戏,熟练掌握php编程。

相关文章

  • PHP中常见的错误与异常处理总结大全

    PHP中常见的错误与异常处理总结大全

    任何程序员在开发时都可能遇到过一些失误,或其他原因造成错误的发生。当然,用户如果不愿意或不遵循应用程序的约束,也会在使用时引起一些错误发生。下面这篇文章主要给大家介绍了关于PHP中常见的错误与异常处理,需要的朋友可以参考下,
    2017-08-08
  • PHP 表单提交及处理表单数据详解及实例

    PHP 表单提交及处理表单数据详解及实例

    本文章向大家介绍表单的一些知识点,然后介绍PHP是如何接收表单数据并如何处理表单数据,文章以一个发送邮件的表单实例来向大家讲解表单提交及php如何处理表单数据,需要的朋友可以参考下
    2016-12-12
  • PHP单文件和多文件上传实例

    PHP单文件和多文件上传实例

    本篇文章给大家详细分析了PHP实现单文件上传和多文件上传的代码以及问题解决方案,一起学习参考下。
    2017-12-12
  • php实现微信支付之退款功能

    php实现微信支付之退款功能

    这篇文章主要为大家详细介绍了php实现微信支付之退款功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间

    PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间

    PHP 在 5.3.0 以后的版本开始支持命名空间。什么是命名空间?从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。
    2014-06-06
  • Laravel关联模型中过滤结果为空的结果集(has和with区别)

    Laravel关联模型中过滤结果为空的结果集(has和with区别)

    这篇文章主要介绍了Laravel关联模型中过滤结果为空的结果集(has和with区别),需要的朋友可以参考下
    2018-10-10
  • 浅谈PHP中try{}catch{}的使用方法

    浅谈PHP中try{}catch{}的使用方法

    下面小编就为大家带来一篇浅谈PHP中try{}catch{}的使用方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • smarty的section嵌套循环用法示例

    smarty的section嵌套循环用法示例

    这篇文章主要介绍了smarty的section嵌套循环用法,结合简单实例形式分析了Smarty使用section进行嵌套循环操作的实现技巧,需要的朋友可以参考下
    2016-05-05
  • CI框架验证码CAPTCHA辅助函数用法实例

    CI框架验证码CAPTCHA辅助函数用法实例

    这篇文章主要介绍了CI框架验证码CAPTCHA辅助函数用法,以实例形式详细讲述了基于CAPTCHA辅助函数实现验证码的方法,需要的朋友可以参考下
    2014-11-11
  • php获取访问者IP地址汇总

    php获取访问者IP地址汇总

    在很我的时候我们需要得到用户的真实IP地址,例如,日志记录,地理定位,将用户信息,网站数据分析等,其实获取IP地址很简单$_SERVER[\'REMOTE_ADDR\']就可以了。下面我们就来给大家汇总一下常用的几种获取IP地址的方法。
    2015-04-04

最新评论