diff options
Diffstat (limited to 'demos/hangman/protected/pages/HomePage.php')
| -rw-r--r-- | demos/hangman/protected/pages/HomePage.php | 132 | 
1 files changed, 132 insertions, 0 deletions
diff --git a/demos/hangman/protected/pages/HomePage.php b/demos/hangman/protected/pages/HomePage.php new file mode 100644 index 00000000..ed030d2f --- /dev/null +++ b/demos/hangman/protected/pages/HomePage.php @@ -0,0 +1,132 @@ +<?php
 +
 +class HomePage extends TPage
 +{
 +	const EASY_LEVEL=10;
 +	const MEDIUM_LEVEL=5;
 +	const HARD_LEVEL=3;
 +
 +	public function selectLevel($sender,$param)
 +	{
 +		if($this->EasyLevel->Checked)
 +			$this->Level=self::EASY_LEVEL;
 +		else if($this->MediumLevel->Checked)
 +			$this->Level=self::MEDIUM_LEVEL;
 +		else if($this->HardLevel->Checked)
 +			$this->Level=self::HARD_LEVEL;
 +		else
 +		{
 +			$this->LevelError->Visible=true;
 +			return;
 +		}
 +		$wordFile=Prado::getPathOfNamespace($this->Application->Parameters['wordFile'],'.txt');
 +		$words=preg_split("/[\s,]+/",file_get_contents($wordFile));
 +		do
 +		{
 +			$i=rand(0,count($words)-1);
 +			$word=$words[$i];
 +		} while(strlen($word)<5 || !preg_match('/^[a-z]*$/i',$word));
 +		$word=strtoupper($word);
 +
 +		$this->Word=$word;
 +		$this->GuessWord=str_repeat('_',strlen($word));
 +		$this->Misses=0;
 +		$this->showPanel('GuessPanel');
 +	}
 +
 +	public function guessWord($sender,$param)
 +	{
 +		$sender->Enabled=false;
 +		$letter=$sender->Text;
 +		$word=$this->Word;
 +		$guessWord=$this->GuessWord;
 +		$pos=0;
 +		$success=false;
 +		while(($pos=strpos($word,$letter,$pos))!==false)
 +		{
 +			$guessWord[$pos]=$letter;
 +			$success=true;
 +			$pos++;
 +		}
 +		if($success)
 +		{
 +			$this->GuessWord=$guessWord;
 +			if($guessWord===$word)
 +				$this->showPanel('WinPanel');
 +		}
 +		else
 +		{
 +			$misses=$this->Misses+1;
 +			$this->Misses=$misses;
 +			if($misses>=$this->Level)
 +				$this->giveUp(null,null);
 +		}
 +	}
 +
 +	public function giveUp($sender,$param)
 +	{
 +		$this->showPanel('LosePanel');
 +	}
 +
 +	public function startAgain($sender,$param)
 +	{
 +		$this->showPanel('IntroPanel');
 +		$this->LevelError->Visible=false;
 +		for($letter=65;$letter<=90;++$letter)
 +		{
 +			$guessLetter='Guess'.chr($letter);
 +			$this->$guessLetter->Enabled=true;
 +		}
 +	}
 +
 +	protected function showPanel($panelID)
 +	{
 +		$this->IntroPanel->Visible=false;
 +		$this->GuessPanel->Visible=false;
 +		$this->WinPanel->Visible=false;
 +		$this->LosePanel->Visible=false;
 +		$this->$panelID->Visible=true;
 +	}
 +
 +	public function setLevel($value)
 +	{
 +		$this->setViewState('Level',$value,0);
 +	}
 +
 +	public function getLevel()
 +	{
 +		return $this->getViewState('Level',0);
 +	}
 +
 +	public function setWord($value)
 +	{
 +		$this->setViewState('Word',$value,'');
 +	}
 +
 +	public function getWord()
 +	{
 +		return $this->getViewState('Word','');
 +	}
 +
 +	public function getGuessWord()
 +	{
 +		return $this->getViewState('GuessWord','');
 +	}
 +
 +	public function setGuessWord($value)
 +	{
 +		$this->setViewState('GuessWord',$value,'');
 +	}
 +
 +	public function setMisses($value)
 +	{
 +		$this->setViewState('Misses',$value,0);
 +	}
 +
 +	public function getMisses()
 +	{
 +		return $this->getViewState('Misses',0);
 +	}
 +}
 +
 +?>
\ No newline at end of file  | 
