Scripts

Spelletje: lights out

In dit spelletje moet je alle lichtjes uitkrijgen door op de vakjes te klikken. Alles is te veranderen zoals de layout van het veld, ook zijn er levels toe te voegen door in het bestand light.games.php er extra arrays bij te zetten, je kan dan zelfs grotere velden maken dan 5x5. Het spel kan je op je site zetten door het bestand lights.php te includen (zorg wel dat lights.games.php dan in de goede map staat) en dan game(); erna neer te zetten, dit start de game.

spelletje-lights-out
//------------ lights.php ------------\\
<?php
session_start();
class lights_out{
	
	var $int_level = 1;
	var $field = array();
	var $moves = '0';
//in deze functie word het veld geladen uit het bestand lights.games.php	
	function lights_out(){
		include('lights.games.php');
		list($this->int_level) = func_get_args();
		if(isset($game[$this->int_level])){
			$this->field = $game[$this->int_level];
			$this->show_field();
		}
		else{
			$this->int_level = 1;
			$this->field = $game[1];
			$this->show_field();
		}
	}
	
	function reset_game(){
		$this->moves = 0;
		$this->lights_out($this->int_level);
	}
//laad een nieuw spel	
	function load_new_game(){
		list($mode,$nr) = func_get_args();
		switch($mode){
			case 'NEW':
				include('lights.games.php');
				if(isset($game[$nr])){
					$this->int_level = $nr;
					$this->field = $game[$this->int_level];
					$this->show_field();
				}
				else{
					echo 'deze game bestaat niet';
				}
				break;
			case 'NEXT':
			default:
				include('lights.games.php');
				if(isset($game[$this->int_level+1])){
					$this->int_level++;
					$this->field = $game[$this->int_level];
					$this->show_field();
				}
				else{
				//text die weergegeven word als er geen volgende game is en het spel dus uitgespeeld is
					echo 'je hebt het spel uitgespeeld<br><br>';
					echo '<a href="?id=NEW">start opnieuw</a>';
				}
				break;
		}
	}
//laat het veld zien	
	function show_field(){
		echo 'level: '.$this->int_level;
		echo '<table>';
		foreach($this->field as $row_nr => $row){
			echo '<tr>';
			foreach($row as $col_nr => $value){
				if($value == 1){
					$color = '#888888'; //kleur vakje met het "licht aan"
					$color_mouseover = '#dddddd'; //kleur vakje met het "licht aan" als de muis erover heen gaat
				}
				else{
					$color = '#ffffff'; //kleur vakje met het "licht uit"
					$color_mouseover = '#dddddd'; //kleur vakje met het "licht uit" als de muis erover heen gaat
				}
				echo '<td style="background-color:'.$color.';border:1px solid #000000;" onclick="location.href=\'?id='.$row_nr.'_'.$col_nr.'&sid='.serialize($this).'\'" onMouseOver="this.style.backgroundColor=\''.$color_mouseover.'\'; this.style.cursor=\'hand\'" onMouseOut="this.style.backgroundColor=\''.$color.'\'"><a href="?id='.$row_nr.'_'.$col_nr.'" style="text-decoration:none;">&nbsp; &nbsp; &nbsp;</a>';
				
			}
		}
		echo '</table>moves: '.$this->moves.'<br>';
		echo '<a href="?id=RESET">reset</a>';
	}
//klap de waarde van een vakje om;	
	function c_v($id){
		if($id == 1){
			$return = 0;
		}
		elseif($id == 0){
			$return = 1;
		}
		else{
			$return = 1;
		}
		return $return;
	}
//verander waardes van de vakjes rondom het aangeklikte vakje	
	function change($id){
		$this->moves++;
		list($row,$col) = explode('_',$id);
		if(isset($this->field[$row][$col])){
			$this->field[$row][$col] = $this->c_v($this->field[$row][$col]);
		}
		if(isset($this->field[$row][$col-1])){
			$this->field[$row][$col-1] = $this->c_v($this->field[$row][$col-1]);
		}
		if(isset($this->field[$row][$col+1])){
			$this->field[$row][$col+1] = $this->c_v($this->field[$row][$col+1]);
		}
		if(isset($this->field[$row-1][$col])){
			$this->field[$row-1][$col] = $this->c_v($this->field[$row-1][$col]);
		}
		if(isset($this->field[$row+1][$col])){
			$this->field[$row+1][$col] = $this->c_v($this->field[$row+1][$col]);
		}
		//in deze loop word gekeken of er ergens nog een "lampje brand"
		foreach($this->field as $field){
			if(in_array('1',$field)){
				$light = 1;
			}
		}
		if($light == 1){
			$this->show_field();
		}
		else{
			//text die weergegeven word als een level gehaald is
			echo 'level gehaald in <b>'.$this->moves.'</b> moves<br><br>';
			echo '<a href="?id=NEXT">volgende level</a>';
			$this->moves = 0;
		}
	}	
}
function game(){
	$nr = 1;
	list($nr) = func_get_args();
	if(!isset($_GET['id'])){
		$game = new lights_out($nr);
		$_SESSION['game'] = serialize($game);
	}
	elseif($_GET['id'] == 'RESET'){
		$game = unserialize($_SESSION['game']);
		$game->reset_game();
		$_SESSION['game'] = serialize($game);
	}
	elseif($_GET['id'] == 'NEXT'){
		$game = unserialize($_SESSION['game']);
		$game->load_new_game('NEXT');
		$_SESSION['game'] = serialize($game);
	}
	elseif($_GET['id'] == 'NEW'){
		$game = unserialize($_SESSION['game']);
		$game->load_new_game('NEW',1);
		$_SESSION['game'] = serialize($game);
	}
	else{
		$game = unserialize($_SESSION['game']);
		$game->change($_GET['id']);
		$_SESSION['game'] = serialize($game);
	}
}
?>
//------------ lights.games.php ------------\\
<?php
$game[1] = array(
	1 => array(		1 => 0,		2 => 0,		3 => 0,		4 => 0,		5 => 0 	),
	2 => array(		1 => 0,		2 => 0,		3 => 0,		4 => 0,		5 => 0 	),
	3 => array(		1 => 1,		2 => 0,		3 => 1,		4 => 0,		5 => 1 	),
	4 => array(		1 => 0,		2 => 0,		3 => 0,		4 => 0,		5 => 0 	),
	5 => array(		1 => 0,		2 => 0,		3 => 0,		4 => 0,		5 => 0 	)
);

$game[2] = array(
	1 => array(		1 => 1,		2 => 0,		3 => 1,		4 => 0,		5 => 1 	),
	2 => array(		1 => 1,		2 => 0,		3 => 1,		4 => 0,		5 => 1 	),
	3 => array(		1 => 0,		2 => 0,		3 => 0,		4 => 0,		5 => 0 	),
	4 => array(		1 => 1,		2 => 0,		3 => 1,		4 => 0,		5 => 1 	),
	5 => array(		1 => 1,		2 => 0,		3 => 1,		4 => 0,		5 => 1 	)
);

$game[3] = array(
	1 => array(		1 => 0,		2 => 1,		3 => 0,		4 => 1,		5 => 0 	),
	2 => array(		1 => 1,		2 => 1,		3 => 0,		4 => 1,		5 => 1 	),
	3 => array(		1 => 1,		2 => 1,		3 => 0,		4 => 1,		5 => 1 	),
	4 => array(		1 => 1,		2 => 1,		3 => 0,		4 => 1,		5 => 1 	),
	5 => array(		1 => 0,		2 => 1,		3 => 0,		4 => 1,		5 => 0 	)
);

$game[4] = array(
	1 => array(		1 => 0,		2 => 0,		3 => 0,		4 => 0,		5 => 0 	),
	2 => array(		1 => 1,		2 => 1,		3 => 0,		4 => 1,		5 => 1 	),
	3 => array(		1 => 0,		2 => 0,		3 => 0,		4 => 0,		5 => 0 	),
	4 => array(		1 => 1,		2 => 0,		3 => 0,		4 => 0,		5 => 1 	),
	5 => array(		1 => 1,		2 => 1,		3 => 0,		4 => 1,		5 => 1 	)
);

$game[5] = array(
	1 => array(		1 => 1,		2 => 1,		3 => 1,		4 => 1,		5 => 0 	),
	2 => array(		1 => 1,		2 => 1,		3 => 1,		4 => 0,		5 => 1 	),
	3 => array(		1 => 1,		2 => 1,		3 => 1,		4 => 0,		5 => 1 	),
	4 => array(		1 => 0,		2 => 0,		3 => 0,		4 => 1,		5 => 1 	),
	5 => array(		1 => 1,		2 => 1,		3 => 0,		4 => 1,		5 => 1 	)
);
$game[6] = array(
	1 => array(		1 => 0,		2 => 0,		3 => 0,		4 => 0,		5 => 0 	),
	2 => array(		1 => 0,		2 => 0,		3 => 0,		4 => 0,		5 => 0 	),
	3 => array(		1 => 1,		2 => 0,		3 => 1,		4 => 0,		5 => 1 	),
	4 => array(		1 => 1,		2 => 0,		3 => 1,		4 => 0,		5 => 1 	),
	5 => array(		1 => 0,		2 => 1,		3 => 1,		4 => 1,		5 => 0 	)
);
$game[7] = array(
	1 => array(		1 => 1,		2 => 1,		3 => 1,		4 => 1,		5 => 0 	),
	2 => array(		1 => 1,		2 => 0,		3 => 0,		4 => 0,		5 => 1 	),
	3 => array(		1 => 1,		2 => 0,		3 => 0,		4 => 0,		5 => 1 	),
	4 => array(		1 => 1,		2 => 0,		3 => 0,		4 => 0,		5 => 1 	),
	5 => array(		1 => 1,		2 => 1,		3 => 1,		4 => 1,		5 => 0 	)
);
$game[8] = array(
	1 => array(		1 => 0,		2 => 0,		3 => 0,		4 => 0,		5 => 0 	),
	2 => array(		1 => 0,		2 => 0,		3 => 1,		4 => 0,		5 => 0 	),
	3 => array(		1 => 0,		2 => 1,		3 => 0,		4 => 1,		5 => 0 	),
	4 => array(		1 => 1,		2 => 0,		3 => 1,		4 => 0,		5 => 1 	),
	5 => array(		1 => 0,		2 => 1,		3 => 0,		4 => 1,		5 => 0 	)
);
$game[9] = array(
	1 => array(		1 => 0,		2 => 1,		3 => 0,		4 => 1,		5 => 0 	),
	2 => array(		1 => 1,		2 => 1,		3 => 1,		4 => 1,		5 => 1 	),
	3 => array(		1 => 0,		2 => 1,		3 => 1,		4 => 1,		5 => 0 	),
	4 => array(		1 => 0,		2 => 1,		3 => 0,		4 => 1,		5 => 1 	),
	5 => array(		1 => 1,		2 => 1,		3 => 1,		4 => 0,		5 => 0 	)
);
$game[10] = array(
	1 => array(		1 => 0,		2 => 1,		3 => 1,		4 => 1,		5 => 0 	),
	2 => array(		1 => 0,		2 => 1,		3 => 1,		4 => 1,		5 => 0 	),
	3 => array(		1 => 0,		2 => 1,		3 => 1,		4 => 1,		5 => 0 	),
	4 => array(		1 => 0,		2 => 0,		3 => 0,		4 => 0,		5 => 0 	),
	5 => array(		1 => 0,		2 => 0,		3 => 0,		4 => 0,		5 => 0 	)
);
$game[11] = array(
	1 => array(		1 => 1,		2 => 0,		3 => 1,		4 => 0,		5 => 1 	),
	2 => array(		1 => 1,		2 => 0,		3 => 1,		4 => 0,		5 => 1 	),
	3 => array(		1 => 1,		2 => 0,		3 => 1,		4 => 0,		5 => 1 	),
	4 => array(		1 => 1,		2 => 0,		3 => 1,		4 => 0,		5 => 1 	),
	5 => array(		1 => 0,		2 => 1,		3 => 1,		4 => 1,		5 => 0 	)
);
$game[12] = array(
	1 => array(		1 => 1,		2 => 1,		3 => 1,		4 => 1,		5 => 1 	),
	2 => array(		1 => 0,		2 => 1,		3 => 0,		4 => 1,		5 => 0 	),
	3 => array(		1 => 1,		2 => 1,		3 => 0,		4 => 1,		5 => 1 	),
	4 => array(		1 => 0,		2 => 1,		3 => 1,		4 => 1,		5 => 0	),
	5 => array(		1 => 0,		2 => 1,		3 => 0,		4 => 1,		5 => 0	)
);
$game[13] = array(
	1 => array(		1 => 0,		2 => 0,		3 => 0,		4 => 1,		5 => 0	),
	2 => array(		1 => 0,		2 => 0,		3 => 1,		4 => 0,		5 => 1	),
	3 => array(		1 => 0,		2 => 1,		3 => 0,		4 => 1,		5 => 0	),
	4 => array(		1 => 1,		2 => 0,		3 => 1,		4 => 0,		5 => 0	),
	5 => array(		1 => 0,		2 => 1,		3 => 0,		4 => 0,		5 => 0	)
);
$game[14] = array(
	1 => array(		1 => 0,		2 => 0,		3 => 0,		4 => 0,		5 => 0	),
	2 => array(		1 => 0,		2 => 0,		3 => 0,		4 => 0,		5 => 0	),
	3 => array(		1 => 0,		2 => 1,		3 => 0,		4 => 0,		5 => 0	),
	4 => array(		1 => 0,		2 => 1,		3 => 0,		4 => 0,		5 => 0	),
	5 => array(		1 => 0,		2 => 1,		3 => 0,		4 => 0,		5 => 0	)
);
$game[15] = array(
	1 => array(		1 => 0,		2 => 0,		3 => 0,		4 => 0,		5 => 0	),
	2 => array(		1 => 0,		2 => 1,		3 => 0,		4 => 0,		5 => 0	),
	3 => array(		1 => 0,		2 => 0,		3 => 0,		4 => 0,		5 => 0	),
	4 => array(		1 => 0,		2 => 1,		3 => 0,		4 => 0,		5 => 0	),
	5 => array(		1 => 0,		2 => 0,		3 => 0,		4 => 0,		5 => 0	)
);
/*lege game
$game[] = array(
	1 => array(		1 => ,		2 => ,		3 => ,		4 => ,		5 => 	),
	2 => array(		1 => ,		2 => ,		3 => ,		4 => ,		5 => 	),
	3 => array(		1 => ,		2 => ,		3 => ,		4 => ,		5 => 	),
	4 => array(		1 => ,		2 => ,		3 => ,		4 => ,		5 => 	),
	5 => array(		1 => ,		2 => ,		3 => ,		4 => ,		5 =>	)
);
*/	
?>

Reacties

0
Nog geen reacties.