贪吃蛇游戏是经典手机游戏,既简单又耐玩。通过控制蛇头方向吃蛋,使得蛇变长,从而获得积分。在诺基亚时代,风靡整个手机界,今天我们来看看另类的,如何使用php来实现贪吃蛇小游戏
废话不多说,代码奉上:
control.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
</head>
<body>
<a href="control.php?a=up">上<a/> <?session_start(); echo $_SESSION["count"];?>分<br/>
<a href="control.php?a=left">左<a/> <a href="control.php?a=right">右<a/><br/>
<a href="control.php?a=down">下<a/>
<?
switch($_GET["a"]){
case "up";
$_SESSION["con"]="up";
break;
case "down":
$_SESSION["con"]="down";
break;
case "left":
$_SESSION["con"]="left";
break;
case "right":
$_SESSION["con"]="right";
break;
}
?>
</body>
</html>
main.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-9"/>
<meta http-equiv="refresh" content="0.5"/>
</head>
<frameset rows="95,*" border="1" noresize >
<frame src="control.php" name="top"/>
<frame src="./tcs.php" name="menu"/>
</frameset>
</html>
tcs.php
<?php
session_start();
$_SESSION["ud"];
$_SESSION["lr"];
$im = imagecreatetruecolor(300,300);
$blue = imagecolorallocate($im,0,0,255);
$red = imagecolorallocate($im,255,0,0);
$c1 = imagecolorallocate($im,200,200,200);
imagefill($im,0,0,$c1);
if(!isset($_SESSION["a"])&&!isset($_SESSION["b"])){
$_SESSION["a"] =rand(0,290);
$_SESSION["b"] =rand(0,290);
}
if(isset($_SESSION["a"])&&isset($_SESSION["b"])){
imagerectangle($im,$_SESSION["a"],$_SESSION["b"],$_SESSION["a"]+10,$_SESSION["b"]+10,$red);
}
if(abs(($_SESSION["lr"]-$_SESSION["a"]))<=5&&abs($_SESSION["ud"]-$_SESSION["b"])<=5){
unset($_SESSION["a"]);
unset($_SESSION["b"]);
$_SESSION["count"]++;
}
switch($_SESSION["con"]){
case "up";
if($_SESSION["ud"]>10)
$_SESSION["ud"]-=10;
else
$_SESSION["ud"]=0;
break;
case "down":
if($_SESSION["ud"]<=280)
$_SESSION["ud"]+=10;
else
$_SESSION["ud"]=290;
break;
case "left":
if($_SESSION["lr"]>10)
$_SESSION["lr"]-=10;
else
$_SESSION["lr"]=0;
break;
case "right":
if($_SESSION["lr"]<=280)
$_SESSION["lr"]+=10;
else
$_SESSION["lr"]=290;
break;
}
for($i=0;$i<=$_SESSION["count"];$i++){
switch($_SESSION["con"]){
case "up":
$_SESSION["udnext"] = $_SESSION["ud"]+10*$i;
imagerectangle($im,$_SESSION["lr"],$_SESSION["udnext"],$_SESSION["lr"]+10,$_SESSION["udnext"]+10,$blue);
// imagerectangle($im,$_SESSION["lr"],$_SESSION["udtime"][time()-$i],$_SESSION["lr"]+10,$_SESSION["udtime"][time()-$i]+10,$blue);
break;
case "down":
$_SESSION["udnext"] = $_SESSION["ud"]-10*$i;
imagerectangle($im,$_SESSION["lr"],$_SESSION["udnext"],$_SESSION["lr"]+10,$_SESSION["udnext"]+10,$blue);
// imagerectangle($im,$_SESSION["lr"],$_SESSION["udtime"][time()+$i],$_SESSION["lr"]+10,$_SESSION["udtime"][time()+$i]+10,$blue);
break;
case "left":
$_SESSION["lrnext"] = $_SESSION["lr"]+10*$i;
imagerectangle($im,$_SESSION["lrnext"],$_SESSION["ud"],$_SESSION["lrnext"]+10,$_SESSION["ud"]+10,$blue);
// imagerectangle($im,$_SESSION["lrtime"][time()-$i],$_SESSION["ud"],$_SESSION["lrtime"][time()-$i]+10,$_SESSION["ud"]+10,$blue);
break;
case "right":
$_SESSION["lrnext"] = $_SESSION["lr"]-10*$i;
imagerectangle($im,$_SESSION["lrnext"],$_SESSION["ud"],$_SESSION["lrnext"]+10,$_SESSION["ud"]+10,$blue);
// imagerectangle($im,$_SESSION["lrtime"][time()+$i],$_SESSION["ud"],$_SESSION["lrtime"][time()+$i]+10,$_SESSION["ud"]+10,$blue);
break;
}
//imagerectangle($im,$_SESSION["lr"],$_SESSION["ud"],$_SESSION["lr"]+10,$_SESSION["ud"]+10,$blue);
}
header("Content-Type: image/jpeg");
imagejpeg($im);
imagedestroy($im);
?>