> 백엔드 개발 > PHP 튜토리얼 > PHP로 구현된 간단한 지뢰찾기 게임 예제

PHP로 구현된 간단한 지뢰찾기 게임 예제

WBOY
풀어 주다: 2016-07-25 08:44:55
원래의
818명이 탐색했습니다.

이 기사의 예에서는 PHP로 구현된 간단한 지뢰 찾기 게임을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 내용은 다음과 같습니다.

  1. $init = $_POST["init"];//게임 재시작
  2. $clickvalue = $_POST["clickvalue"] ;//지뢰 제거
  3. $checkflag = 0;//승리 또는 패배
  4. $click_count = 0;//클릭 횟수
  5. if($init == null && $clickvalue == null){//초기화
  6. $_POST = array();//배열로 POST 설정
  7. $_POST["rows"] = 9;//행 설정
  8. $_POST["cols"] = 9;//set cols
  9. $_POST["num"] = 10;//set num
  10. $_POST["timeshow"] = "00:00"; //시작 시간 설정
  11. $init = true;//초기화 설정
  12. }
  13. $rows = $_POST["rows"];//행 가져오기
  14. $cols = $_POST["cols" ];//열 가져오기
  15. $num = $_POST["num"];//숫자 가져오기
  16. $starttime = $_POST["starttime"];//시작 시간 가져오기
  17. if($init) {// 초기화
  18. $timeshow = "00:00";//시작 시간 설정
  19. $data = array();//데이터 초기화
  20. for($i=0;$i<$rows ;$i ){//모든 행
  21. for($j=0;$j<$cols;$j ){//모든 열
  22. $data["data".$i."_ ".$j] = 0;//null로 내 설정
  23. $data["open".$i."_".$j] = 0;//닫은 노드 설정
  24. }
  25. }
  26. $i=0;//인덱스를 재설정하고 광산을 설정합니다(임의 설정)
  27. while($i < $num){//광산 개수
  28. $r = rand(0 ,$rows - 1);//행 인덱스
  29. $c = rand(0,$cols - 1);//col 인덱스
  30. if($data["data".$r."_". $c] == 0){//지뢰가 아닌 경우
  31. $data["data".$r."_".$c] = 100;//지뢰가 있는 노드 설정
  32. $i ;
  33. }
  34. }
  35. for($i=0;$i<$rows;$i ){//모든 행
  36. for($j=0;$j<$cols;$ j ){//모든 열
  37. if($data["data".$i."_".$j] == 100)continue;
  38. //광산이 아니며 인접한 열 수를 설정합니다. 광산
  39. $cnt = 0;
  40. if($i - 1 >= 0 && $j - 1 >= 0 && $data["data".($i - 1)."_".($j - 1)] == 100)$cnt ;//왼쪽 위
  41. if($i - 1 >= 0 && $data["data".($i - 1)."_".$j] == 100)$cnt ;//왼쪽
  42. if($i - 1 >= 0 && $j 1 < $cols && $data["data".($i - 1)."_".($j 1)] == 100)$cnt ;//왼쪽 아래
  43. if($j - 1 >= 0 && $data["data".$i."_".($j - 1)] == 100) $cnt ;//상위
  44. if($j 1 < $cols && $data["data".$i."_".($j 1)] == 100)$cnt ;//하위
  45. if($i 1 < $rows && $j - 1 >= 0 && $data["data".($i 1)."_".($j - 1)] == 100)$ cnt ;//오른쪽 위
  46. if($i 1 < $rows && $data["data".($i 1)."_".$j] == 100)$cnt ;//오른쪽
  47. if($i 1 < $rows && $j 1 < $cols && $data["data".($i 1)."_".($j 1)] == 100)$cnt ; //오른쪽 아래
  48. $data["data".$i."_".$j] = $cnt;//세트 번호
  49. }
  50. }
  51. }else{
  52. $ data = $_POST;//데이터 가져오기
  53. if($data["data".$clickvalue] == 100){
  54. //사용자 클릭 값 확인
  55. $checkflag = 2;// 광산을 클릭하면 게임이 종료됩니다
  56. for($i=0;$i<$rows;$i ){//모든 행
  57. for($j=0;$j<$cols;$j ){//모든 열
  58. $data["open".$i."_".$j] = 1;
  59. //모든 노드를 열도록 설정
  60. }
  61. }
  62. }else{
  63. $node =explod("_", $clickvalue);//클릭 노드 가져오기
  64. openNode($node[0],$node[1]);//노드 설정
  65. for($i=0;$i<$rows;$i ){//모든 행
  66. for($j=0;$j<$cols;$j ){//모든 행 열기 cols
  67. if($data["open".$i."_".$j] == 1)$click_count ;
  68. //오픈 노드 수 가져오기
  69. }
  70. }
  71. if($rows*$cols - $click_count == $num)$checkflag = 1;
  72. //모든 노드가 열려 있으면 게임 클리어
  73. }
  74. }
  75. if($checkflag == 0 && $click_count == 1){
  76. //게임이 시작되면 시간 시작
  77. $starttime = date("H:i:s");
  78. }
  79. if($starttime){//시간 및 표시 계산
  80. $now = date("H:i:s");
  81. $nowlist = 폭발(":",$now);
  82. $starttimelist = 폭발(":",$starttime);
  83. $time_count = $nowlist[0]*3600 $nowlist[1]*60 $nowlist[2] - ($starttimelist[0]*3600 $starttimelist[1]*60 $starttimelist[2]);
  84. $min = 층($time_count / 60);
  85. $sec = $time_count % 60;
  86. $timeshow = ($min>9?$min:"0".$min).":".($sec>9?$sec:"0".$sec);
  87. }else{
  88. $timeshow = "00:00";//게임이 중지되면 시간이 중지됩니다
  89. }
  90. function openNode($i,$j){//노드를 열도록 설정합니다. 열려 있는 경우
  91. global $rows;//행 가져오기
  92. global $cols;//열 가져오기
  93. 전역 $data;//데이터 가져오기
  94. if($i < 0 || $i >= $rows || $j < 0 || $j >= $cols || $data ["open".$i."_".$j])return;
  95. //노드가 아니거나 열렸습니다.
  96. $data["open".$i."_" .$j] = 1;//노드 열기
  97. if($data["data".$i."_".$j] > 0)return;//계속해야 합니까?
  98. openNode($i - 1,$j - 1);
  99. openNode($i - 1,$j);
  100. openNode($i - 1,$j 1);
  101. openNode($i,$j - 1);
  102. openNode($i,$j 1);
  103. openNode($i 1,$j - 1);
  104. openNode($i 1,$j);
  105. openNode($i 1,$j 1);
  106. }
  107. ?>
  108. <머리>
  109. 扫雷游戏
  110. <본문>
  111. < ;/tr>
  112. <테이블 너비="100%" border="1px">
  113. 行数:
    列数
    雷数:
  114. if($checkflag == 1)echo "恭喜,雷全part清掉了!
    ";
  115. else if($checkflag == 2)echo "大挫了,又被雷炸死了
    ";
  116. ?>
  117. 复代码

    希望本文所述对大家的php程序设计有所帮助。

  118. " value="">
  119. " value="">
  120. ')" style="width:20px;height:20px;">
  121. PHP


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿