首頁 >後端開發 >php教程 >php怎麼寫單機小遊戲貪吃蛇

php怎麼寫單機小遊戲貪吃蛇

墨辰丷
墨辰丷原創
2018-06-01 16:23:435089瀏覽

php能寫入單機遊戲,其實作方法如:先建立一個「control.php」以及「main.php」檔案;然後建立一個「tcs.php」檔案;最後透過session記錄位置來製作單機遊戲即可。

php怎麼寫單機小遊戲貪吃蛇

php能寫遊戲嗎?一定有小夥伴會有這樣的疑問。答案是可以,雖然php寫大型遊戲還是欠缺,但寫一些小型的單機遊戲的話還是可以的,比如說一些休閒遊戲,智力遊戲!本文給大家分享的是使用php實現貪吃蛇單機小遊戲的程式碼,其主要思路是透過session記錄位置來製作,應該說思路非常巧妙,推薦給大家。

貪吃蛇遊戲是一款非常經典的單機手機遊戲,既簡單又耐玩;簡單易上手的遊戲玩法,受到了不少玩家的喜愛。透過控制蛇頭方向吃蛋,使得蛇變長,從而獲得分數。在諾基亞時代,風靡整個手機界,今天我們來看看另類的,如何使用php來實現貪吃蛇小遊戲

廢話不多說,代碼奉上:

control. php

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8"/>
  </head>
  <body>
     <a href="control.php?a=up">上<a/>       <?session_start(); echo $_SESSION[&#39;count&#39;];?>分<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[&#39;a&#39;]){
        case "up";
          $_SESSION[&#39;con&#39;]="up";
        break;
        case "down":
          $_SESSION[&#39;con&#39;]="down";
        break;
        case "left":
          $_SESSION[&#39;con&#39;]="left";
        break;
        case "right":
          $_SESSION[&#39;con&#39;]="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[&#39;ud&#39;];
  $_SESSION[&#39;lr&#39;];  
  $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[&#39;a&#39;])&&!isset($_SESSION[&#39;b&#39;])){
    $_SESSION[&#39;a&#39;] =rand(0,290);
    $_SESSION[&#39;b&#39;] =rand(0,290);
  }
  if(isset($_SESSION[&#39;a&#39;])&&isset($_SESSION[&#39;b&#39;])){
    imagerectangle($im,$_SESSION[&#39;a&#39;],$_SESSION[&#39;b&#39;],$_SESSION[&#39;a&#39;]+10,$_SESSION[&#39;b&#39;]+10,$red); 
  }
  if(abs(($_SESSION[&#39;lr&#39;]-$_SESSION[&#39;a&#39;]))<=5&&abs($_SESSION[&#39;ud&#39;]-$_SESSION[&#39;b&#39;])<=5){
    unset($_SESSION[&#39;a&#39;]);
    unset($_SESSION[&#39;b&#39;]);
    $_SESSION[&#39;count&#39;]++;
  }
  switch($_SESSION[&#39;con&#39;]){
    case "up";
      if($_SESSION[&#39;ud&#39;]>10)
        $_SESSION[&#39;ud&#39;]-=10;
      else
        $_SESSION[&#39;ud&#39;]=0;
    break;
    case "down":
      if($_SESSION[&#39;ud&#39;]<=280)
        $_SESSION[&#39;ud&#39;]+=10;
      else
        $_SESSION[&#39;ud&#39;]=290;
    break;
    case "left":
      if($_SESSION[&#39;lr&#39;]>10)
        $_SESSION[&#39;lr&#39;]-=10;
      else
        $_SESSION[&#39;lr&#39;]=0;
    break;
    case "right":
      if($_SESSION[&#39;lr&#39;]<=280)
        $_SESSION[&#39;lr&#39;]+=10;
      else
        $_SESSION[&#39;lr&#39;]=290;
    break;
  }
  for($i=0;$i<=$_SESSION[&#39;count&#39;];$i++){
    switch($_SESSION[&#39;con&#39;]){
      case "up":
        $_SESSION[&#39;udnext&#39;] = $_SESSION[&#39;ud&#39;]+10*$i;
        imagerectangle($im,$_SESSION[&#39;lr&#39;],$_SESSION[&#39;udnext&#39;],$_SESSION[&#39;lr&#39;]+10,$_SESSION[&#39;udnext&#39;]+10,$blue);
        // imagerectangle($im,$_SESSION[&#39;lr&#39;],$_SESSION[&#39;udtime&#39;][time()-$i],$_SESSION[&#39;lr&#39;]+10,$_SESSION[&#39;udtime&#39;][time()-$i]+10,$blue);
      break;
      case "down":
        $_SESSION[&#39;udnext&#39;] = $_SESSION[&#39;ud&#39;]-10*$i;
        imagerectangle($im,$_SESSION[&#39;lr&#39;],$_SESSION[&#39;udnext&#39;],$_SESSION[&#39;lr&#39;]+10,$_SESSION[&#39;udnext&#39;]+10,$blue);
        // imagerectangle($im,$_SESSION[&#39;lr&#39;],$_SESSION[&#39;udtime&#39;][time()+$i],$_SESSION[&#39;lr&#39;]+10,$_SESSION[&#39;udtime&#39;][time()+$i]+10,$blue);
      break;
      case "left":
        $_SESSION[&#39;lrnext&#39;] = $_SESSION[&#39;lr&#39;]+10*$i;
        imagerectangle($im,$_SESSION[&#39;lrnext&#39;],$_SESSION[&#39;ud&#39;],$_SESSION[&#39;lrnext&#39;]+10,$_SESSION[&#39;ud&#39;]+10,$blue);
        // imagerectangle($im,$_SESSION[&#39;lrtime&#39;][time()-$i],$_SESSION[&#39;ud&#39;],$_SESSION[&#39;lrtime&#39;][time()-$i]+10,$_SESSION[&#39;ud&#39;]+10,$blue);
      break;
      case "right":
        $_SESSION[&#39;lrnext&#39;] = $_SESSION[&#39;lr&#39;]-10*$i;
        imagerectangle($im,$_SESSION[&#39;lrnext&#39;],$_SESSION[&#39;ud&#39;],$_SESSION[&#39;lrnext&#39;]+10,$_SESSION[&#39;ud&#39;]+10,$blue);
        // imagerectangle($im,$_SESSION[&#39;lrtime&#39;][time()+$i],$_SESSION[&#39;ud&#39;],$_SESSION[&#39;lrtime&#39;][time()+$i]+10,$_SESSION[&#39;ud&#39;]+10,$blue);
      break;
    }
    //imagerectangle($im,$_SESSION[&#39;lr&#39;],$_SESSION[&#39;ud&#39;],$_SESSION[&#39;lr&#39;]+10,$_SESSION[&#39;ud&#39;]+10,$blue);
  }
  header("Content-Type: image/jpeg");
  imagejpeg($im);
  imagedestroy($im);  
?>

總結:以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。

相關推薦:

php實作斷點續傳之檔案分割合併詳解

php 實作微信開發取得使用者資訊

php#實作驗證碼小程式的方法

以上是php怎麼寫單機小遊戲貪吃蛇的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn