Maison développement back-end tutoriel php Chaîne PHP et méthodes de contrôle de processus

Chaîne PHP et méthodes de contrôle de processus

Jun 08, 2018 pm 05:58 PM
php jeu de dragueur de mines

Cet article présente principalement les méthodes de contrôle des chaînes et des processus PHP. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

L'exemple de cet article décrit un simple jeu de dragueur de mines implémenté en PHP, comme suit :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

<?php

$init = $_POST["init"];//game restart

$clickvalue = $_POST["clickvalue"];//minesweeping

$checkflag = 0;//Victory or defeat

$click_count = 0;//clicks count

if($init == null && $clickvalue == null){//initialization

  $_POST = array();//set POST with a array

  $_POST["rows"] = 9;//set rows

  $_POST["cols"] = 9;//set cols

  $_POST["num"] = 10;//set num

  $_POST["timeshow"] = "00:00"; //set starttime

  $init = true;//set initialization

}

$rows = $_POST["rows"];//get rows

$cols = $_POST["cols"];//get cols

$num = $_POST["num"];//get num

$starttime = $_POST["starttime"];//get starttime

if($init){// is initialization

  $timeshow = "00:00";//set starttime

  $data = array();//data initialization

  for($i=0;$i<$rows;$i++){//all the rows

    for($j=0;$j<$cols;$j++){//all the cols

      $data["data".$i."_".$j] = 0;//set mine with null

      $data["open".$i."_".$j] = 0;//set node with close

    }

  }

  $i=0;//reset the index,and set the mines(Random setting)

  while($i < $num){//number of mine

    $r = rand(0,$rows - 1);//row&#39;s index

    $c = rand(0,$cols - 1);//col&#39;s index

    if($data["data".$r."_".$c] == 0){//if not a mine

      $data["data".$r."_".$c] = 100;//set the node with a mine

      $i++;

    }

  }

  for($i=0;$i<$rows;$i++){//all the rows

    for($j=0;$j<$cols;$j++){//all the cols

      if($data["data".$i."_".$j] == 100)continue;

      //is not a mine , set number of adjacent mines 

      $cnt = 0;

      if($i - 1 >= 0 && $j - 1 >= 0 && $data["data".($i - 1)."_".($j - 1)] == 100)$cnt++;//upper left

      if($i - 1 >= 0 && $data["data".($i - 1)."_".$j] == 100)$cnt++;//left

      if($i - 1 >= 0 && $j + 1 < $cols && $data["data".($i - 1)."_".($j + 1)] == 100)$cnt++;//lower left

      if($j - 1 >= 0 && $data["data".$i."_".($j - 1)] == 100)$cnt++;//upper

      if($j + 1 < $cols && $data["data".$i."_".($j + 1)] == 100)$cnt++;//lower

      if($i + 1 < $rows && $j - 1 >= 0 && $data["data".($i + 1)."_".($j - 1)] == 100)$cnt++;//upper right

      if($i + 1 < $rows && $data["data".($i + 1)."_".$j] == 100)$cnt++;//right

      if($i + 1 < $rows && $j + 1 < $cols && $data["data".($i + 1)."_".($j + 1)] == 100)$cnt++;//lower right

      $data["data".$i."_".$j] = $cnt;//set number

    }

  }

}else{

  $data = $_POST;//get data

  if($data["data".$clickvalue] == 100){

  //check the value of users click

    $checkflag = 2;//if click on a mine,gameover

    for($i=0;$i<$rows;$i++){//all the rows

      for($j=0;$j<$cols;$j++){//all the cols

        $data["open".$i."_".$j] = 1;

        //set all nodes to open

      }

    }

  }else{

    $node = explode("_", $clickvalue);//get the node of click

    openNode($node[0],$node[1]);//set nodes to open

    for($i=0;$i<$rows;$i++){//all the rows

      for($j=0;$j<$cols;$j++){//all the cols 

        if($data["open".$i."_".$j] == 1)$click_count++;

        //get the number of opennode 

      }

    }

    if($rows*$cols - $click_count == $num)$checkflag = 1;

    //if all the node is open,game clear 

  }

}

if($checkflag == 0 && $click_count == 1){

//if game is start ,time start

  $starttime = date("H:i:s");

}

if($starttime){//Computing time and display

  $now = date("H:i:s");

  $nowlist = explode(":",$now);

  $starttimelist = explode(":",$starttime);

  $time_count = $nowlist[0]*3600+$nowlist[1]*60 + $nowlist[2] - ($starttimelist[0]*3600+$starttimelist[1]*60 + $starttimelist[2]);

  $min = floor($time_count / 60);

  $sec = $time_count % 60;

  $timeshow = ($min>9?$min:"0".$min).":".($sec>9?$sec:"0".$sec);

}else{

  $timeshow = "00:00";//if game is stop , time stop

}

function openNode($i,$j){//set nodes to open,if it is can open

  global $rows;//get the rows

  global $cols;//get the cols

  global $data;//get the data

  if($i < 0 || $i >= $rows || $j < 0 || $j >= $cols || $data["open".$i."_".$j])return;

  //it is not a node,or it has been opened

  $data["open".$i."_".$j] = 1;//open the node

  if($data["data".$i."_".$j] > 0)return;//need to continue?

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

}

?>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>扫雷游戏</title>

</head>

<body>

<form action="" method="post">

<input type="hidden" name="starttime" value="<?php echo $starttime;?>"/>

<input type="hidden" name="clickvalue"/>

<table style="top:10px;left:0px;z-index:0;margin:10px auto" border="1px">

<tr>

<td width="100px" align="center">

  <table width="100%" border="1px">

    <tr><td>行数:</td><td><input type="text" name="rows" value="<?php echo $rows;?>" size="1"/></td></tr>

    <tr><td>列数</td><td><input type="text" name="cols" value="<?php echo $cols;?>" size="1"/></td></tr>

    <tr><td>雷数:</td><td><input type="text" name="num" value="<?php echo $num;?>" size="1"/></td></tr>

    <tr><td colspan="2" align="center"><input type="submit" value="重新开始" name="init"/></td></tr>

  </table>

</td>

<td width="50px" align="center"><font size="10px"><?php echo $checkflag < 2?"☺":"☹";?></font></td>

<td width="100px" align="center">

<?php 

  if($checkflag == 1)echo "恭喜,雷全部清掉了!<br />";

  else if($checkflag == 2)echo "太挫了,又被雷炸死了<br />";

?>

  <input type="text" name="timeshow" value="<?php echo $timeshow;?>" size="4" readonly >

</td>

</tr>

</table>

<table style="top:155px;left:0px;z-index:0;margin:10px auto" border="1px">

<?php for($i=0;$i<$rows;$i++){ ?>

  <tr>

  <?php for($j=0;$j<$cols;$j++){  ?>

    <td style="width:24px;height:24px;" align="center">

    <input type="hidden" name="open<?php echo $i."_".$j;?>" value="<?php echo $data["open".$i."_".$j];?>">

    <input type="hidden" name="data<?php echo $i."_".$j;?>" value="<?php echo $data["data".$i."_".$j];?>">

    <?php if($data["open".$i."_".$j]){//show the value of node,if the node has been opened ?>

      <?php echo $data["data".$i."_".$j]==100?"☀":$data["data".$i."_".$j];?>

    <?php }else{//show a button ,if the node has not been opened ?>

      <input type="button" value="" onclick="clickNum(&#39;<?php echo $i."_".$j;?>&#39;)" style="width:20px;height:20px;">

    <?php } ?>

    </td>

  <?php } ?>

  </tr>

<?php } ?>

</table>

</form>

<script type="text/javascript">

function clickNum(value){//click a node

  <?php if($checkflag > 0)echo &#39;return;&#39;;//if game is clear or game is over ?>

  document.forms[0].clickvalue.value = value;

  document.forms[0].submit();

}

<?php if($checkflag == 0 && $click_count>0)echo &#39;setTimeout("timerun()",1000);&#39;;//time running ?>

<?php if($checkflag == 1)echo &#39;alert("恭喜,雷全部清掉了!");&#39;;?>

<?php if($checkflag == 2)echo &#39;alert("太挫了,又被雷炸死了");&#39;;?>

function timerun(){//time running

  var timelist = document.forms[0].timeshow.value.split(":");

  var sec = parseInt(timelist[1],10) + 1;

  var min = sec < 60?parseInt(timelist[0],10):(parseInt(timelist[0],10) + 1);

  document.forms[0].timeshow.value = (min>9?min:"0"+min)+":"+(sec > 9?sec:"0"+sec);

  setTimeout("timerun()",1000);

}

</script>

</body>

</html>

Copier après la connexion

Résumé : Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il vous sera utile à l'apprentissage de chacun.

Recommandations associées :

PHP empêche les attaques de sites Web en interdisant les accès IP fréquents

Requêtes et requêtes implémentées par PHP+Mysql+ La zone de liste jQuery sélectionne

php pour implémenter le formatage des nombres, la fonction fonctionnelle consistant à ajouter des virgules tous les trois chiffres du nombre

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Grow A Garden - Guide de mutation complet
4 Il y a quelques semaines By DDD
<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Système de fusion, expliqué
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel Java
1677
14
Tutoriel PHP
1279
29
Tutoriel C#
1257
24
PHP et Python: différents paradigmes expliqués PHP et Python: différents paradigmes expliqués Apr 18, 2025 am 12:26 AM

PHP est principalement la programmation procédurale, mais prend également en charge la programmation orientée objet (POO); Python prend en charge une variété de paradigmes, y compris la POO, la programmation fonctionnelle et procédurale. PHP convient au développement Web, et Python convient à une variété d'applications telles que l'analyse des données et l'apprentissage automatique.

L'utilisation continue de PHP: raisons de son endurance L'utilisation continue de PHP: raisons de son endurance Apr 19, 2025 am 12:23 AM

Ce qui est encore populaire, c'est la facilité d'utilisation, la flexibilité et un écosystème fort. 1) La facilité d'utilisation et la syntaxe simple en font le premier choix pour les débutants. 2) étroitement intégré au développement Web, excellente interaction avec les demandes HTTP et la base de données. 3) L'énorme écosystème fournit une multitude d'outils et de bibliothèques. 4) La nature active et la nature open source les adaptent à de nouveaux besoins et tendances technologiques.

Que se passe-t-il si Session_Start () est appelé plusieurs fois? Que se passe-t-il si Session_Start () est appelé plusieurs fois? Apr 25, 2025 am 12:06 AM

Plusieurs appels vers session_start () se traduiront par des messages d'avertissement et d'éventuels remplacements de données. 1) PHP émettra un avertissement, ce qui incite la session à démarrer. 2) Il peut provoquer un écrasement inattendu des données de session. 3) Utilisez session_status () pour vérifier l'état de la session pour éviter les appels répétés.

La compatibilité de l'IIS et du PHP: une plongée profonde La compatibilité de l'IIS et du PHP: une plongée profonde Apr 22, 2025 am 12:01 AM

IIS et PHP sont compatibles et sont implémentés via FastCGI. 1.IIS Transforme la demande de fichier .php au module FastCGI via le fichier de configuration. 2. Le module FastCGI démarre le processus PHP pour traiter les demandes d'amélioration des performances et de la stabilité. 3. Dans les applications réelles, vous devez prêter attention aux détails de la configuration, débogage des erreurs et optimisation des performances.

Quelle est la signification de la fonction session_start ()? Quelle est la signification de la fonction session_start ()? May 03, 2025 am 12:18 AM

Session_Start () IsCrucialInPhpFormanAgingUsersessions.1) ItinitiateSanEwSessionIfNoneExists, 2) ConsomaSanExistingSession, and3) SetSasessionCooKieforContinuityAcrossrequests, permettant aux applications liées à la réaction et à la personne.

Compositeur: aider le développement de PHP à travers l'IA Compositeur: aider le développement de PHP à travers l'IA Apr 29, 2025 am 12:27 AM

L'IA peut aider à optimiser l'utilisation du compositeur. Les méthodes spécifiques incluent: 1. Optimisation de la gestion des dépendances: AI analyse les dépendances, recommande la meilleure combinaison de versions et réduit les conflits. 2. Génération de code automatisée: AI génère des fichiers composer.json conformes aux meilleures pratiques. 3. Améliorer la qualité du code: l'IA détecte des problèmes potentiels, fournit des suggestions d'optimisation et améliore la qualité du code. Ces méthodes sont implémentées par l'apprentissage automatique et les technologies de traitement du langage naturel pour aider les développeurs à améliorer l'efficacité et la qualité du code.

Utilisation de Laravel: rationalisation du développement Web avec PHP Utilisation de Laravel: rationalisation du développement Web avec PHP Apr 19, 2025 am 12:18 AM

Laravel optimise le processus de développement Web, y compris: 1. Utilisez le système de routage pour gérer la structure URL; 2. Utilisez le moteur de modèle de lame pour simplifier le développement de la vue; 3. Gérer les tâches longues à travers les files d'attente; 4. Utiliser Eloquentorm pour simplifier les opérations de base de données; 5. Suivez les meilleures pratiques pour améliorer la qualité et la maintenabilité du code.

PHP et IIS: les faire travailler ensemble PHP et IIS: les faire travailler ensemble Apr 21, 2025 am 12:06 AM

La configuration et l'exécution de PHP sur IIS nécessitent les étapes suivantes: 1) Télécharger et installer PHP, 2) Configurer IIS et ajout de module FastCGI, 3) Créer et configurer un pool d'applications, 4) Créer un site Web et lier à un pool d'applications. Grâce à ces étapes, vous pouvez facilement déployer des applications PHP sur votre serveur Windows et améliorer la stabilité et l'efficacité des applications en configurant la mise à l'échelle et l'optimisation des performances.

See all articles