이 기사의 예에서는 PHP로 구현된 간단한 지뢰 찾기 게임을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 내용은 다음과 같습니다.
-
- $init = $_POST["init"];//게임 재시작
- $clickvalue = $_POST["clickvalue"] ;//지뢰 제거
- $checkflag = 0;//승리 또는 패배
- $click_count = 0;//클릭 횟수
- if($init == null && $clickvalue == null){//초기화
- $_POST = array();//배열로 POST 설정
- $_POST["rows"] = 9;//행 설정
- $_POST["cols"] = 9;//set cols
- $_POST["num"] = 10;//set num
- $_POST["timeshow"] = "00:00"; //시작 시간 설정
- $init = true;//초기화 설정
- }
- $rows = $_POST["rows"];//행 가져오기
- $cols = $_POST["cols" ];//열 가져오기
- $num = $_POST["num"];//숫자 가져오기
- $starttime = $_POST["starttime"];//시작 시간 가져오기
- if($init) {// 초기화
- $timeshow = "00:00";//시작 시간 설정
- $data = array();//데이터 초기화
- for($i=0;$i<$rows ;$i ){//모든 행
- for($j=0;$j<$cols;$j ){//모든 열
- $data["data".$i."_ ".$j] = 0;//null로 내 설정
- $data["open".$i."_".$j] = 0;//닫은 노드 설정
- }
- }
- $i=0;//인덱스를 재설정하고 광산을 설정합니다(임의 설정)
- while($i < $num){//광산 개수
- $r = rand(0 ,$rows - 1);//행 인덱스
- $c = rand(0,$cols - 1);//col 인덱스
- if($data["data".$r."_". $c] == 0){//지뢰가 아닌 경우
- $data["data".$r."_".$c] = 100;//지뢰가 있는 노드 설정
- $i ;
- }
- }
- for($i=0;$i<$rows;$i ){//모든 행
- for($j=0;$j<$cols;$ j ){//모든 열
- if($data["data".$i."_".$j] == 100)continue;
- //광산이 아니며 인접한 열 수를 설정합니다. 광산
- $cnt = 0;
- if($i - 1 >= 0 && $j - 1 >= 0 && $data["data".($i - 1)."_".($j - 1)] == 100)$cnt ;//왼쪽 위
- if($i - 1 >= 0 && $data["data".($i - 1)."_".$j] == 100)$cnt ;//왼쪽
- if($i - 1 >= 0 && $j 1 < $cols && $data["data".($i - 1)."_".($j 1)] == 100)$cnt ;//왼쪽 아래
- if($j - 1 >= 0 && $data["data".$i."_".($j - 1)] == 100) $cnt ;//상위
- if($j 1 < $cols && $data["data".$i."_".($j 1)] == 100)$cnt ;//하위
- if($i 1 < $rows && $j - 1 >= 0 && $data["data".($i 1)."_".($j - 1)] == 100)$ cnt ;//오른쪽 위
- if($i 1 < $rows && $data["data".($i 1)."_".$j] == 100)$cnt ;//오른쪽
- if($i 1 < $rows && $j 1 < $cols && $data["data".($i 1)."_".($j 1)] == 100)$cnt ; //오른쪽 아래
- $data["data".$i."_".$j] = $cnt;//세트 번호
- }
- }
- }else{
- $ data = $_POST;//데이터 가져오기
- if($data["data".$clickvalue] == 100){
- //사용자 클릭 값 확인
- $checkflag = 2;// 광산을 클릭하면 게임이 종료됩니다
- for($i=0;$i<$rows;$i ){//모든 행
- for($j=0;$j<$cols;$j ){//모든 열
- $data["open".$i."_".$j] = 1;
- //모든 노드를 열도록 설정
- }
- }
- }else{
- $node =explod("_", $clickvalue);//클릭 노드 가져오기
- openNode($node[0],$node[1]);//노드 설정
- for($i=0;$i<$rows;$i ){//모든 행
- for($j=0;$j<$cols;$j ){//모든 행 열기 cols
- if($data["open".$i."_".$j] == 1)$click_count ;
- //오픈 노드 수 가져오기
- }
- }
- if($rows*$cols - $click_count == $num)$checkflag = 1;
- //모든 노드가 열려 있으면 게임 클리어
- }
- }
- if($checkflag == 0 && $click_count == 1){
- //게임이 시작되면 시간 시작
- $starttime = date("H:i:s");
- }
- if($starttime){//시간 및 표시 계산
- $now = date("H:i:s");
- $nowlist = 폭발(":",$now);
- $starttimelist = 폭발(":",$starttime);
- $time_count = $nowlist[0]*3600 $nowlist[1]*60 $nowlist[2] - ($starttimelist[0]*3600 $starttimelist[1]*60 $starttimelist[2]);
- $min = 층($time_count / 60);
- $sec = $time_count % 60;
- $timeshow = ($min>9?$min:"0".$min).":".($sec>9?$sec:"0".$sec);
- }else{
- $timeshow = "00:00";//게임이 중지되면 시간이 중지됩니다
- }
- function openNode($i,$j){//노드를 열도록 설정합니다. 열려 있는 경우
- global $rows;//행 가져오기
- global $cols;//열 가져오기
- 전역 $data;//데이터 가져오기
- if($i < 0 || $i >= $rows || $j < 0 || $j >= $cols || $data ["open".$i."_".$j])return;
- //노드가 아니거나 열렸습니다.
- $data["open".$i."_" .$j] = 1;//노드 열기
- if($data["data".$i."_".$j] > 0)return;//계속해야 합니까?
- openNode($i - 1,$j - 1);
- openNode($i - 1,$j);
- openNode($i - 1,$j 1);
- openNode($i,$j - 1);
- openNode($i,$j 1);
- openNode($i 1,$j - 1);
- openNode($i 1,$j);
- openNode($i 1,$j 1);
- }
- ?>
-
- <머리>
-
-
扫雷游戏
-
- <본문>
-
-
|