>  기사  >  php教程  >  PHP 버전의 Snake

PHP 버전의 Snake

WBOY
WBOY원래의
2016-08-04 08:53:354824검색

이 글에서는 PHP를 사용하여 스네이크 게임을 구현하는 코드를 공유합니다. 세션을 통해 위치를 기록하는 것이 매우 기발한 아이디어라고 할 수 있습니다.

스네이크 게임 간단하면서도 플레이가 가능한 클래식 모바일 게임입니다. 뱀의 머리 방향을 조절하여 알을 먹으면 뱀이 길어지고 포인트를 얻을 수 있습니다. Nokia 시대에는 휴대폰 업계 전체에서 인기가 있었습니다. 오늘은 PHP를 사용하여 Snake 게임을 구현하는 방법을 살펴보겠습니다.

더 이상 고민하지 않고 코드는 다음과 같습니다.

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);  
?>

위 내용은 이 글의 내용이니 많은 도움이 되셨으면 좋겠습니다!

[관련 튜토리얼 추천]

1. PHP 프로그래밍 입문부터 숙달까지 전체 동영상 튜토리얼
2. PHP 프로그래밍 입문부터 숙련도 향상 3.
PHP 그래픽 튜토리얼

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.