当前位置: 首页 > news >正文

game.php403,wm_game_demining.php

require_once('../../../init.php');

require_once('module.php');

function deminingInit(){

//初始化埋藏的星星生成星星地图

$randomRowsCols = mt_rand(10,15);

$randomBoomNum = mt_rand(12,20);

$rows = $randomRowsCols;//get rows

$cols = $randomRowsCols;//get cols

$num = $randomBoomNum;//get num

$data = array();//data initialization

for($i=0;$i

for($j=0;$j

$data["data".$i."_".$j] = 0;//set mine with null

$data["open".$i."_".$j] = 0;//set node with close

}

}

$i=0;//reset the index,and set the mines(Random setting)

while($i < $num){//number of mine

$r = mt_rand(0,$rows - 1);//row's index

$c = mt_rand(0,$cols - 1);//col's index

if($data["data".$r."_".$c] == 0){//if not a mine

$data["data".$r."_".$c] = 100;//set the node with a mine

$i++;

}

}

for($i=0;$i

for($j=0;$j

if($data["data".$i."_".$j] == 100)continue;

//is not a mine , set number of adjacent mines

$cnt = 0;

if($i - 1 >= 0 && $j - 1 >= 0 && $data["data".($i - 1)."_".($j - 1)] == 100){

$cnt++;//upper left

}

if($i - 1 >= 0 && $data["data".($i - 1)."_".$j] == 100){

$cnt++;//left

}

if($i - 1 >= 0 && $j + 1 < $cols && $data["data".($i - 1)."_".($j + 1)] == 100){

$cnt++;//lower left

}

if($j - 1 >= 0 && $data["data".$i."_".($j - 1)] == 100){

$cnt++;//upper

}

if($j + 1 < $cols && $data["data".$i."_".($j + 1)] == 100){

$cnt++;//lower

}

if($i + 1 < $rows && $j - 1 >= 0 && $data["data".($i + 1)."_".($j - 1)] == 100){

$cnt++;//upper right

}

if($i + 1 < $rows && $data["data".($i + 1)."_".$j] == 100){

$cnt++;//right

}

if($i + 1 < $rows && $j + 1 < $cols && $data["data".($i + 1)."_".($j + 1)] == 100){

$cnt++;//lower right

}

$data["data".$i."_".$j] = $cnt;//set number

}

}

$randomMapType = mt_rand(1,17);

$mapCreatTime = time();

$wmDeminingData = array('mapType'=>$randomMapType,'creatTime'=>$mapCreatTime,'map'=>$data,'rows'=>$rows,'cols'=>$cols,'boomNum'=>$num,'boomedNum'=>0,'player'=>array());

wmDeminingGameWrite($wmDeminingData);

//echo json_encode($data);

}

function wmDeminingGameWrite($data){

file_put_contents(dirname(__FILE__).'/DeminingGame.com.php','<?php die; ?>'.serialize($data),LOCK_EX);

}

function startWmDeminingGame(){

if(!file_exists(dirname(__FILE__).'/DeminingGame.com.php')){//判断数据文件是否存在

deminingInit();

echo json_encode(wxportWmDeminingGameMap());

}else{

echo json_encode(wxportWmDeminingGameMap());

}

}

function wxportWmDeminingGameMap(){

$wmExportDeminingGameData=unserialize(ltrim(file_get_contents(dirname(__FILE__).'/DeminingGame.com.php'),'<?php die; ?>'));//获取信息

$wmExportMap = array();

for($i=0; $i

for($j=0; $j

if($wmExportDeminingGameData['map']['open'.$i.'_'.$j]==1){

$exportName = 'data'.$i.'_'.$j;

$wmExportMap[$exportName] = $wmExportDeminingGameData['map']['data'.$i.'_'.$j];

}

}

}

$wmExportDeminingGameMap = array('mapType'=>$wmExportDeminingGameData['mapType'],'creatTime'=>$wmExportDeminingGameData['creatTime'],'map' => $wmExportMap ,'rows'=>$wmExportDeminingGameData['rows'],'cols'=>$wmExportDeminingGameData['cols'],'player'=>$wmExportDeminingGameData['player']);

return $wmExportDeminingGameMap;

}

function wmCheckDemNode($wmClickNode){

// $wmCaptcha = $_POST['captcha'];

$Ticket = strip_tags($_POST['Ticket']);

$Randstr = strip_tags($_POST['Randstr']);

$UserIP = getIp();

if(!wmCaptchaCheck($Ticket,$Randstr,$UserIP)){

$wmNodeData = array('code'=>403);//验证码失败

echo json_encode($wmNodeData);

return false;

}

$DB = MySql::getInstance();

$emailAddr = strip_tags($_POST['email']);

// $password = strip_tags($_POST['password']);

$checkmail="/^([a-zA-Z0-9])+([a-zA-Z0-9\?\*\[|\]%=~^\{\}\/\+!#&\$\._-])*@([a-zA-Z0-9_-])+\.([a-zA-Z0-9\._-]+)+$/";//定义正则表达式

if(isset($emailAddr) && $emailAddr!=""){

if(preg_match($checkmail,$emailAddr)){//用正则表达式函数进行判断

$emailAddrMd5 = "\"".md5($emailAddr)."\"";

$mgid=$DB->query("SELECT * FROM ".DB_PREFIX."wm_card WHERE email=".$emailAddrMd5."");

$mgidinfo=$DB->fetch_array($mgid);

if ($mgidinfo) {

//有该用户

$timeStamp = time();//获取当前时间

$deminingStamp = intval ($mgidinfo['deminingStamp']);//获取上次挖矿时间

//7200

if($timeStamp-$deminingStamp>7200){

//已经冷却开始挖矿

//检查点击的节点

$wmNodeData = null;

$checkNodeText="/^[0-9_]{1,}$/";//定义正则表达式

if(preg_match($checkNodeText,$wmClickNode)){

//传入参数符合正则

$wmDeminingGameData=unserialize(ltrim(file_get_contents(dirname(__FILE__).'/DeminingGame.com.php'),'<?php die; ?>'));//获取信息

$wmDeminingGameDataMap = $wmDeminingGameData['map'];

$node = explode("_", $wmClickNode);//get the node of click

$rows = $wmDeminingGameData['rows'];

$cols = $wmDeminingGameData['cols'];

$num = $wmDeminingGameData['boomNum'];

$players = $wmDeminingGameData['player'];

$boomedNum = $wmDeminingGameData['boomedNum'];//已经挖到了多少次星星

$mapTypeCache = $wmDeminingGameData['mapType'];

$creatTimeCache = $wmDeminingGameData['creatTime'];

$wmopenedData = openNode($node[0],$node[1],$rows,$cols,$wmDeminingGameData,$wmDeminingGameDataMap);//校验节点是否存在并尝试打开节点

if($wmopenedData){

//节点正常

array_push($players,array('xy'=>$wmClickNode,'emailMD5'=>md5($emailAddr)));

$wmNodeDataStatu = 0;

$wmNodeLastBoom = 0;

$randomStar = 0;

$wmAttackData = $wmDeminingGameDataMap["data".$wmClickNode];

if($wmAttackData == 100){

$wmNodeDataStatu = 1;//中了!

$boomedNum = $boomedNum+1;

$randomStar = mt_rand(10,40);

$wmCard_set=unserialize(ltrim(file_get_contents(dirname(__FILE__).'/wm_card.com.php'),'<?php die; ?>'));

if(intval($wmCard_set['deminingStar'])>1){

$randomStar = $randomStar * intval($wmCard_set['deminingStar']);

}

}

if($boomedNum == $num){

deminingInit();

$wmNodeLastBoom = 1;

//所有星星被挖光

}else{

$wmNodeData = array('mapType'=>$mapTypeCache,'creatTime'=>$creatTimeCache,'map'=>$wmopenedData,'rows'=>$rows,'cols'=>$cols,'boomNum'=>$num,'boomedNum'=>$boomedNum,'player'=>$players);

wmDeminingGameWrite($wmNodeData);

}

//经验等级计算

$MyLevelOrigin = intval($mgidinfo["level"]);

$MyEXPOrigin = intval($mgidinfo["exp"]);

$MyGetExp = 10 + $wmAttackData;

if($MyGetExp>20){

$MyGetExp = 10+$randomStar;

}

$setLevelInfo = wmSetLevel($MyLevelOrigin,$MyEXPOrigin,$MyGetExp);

$levelSet = $setLevelInfo['level'];

$GetEXPSet = $setLevelInfo['GetEXP'];

//写入动态JSON

$gameJsonData = array('mailMD5'=>md5($emailAddr),'getStar'=>$randomStar,'attackNum'=>$wmAttackData,'lastBoom'=>$wmNodeLastBoom,'MyGetExp'=>$MyGetExp,'massageType'=>'demining');

wmWriteJson($gameJsonData);

if($wmNodeLastBoom==1){

//如果是最后一片矿,则不更新时间戳也就是说可以连续挖。

$timeStamp = $deminingStamp;

}

//更新数据库

$query = "Update ".DB_PREFIX."wm_card set level=".$levelSet." , exp=".$GetEXPSet.", deminingStamp=".$timeStamp.", starCount=starCount+".$randomStar.", deminingStarCount=deminingStarCount+".$randomStar." where email=".$emailAddrMd5."";

$result=$DB->query($query);

//更新缓存数据

$clickNodeResault = wxportWmDeminingGameMap();

//定义Json发送内容

$clickNodeResault['timeStamp'] = $timeStamp;

$clickNodeResault['clickNum'] = $wmAttackData;

$clickNodeResault['code'] = 202;

$clickNodeResault['boom'] = $wmNodeDataStatu;

$clickNodeResault['lastBoom'] = $wmNodeLastBoom;

$clickNodeResault['getStar'] = $randomStar;

echo json_encode($clickNodeResault);

}else{

$NowNodeResault = wxportWmDeminingGameMap();

$NowNodeResault['code'] = 101;//不是一个节点或者节点已经打开了

echo json_encode($NowNodeResault);

}

}else{

$wmNodeData = array('code'=>0);//字符串有误

echo json_encode($wmNodeData);

}

}else{

$wmNodeData = array('code'=>203,'deminingStamp'=>$deminingStamp);//还在冷却

echo json_encode($wmNodeData);

}

}else{

$wmNodeData = array('code'=>3);//无该用户

echo json_encode($wmNodeData);

}

}else{

$wmNodeData = array('code'=>2);//邮箱有误

echo json_encode($wmNodeData);

}

}else{

$wmNodeData = array('code'=>2);//邮箱有误

echo json_encode($wmNodeData);

}

//echo json_encode($wmNodeData);

}

function openNode($i,$j,$rows,$cols,$wmDeminingGameData,$wmDeminingGameDataMap){//set nodes to open,if it is can open

$data = $wmDeminingGameDataMap;

if($i < 0 || $i >= $rows || $j < 0 || $j >= $cols || $data["open".$i."_".$j]){

//说明这不是一个节点或者节点已经打开了

return false;

}

$data["open".$i."_".$j] = 1;//打开节点

return $data;

}

if(isset($_POST['type'])=='open' && isset($_POST['email'])){

if(strip_tags($_POST['type'])=='open'){

$wmClickNode = $_POST['node'];

wmCheckDemNode($wmClickNode);

}else{

startWmDeminingGame();

}

}else{

startWmDeminingGame();

}

?>

一键复制

编辑

Web IDE

原始数据

按行查看

历史

相关文章:

  • php 对象集合 查询,ThinkPHP5.1:数组对象查询的使用
  • php5.1.4,apache2.2.2+php5.1.4+my5.0
  • php x63 157 162,php – 这个代码是漏洞吗?这段代码是什么?
  • event类型 php,系统文件说明c_system_event.php事件相关函数的函数说明列表
  • matlab remez函数作用,remez函数怎么用 MATLAB中remezord的功能,格式,说明,举例设计一个滤波器?...
  • ema matlab实现,用vba实现EMA函数
  • centos上mysql乱码6,centos6.5和centos7.5统一字符集为zh_CN.UTF-8解决系统和MySQL数据库乱码问题...
  • php odbc 中文,ODBC - [ php中文手册 ] - 在线原生手册 - php中文网
  • matlab频率采样法设计FIR滤波器,用频率采样法设计FIR滤波器
  • php 单独验证码可以显示_但调用验证码时无法显示,ThinkPHP(SAE)调用验证码不能正确调用验证码...
  • php中转源码,PHP 转 ASCII
  • php+5+windows,PHP5终极安装——PHP5+IIS5+Windows2000Server
  • php网站目录禁止访问,禁止访问Apache目录
  • php上传打包下载,php在线打包下载
  • 52进制 java,Java实现的26进制转换
  • 自己简单写的 事件订阅机制
  • canvas绘制圆角头像
  • Git学习与使用心得(1)—— 初始化
  • Magento 1.x 中文订单打印乱码
  • Markdown 语法简单说明
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • PHP 小技巧
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • Vue全家桶实现一个Web App
  • 聊聊flink的TableFactory
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 前端面试总结(at, md)
  • 如何在GitHub上创建个人博客
  • 学习HTTP相关知识笔记
  • 异步
  • 终端用户监控:真实用户监控还是模拟监控?
  • 自动记录MySQL慢查询快照脚本
  • 走向全栈之MongoDB的使用
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • 昨天1024程序员节,我故意写了个死循环~
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (10)STL算法之搜索(二) 二分查找
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (转)Sql Server 保留几位小数的两种做法
  • (转)程序员疫苗:代码注入
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .gitignore文件—git忽略文件
  • .net 反编译_.net反编译的相关问题
  • .Net 垃圾回收机制原理(二)
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .net开发时的诡异问题,button的onclick事件无效
  • /proc/stat文件详解(翻译)
  • /run/containerd/containerd.sock connect: connection refused
  • @EnableWebMvc介绍和使用详细demo
  • @serverendpoint注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @transactional 方法执行完再commit_当@Transactional遇到@CacheEvict,你的代码是不是有bug!...