当前位置:首页 > PHP文摘 > 列表

PHP约瑟夫小游戏的代码示例

发布:smiling 来源: PHP粉丝网  添加日期:2019-12-20 15:43:15 浏览: 评论:0 

本篇文章给大家带来的内容是关于PHP约瑟夫小游戏的代码示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

30 个人在一条船上,超载,需要 15 人下船。于是人们排成一队,排队的位置即为他们的编号。报数,从 1 开始,数到 9 的人下船。如此循环,直到船上仅剩 15 人为止,问都有哪些编号的人下船了呢?

  1. $numberStart = 30; //开始的人数 
  2.  
  3. $numberLive  = 15; //最终剩下的人数 
  4.  
  5. $numKill     = 9;  //"中奖"号码 
  6.  
  7. $peopleList  = []; 
  8.  
  9. for($i=1; $i<=$numberStart$i++){ 
  10.  
  11.     $peopleList[$i]=1; //1表示生 0表示死 
  12.  
  13.  
  14.   
  15.  
  16. $numSay=0;//报号 
  17.  
  18. $i     =1;//索引(人员位置编号,相当于枪指向谁) 
  19.  
  20. $maxIndex = $numberStart
  21.  
  22.   
  23.  
  24. while (true){ 
  25.  
  26.     if($i > $maxIndex ){//循环一圈后,重新开始 
  27.  
  28.         $i = 1; 
  29.  
  30.     } 
  31.  
  32.     if($numberStart==$numberLive){//游戏结束条件 
  33.  
  34.         break
  35.  
  36.     } 
  37.  
  38.     if($peopleList[$i]==0){//如果这个人已经"离开"了,让下一个人报号 
  39.  
  40.         $i++; 
  41.  
  42.         continue
  43.  
  44.     } 
  45.  
  46.     $numSay++; 
  47.  
  48.     if($numSay==$numKill){ 
  49.  
  50.         $peopleList[$i] = 0; 
  51.  
  52.         $numSay         = 0; 
  53.  
  54.         echo $i.'号下船了'.PHP_EOL; 
  55.  
  56.         $numberStart--; 
  57.  
  58.     } 
  59.  
  60.     $i++; 
  61.  
  62.  
  63. print_r($peopleList); 
  64.  
  65. /* 
  66.  
  67. 9号下船了 
  68.  
  69. 18号下船了 
  70.  
  71. 27号下船了 
  72.  
  73. 6号下船了 
  74.  
  75. 16号下船了 
  76.  
  77. 26号下船了 
  78.  
  79. 7号下船了 
  80.  
  81. 19号下船了 
  82.  
  83. 30号下船了 
  84.  
  85. 12号下船了 
  86.  
  87. 24号下船了 
  88.  
  89. 8号下船了 
  90.  
  91. 22号下船了 
  92.  
  93. 5号下船了 
  94.  
  95. 23号下船了 
  96.  
  97. */ 

Tags: PHP约瑟夫小游戏

分享到: