Professional Documents
Culture Documents
Snake PHP
Snake PHP
php
* Author: Pratibha Natani
* Description: This file contains the Main game logic. Contains the php and
javascript code.
* References:
* http://www.tizag.com/phpT/forms.php
* http://www.w3schools.com/js/js_objects.asp
* http://odhyan.com/blog/2010/10/snake-in-javascript/
-->
<html>
<head>
<link rel="stylesheet" type="text/css" href="Snake.css">
</head>
<?php
//form parameters captured
$BoardSize = $_POST['BoardSize'];
$BoardSizex =substr($BoardSize, 0, 3);
$BoardSizey =substr($BoardSize, 6, 3);
$Pace= $_POST['SnakePace'];
if($Pace=="Slow")
$SnakePace=300;
else if($Pace=="Medium")
$SnakePace=250;
else if($Pace=="Fast")
$SnakePace=200;
$Goals= $_POST['Goals'];
?>
<body>
<label type="text" id='scoreLabel'>Score: </label>
<input type='text' id='scoreText' value='0'></input>
<div id="Board">
<img src="snake.png" id="snake0" />
<img src="snake.png" id="snake1" />
<img src="snake.png" id="snake2" />
</div>
</body>
<script type="text/javascript">
//Game Flags
var moveOne = true;
var snakeDead = false;
document.getElementById('Board').style.height = BoardSizey;
document.getElementById('Board').style.width = BoardSizex;
//flag set to not draw the food again and again on timer
firstDraw=false;
function drawFood() {
if(!firstDraw)
{
for(k=1;k<=Goals;k++)
{
callFood(k);
}
firstDraw=true;
}
function callFood(k) {
foodX= randomNumbergen(1,BoardSize1x-10);
foodX=foodX-(foodX%10);
foodY= randomNumbergen(1,BoardSize1y-10);
foodY=foodY-(foodY%10);
//generate img tags on fly
var incr = "<img src = \"food.png\" id=\"food"+k+"\"
style = \"position:absolute;left:"+foodX+";top:"+foodY+";height:10px;\" />";
document.getElementById('Board').innerHTML += incr;
document.getElementById('food' + k).style.left =
foodX;
document.getElementById('food' + k).style.top =
foodY;
}
function redrawFood(k) {
callFood(k);
}
}
return;
}
function Snake() {
this.x = 30;
this.y = 30;
this.dir = 'R';
}
Snake.prototype.changeDir = function(dir) {
this.dir = dir;
}
Snake.prototype.draw = function() {
if ( snakeDead )
{
return false;
}
else if( this.x < 0 || this.x +10> BoardSize1x )
{
return false;
}
else if( this.y < 0 || this.y +10> BoardSize1y )
{
return false;
}
//let snake tail take position of head
for(i=snakePart; i>0; --i)
{
document.getElementById("snake"+i).style.left =
document.getElementById("snake"+ (i-1)).style.left;
document.getElementById("snake"+i).style.top =
document.getElementById("snake"+ (i-1)).style.top;
document.getElementById("snake"+i).style.visibility =
'visible';
}
document.getElementById('snake0').style.left = this.x;
document.getElementById('snake0').style.top = this.y;
if( !moveOne )
{
//check if snake touches itself-dead
for(i=snakePart; !snakeDead && i>0; --i)
{
if(
((((this.x) + "px") ==
document.getElementById("snake"+i).style.left) &&
((this.y + "px") ==
document.getElementById("snake"+i).style.top))
)
snakeDead = true;
}
document.getElementById('Board').innerHTML += imageSnake;
image_x.removeChild(document.getElementById('food'+i));
Score=Score+10;
//to generate another goal
redrawFood(i);
}
}
}
moveOne = false;
return true;
}
Snake.prototype.move = function() {
switch (this.dir) {
case 'L': // Left
this.x -= 10;
break;
case 'U': // Up
this.y -= 10;
break;
case 'R': // Right
this.x += 10;
break;
case 'D': // Down
this.y += 10;
break;
}
retval= this.draw();
if(!retval){
var answer = confirm("Oops Your snake is dead! Click Ok to
Quit.")
if(answer)
{
clearInterval(timer);
window.location = "index.html";
}
}
drawFood();
window.addEventListener('keydown', function(event) {
switch (event.keyCode) {
case 37: // Left
if(mrSnake.dir!='R')
{
mrSnake.changeDir('L');
}
break;
case 38: // Up
if(mrSnake.dir!='D')
{
mrSnake.changeDir('U');
}
break;
case 39: // Right
if(mrSnake.dir!='L')
{
mrSnake.changeDir('R');
}
break;
case 40: // Down
if(mrSnake.dir!='U')
{
mrSnake.changeDir('D');
}
break;
}
}, false);
timer=setInterval('mrSnake.move()', SnakePace);
</script>
</html>