質問編集履歴
2
コードの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -29,7 +29,7 @@
|
|
29
29
|
global $myCards, $hostCards, $myTotal, $hostTotal, $turn, $result, $cards;
|
30
30
|
unset($result['result']);
|
31
31
|
$turn['turn'] = false;
|
32
|
-
for ($i=1; $i<=10; $i++) {
|
32
|
+
for ($i=1; $i<=10; $i++) { // こちらが問題の箇所です。
|
33
33
|
$cards['cards'] = $i;
|
34
34
|
}
|
35
35
|
for ($i=1; $i<=10; $i++) {
|
@@ -41,10 +41,9 @@
|
|
41
41
|
for ($i=1; $i<=10; $i++) {
|
42
42
|
$cards['cards'] = $i;
|
43
43
|
}
|
44
|
-
$cards['cards'] = array_column($cards, 'cards');
|
45
44
|
|
46
45
|
// shuffle(array_column($cards, 'cards'));
|
47
|
-
$myCards['myCards'] = array_pop($cards);
|
46
|
+
$myCards['myCards'] = array_pop($cards); // ここも問題かもしれません。
|
48
47
|
$myCards['myCards'] = array_pop($cards);
|
49
48
|
$hostCards['hostCards'] = array_pop($cards);
|
50
49
|
$hostCards['hostCards'] = array_pop($cards);
|
@@ -162,10 +161,11 @@
|
|
162
161
|
コード
|
163
162
|
```
|
164
163
|
> 引用テキスト
|
164
|
+
初回リセットが完了しました。
|
165
165
|
自分の手札:Array ( [0] => 7 [1] => 10 [2] => Array ( [0] => 8 [1] => 7 [2] => Array ( [0] => 5 [1] => 7 [2] => Array ( [0] => 5 [1] => 6 [2] => Array ( [0] => 3 [1] => 2 [2] => Array ( [0] => 4 [1] => 1 [2] => Array ( [0] => 3 [1] => 6 [2] => Array ( [0] => Array ( [0] => Array ( [0] => Array ( [0] => Array ( [0] => Array ( [0] => Array ( [0] => Array ( [0] => Array ( [0] => Array ( [0] => Array ( [0] => Array ( [0] => Array ( [0] => Array ( [0] => Array ( [0] => Array ( [0] => Array ( [0] => Array ( [0] => Array ( [0] => Array ( [0] => Array ( [0] => Array ( [0] => Array ( [0] => Array ( [0] => Array ( [0] => Array ( [0] => Array ( [0] => Array ( [0] => Array ( [0] => Array ( [0] => ) [1] => 3 [2] => 8 ) [1] => 10 [2] => 9 ) ) [1] => 3 [2] => 5 [3] => 5 ) ) [1] => 4 [2] => 3 [3] => 4 ) ) [1] => 4 [2] => 9 [3] => 1 ) ) [1] => 3 [2] => 10 ) ) [1] => 6 [2] => Array ( [0] => Array ( [0] => 5 [1] => 1 [2] => 8 [3] => 6 [4] => Array ( [0] => Array ( [0] => 3 [1] => 1 [2] => 8 [3] => 7 [4] => 5 [5] => Array ( [0] => Array ( [0] => 1 [1] => 9 [2] => 6 [3] => 5 [4] => Array ( [0] => Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 8 [4] => 10 [5] => 7 [6] => 2 [7] => 7 [8] => 9 [9] => 10 [10] => 3 [11] => 3 [12] => 7 [13] => 6 [14] => 1 [15] => 8 [16] => 9 [17] => 5 [18] => 9 [19] => 7 [20] => 2 [21] => 8 [22] => 6 [23] => 10 [24] => 4 [25] => 2 [26] => 1 [27] => Array ( [0] => Array ( [0] => Array ( [0] => 8 [1] => 6 [2] => 2 [3] => 7 [4] => 2 [5] => 2 [6] => 5 [7] => 3 [8] => 7 [9] => 1 [10] => 4 [11] => 5 [12] => 9 [13] => 7 [14] => 9 [15] => 9 [16] => 1 [17] => 9 [18] => 6 [19] => 3 [20] => 10 [21] => 6 [22] => 10 [23] => Array ( [0] => 2 [1] => 3 [2] => 10 [3] => 3 [4] => 3 [5] => 6 [6] => 7 [7] => 5 [8] => 5 [9] => 6 [10] => 6 [11] => 4 [12] => 7 [13] => 8 [14] => 10 [15] => 5 [16] => 1 [17] => 4 [18] => 6 [19] => 9 [20] => 5 [21] => 7 [22] => 8 [23] => 1 [24] => 9 [25] => 7 [26] => 10 [27] => 1 [28] => 8 [29] => 9 [30] => 8 [31] => 2 [32] => 9 [33] => 4 [34] => Array ( [0] => 5 [1] => 9 [2] => 8 [3] => 1 [4] => 3 [5] => 3 [6] => 1 [7] => 5 [8] => 10 [9] => 7 [10] => 8 [11] => 4 [12] => 8 [13] => 6 [14] => 9 [15] => 6 [16] => 1 [17] => 4 [18] => 4 [19] => 1 [20] => Array ( [0] => 9 [1] => 5 [2] => 8 [3] => 2 [4] => 8 [5] => 10 [6] => 5 [7] => 6 [8] => 6 [9] => 3 [10] => 7 [11] => 4 [12] => 7 [13] => 2 [14] => 3 [15] => 1 [16] => 8 [17] => 6 [18] => 2 [19] => 9 [20] => 6 [21] => 4 [22] => 10 [23] => 9 [24] => 9 [25] => 1 [26] => 4 [27] => 10 [28] => 8 [29] => 3 [30] => Array ( [0] => 7 [1] => 1 [2] => 7 [3] => 3 [4] => 2 [5] => 9 [6] => 8 [7] => 5 [8] => 5 [9] => 2 [10] => 1 [11] => 3 [12] => 6 [13] => 4 [14] => 8 [15] => 8 [16] => 10 [17] => 6 [18] => 4 [19] => 1 [20] => 8 [21] => 9 [22] => 4 [23] => 4 [24] => 5 [25] => 2 [26] => 6 [27] => 5 [28] => 3 [29] => 1 [30] => 7 [31] => 9 [32] => 10 [33] => 6 [34] => 2 [35] => 10 [36] => 7 ) [31] => 4 [32] => 10 [33] => 5 [34] => 7 [35] => 5 [36] => 1 ) [21] => 6 [22] => 9 [23] => 7 [24] => 2 [25] => 10 [26] => 5 [27] => 3 [28] => 4 [29] => 10 [30] => 5 [31] => 2 [32] => 7 [33] => 6 [34] => 9 [35] => 3 [36] => 2 ) [35] => 4 [36] => 10 ) [24] => 10 [25] => 1 [26] => 8 [27] => 5 [28] => 10 [29] => 7 [30] => 3 [31] => 5 [32] => 4 [33] => 8 ) [1] => 5 [2] => 8 [3] => 10 [4] => 6 [5] => 1 [6] => 2 [7] => 5 [8] => 9 [9] => 4 [10] => 8 [11] => 9 [12] => 7 [13] => 6 [14] => 4 [15] => 3 [16] => 1 [17] => 8 [18] => 5 [19] => 1 [20] => 10 [21] => 7 [22] => 6 [23] => 4 [24] => 10 [25] => 9 [26] => 8 [27] => 3 [28] => 1 [29] => 3 [30] => 2 [31] => 7 [32] => 7 [33] => 2 [34] => 3 [35] => 6 [36] => 4 ) ) [28] => 4 [29] => 4 [30] => 10 [31] => 5 [32] => 6 [33] => 9 [34] => 8 [35] => 4 ) ) [5] => 8 [6] => 9 [7] => 9 [8] => 10 [9] => 9 [10] => 3 [11] => 5 [12] => 2 [13] => 7 [14] => 4 [15] => 6 [16] => 1 [17] => 10 [18] => 1 [19] => 3 [20] => 3 [21] => 7 [22] => 4 [23] => 8 [24] => 7 [25] => 1 [26] => 6 [27] => 7 [28] => 8 [29] => 10 [30] => 2 [31] => 2 [32] => 5 [33] => 8 [34] => 2 [35] => 10 ) ) [6] => 6 [7] => 6 [8] => 4 [9] => 3 [10] => 2 [11] => 7 [12] => 5 [13] => 2 [14] => 3 [15] => 8 [16] => 5 [17] => 9 [18] => 8 [19] => 2 [20] => 4 [21] => 10 [22] => 6 [23] => 1 [24] => 9 [25] => 7 [26] => 6 [27] => 10 [28] => 10 [29] => 8 [30] => 1 [31] => 7 [32] => 10 [33] => 4 [34] => 2 [35] => 5 ) ) [5] => 4 [6] => 2 [7] => 2 [8] => 7 [9] => 10 [10] => 5 [11] => 5 [12] => 8 [13] => 2 [14] => 1 [15] => 6 [16] => 7 [17] => 5 [18] => 8 [19] => 2 [20] => 3 [21] => 6 [22] => 9 [23] => 9 [24] => 4 [25] => 1 [26] => 6 [27] => 1 [28] => 3 [29] => 9 [30] => 9 [31] => 7 [32] => 8 [33] => 10 [34] => 3 ) ) ) ) [1] => 2 [2] => 2 ) ) [1] => 7 [2] => 5 ) ) ) ) ) ) ) [1] => 1 [2] => 2 ) [1] => 7 [2] => 3 ) [1] => 2 [2] => 5 ) [1] => 5 [2] => 2 ) [1] => 4 [2] => 5 ) [1] => 7 [2] => 2 ) [1] => 2 [2] => 3 ) ) ) ) ) ) ) )
|
166
166
|
|
167
167
|
合計:0
|
168
168
|
|
169
|
-
以下
|
169
|
+
以下似たような結果が出力されます。
|
170
170
|
|
171
171
|
|
1
コードの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -7,144 +7,156 @@
|
|
7
7
|
```php
|
8
8
|
<?php
|
9
9
|
session_start();
|
10
|
-
|
11
|
-
|
10
|
+
|
12
|
-
$cards = array(); //山札
|
13
|
-
|
11
|
+
if(empty($_GET)) { // 初回時のリセット
|
14
|
-
|
12
|
+
resetGame();
|
15
|
-
|
16
|
-
i
|
13
|
+
print '初回リセットが完了しました。';
|
17
|
-
if(isset($_SESSION['cards'])) $cards = $_SESSION['cards'];
|
18
|
-
if(isset($_SESSION['player'])) $player = $_SESSION['player'];
|
19
|
-
if(isset($_SESSION['opponent'])) $opp = $_SESSION['opponent'];
|
20
14
|
}
|
15
|
+
|
21
|
-
|
16
|
+
$myCards['myCards'] = &$_SESSION['myCards']; // 自分の手札
|
17
|
+
$_SESSION['myCards'] = &$myCards['myCards'];
|
18
|
+
$hostCards['hostCards'] = &$_SESSION['hostCards']; // 相手の手札
|
19
|
+
$_SESSION['hostCards'] = &$hostCards['hostCards'];
|
20
|
+
$myTotal; // 自分の合計
|
21
|
+
$hostTotal; // 相手の合計
|
22
|
+
$cards['cards'] = &$_SESSION['cards']; // 山札
|
22
|
-
|
23
|
+
$_SESSION['cards'] = &$cards['cards'];
|
24
|
+
$turn['turn'] = &$_SESSION['turn']; // 自分のターンが終わるとtrueになる
|
25
|
+
$_SESSION['turn'] = &$turn['turn'];
|
26
|
+
$result;
|
27
|
+
|
28
|
+
function resetGame() { // 山札をリセット & シャッフル & 配る
|
29
|
+
global $myCards, $hostCards, $myTotal, $hostTotal, $turn, $result, $cards;
|
30
|
+
unset($result['result']);
|
31
|
+
$turn['turn'] = false;
|
32
|
+
for ($i=1; $i<=10; $i++) {
|
23
|
-
$cards
|
33
|
+
$cards['cards'] = $i;
|
34
|
+
}
|
24
|
-
|
35
|
+
for ($i=1; $i<=10; $i++) {
|
25
|
-
$cards
|
36
|
+
$cards['cards'] = $i;
|
37
|
+
}
|
38
|
+
for ($i=1; $i<=10; $i++) {
|
26
|
-
|
39
|
+
$cards['cards'] = $i;
|
40
|
+
}
|
41
|
+
for ($i=1; $i<=10; $i++) {
|
42
|
+
$cards['cards'] = $i;
|
43
|
+
}
|
44
|
+
$cards['cards'] = array_column($cards, 'cards');
|
45
|
+
|
46
|
+
// shuffle(array_column($cards, 'cards'));
|
27
|
-
|
47
|
+
$myCards['myCards'] = array_pop($cards);
|
28
|
-
|
48
|
+
$myCards['myCards'] = array_pop($cards);
|
29
|
-
|
49
|
+
$hostCards['hostCards'] = array_pop($cards);
|
30
|
-
|
50
|
+
$hostCards['hostCards'] = array_pop($cards);
|
51
|
+
$myTotal = array_sum(array_column($myCards,'myCards'));
|
52
|
+
$hostTotal = array_sum(array_column($hostCards,'hostCards'));
|
31
53
|
}
|
32
|
-
|
33
|
-
|
54
|
+
|
34
|
-
|
35
|
-
//対戦相手の思考と終局判定
|
36
|
-
if( isset($_GET['hit']) || isset($_GET['stand']) ){
|
37
|
-
|
55
|
+
function hit() { // カードを引く
|
38
|
-
|
56
|
+
global $myCards, $myTotal, $cards, $turn;
|
39
|
-
|
57
|
+
$turn['turn'] = false;
|
40
|
-
|
58
|
+
if(count($myCards['myCards']) < 12){
|
59
|
+
$myCards['myCards'] = array_pop($cards);
|
60
|
+
$myTotal = array_sum(array_column($myCards, 'myCards'));
|
41
|
-
|
61
|
+
}else {
|
62
|
+
return print 'これ以上ヒットはできません。';
|
42
|
-
|
63
|
+
}
|
43
64
|
}
|
44
|
-
|
45
|
-
|
65
|
+
|
46
|
-
$player_total = sum_up_hands($player);
|
47
|
-
|
66
|
+
function stand() { // スタンド後の処理
|
48
|
-
|
67
|
+
global $hostCards, $hostTotal, $cards, $turn, $myTotal, $result;
|
68
|
+
$hostTotal = array_sum(array_column($hostCards, 'myCards'));
|
49
|
-
if($
|
69
|
+
if($hostTotal < 17) { // ホストは手札の合計が17以下の場合カードを引く
|
50
|
-
|
51
|
-
$
|
70
|
+
$hostCards['hostCards'] = array_pop($cards);
|
52
|
-
|
71
|
+
return stand();
|
72
|
+
}else {
|
53
|
-
$
|
73
|
+
$turn['turn'] = true;
|
54
|
-
|
74
|
+
|
55
|
-
f
|
75
|
+
if(is_bool($turn['turn'])){
|
56
|
-
//山札を用意する
|
57
|
-
$cards = array();
|
58
|
-
$suits = array('spade', 'heart', 'diamond', 'club');
|
59
|
-
|
60
|
-
f
|
76
|
+
if ($myTotal == $hostTotal) {
|
77
|
+
if ($myTotal < 22 && $hostTotal < 22) {
|
78
|
+
return $result = '同点の為、引き分けです。';
|
79
|
+
} else {
|
80
|
+
return $result = 'あなたとホストがバーストした為、引き分けです。';
|
81
|
+
}} elseif ($myTotal > $hostTotal) {
|
61
|
-
|
82
|
+
if ($myTotal > 21) {
|
83
|
+
return $result = 'あなたがバーストした為、ホスト勝ちです。';
|
62
|
-
|
84
|
+
} else {
|
63
|
-
|
85
|
+
return $result = 'あなたの勝ちです。';
|
86
|
+
}} elseif ($myTotal < $hostTotal) {
|
64
|
-
|
87
|
+
if ($hostTotal > 21) {
|
88
|
+
return $result = 'ホストがバーストした為、あなたの勝ちです。';
|
65
|
-
|
89
|
+
} else {
|
90
|
+
return $result = 'ホストの勝ちです';
|
66
91
|
}
|
67
92
|
}
|
68
|
-
shuffle($cards);
|
69
|
-
|
93
|
+
}
|
70
94
|
}
|
71
|
-
|
72
|
-
function sum_up_hands($hands){
|
73
|
-
$ace = 0;
|
74
|
-
$total = 0;
|
75
|
-
foreach($hands as $card){
|
76
|
-
$num = $card['num'];
|
77
|
-
if($num > 10){
|
78
|
-
$total += 10;
|
79
|
-
} else if($num === 1){
|
80
|
-
$ace++;
|
81
|
-
$total += 1;
|
82
|
-
} else {
|
83
|
-
$total += $num;
|
84
|
-
}
|
85
|
-
}
|
86
|
-
//Aの処理
|
87
|
-
if(!empty($ace)){
|
88
|
-
$add = 10 * floor( (21 - $total) / 10 );
|
89
|
-
if($add > 0) $total += $add;
|
90
|
-
}
|
91
|
-
return $total;
|
92
95
|
}
|
93
96
|
?>
|
97
|
+
<?php
|
98
|
+
|
99
|
+
if(! empty($_GET['reset'])) {$_SESSION['reset'] = $_GET['reset'];}
|
94
|
-
|
100
|
+
if(! empty($_GET['hit'])) {$_SESSION['hit'] = $_GET['hit'] ;}
|
101
|
+
if(! empty($_GET['stand'])) {$_SESSION['stand'] = $_GET['stand'];}
|
102
|
+
|
103
|
+
if($_SESSION['reset'] && $_SESSION['turn'] === true) {
|
104
|
+
unset($_SESSION['reset']);
|
105
|
+
print 'リセットされました';
|
106
|
+
resetGame();
|
107
|
+
}
|
95
|
-
|
108
|
+
if($_SESSION['hit'] && $_SESSION['turn'] === false) {
|
109
|
+
unset($_SESSION['hit']);
|
110
|
+
print 'ヒットされました';
|
111
|
+
hit();
|
112
|
+
}
|
113
|
+
if($_SESSION['stand'] && $_SESSION['turn'] === false) {
|
114
|
+
unset($_SESSION['stand']);
|
115
|
+
print 'スタンドされました.';
|
116
|
+
stand();
|
117
|
+
}
|
118
|
+
?>
|
119
|
+
|
120
|
+
<!DOCTYPE html>
|
121
|
+
<html lang="ja">
|
96
122
|
<head>
|
123
|
+
<meta charset="UTF-8">
|
97
|
-
<
|
124
|
+
<link rel="stylesheet" href="brack-jack.css">
|
98
|
-
<title>B
|
125
|
+
<title>BrackJack</title>
|
99
126
|
</head>
|
100
127
|
<body>
|
128
|
+
<!-- 自分の手札を表示 -->
|
101
|
-
<p>
|
129
|
+
<p>自分の手札:<?php
|
102
|
-
<?php
|
103
|
-
foreach($
|
130
|
+
// foreach($myCards as $mv) {
|
104
|
-
|
131
|
+
// print $mv.', ';
|
105
|
-
}
|
106
|
-
?>
|
107
|
-
|
132
|
+
// }
|
108
|
-
Total:
|
109
|
-
<?php
|
110
|
-
echo $player_total;
|
111
|
-
if($player_total > 21){
|
112
|
-
|
133
|
+
print_r($myCards['myCards']);
|
113
|
-
} else if($end_game === true && $player_total > $opp_total){
|
114
|
-
echo ' Win';
|
115
|
-
}
|
116
|
-
?>
|
117
|
-
</p>
|
134
|
+
?></p>
|
118
|
-
|
119
|
-
<
|
135
|
+
<!-- 自分の手札の合計を表示 -->
|
120
|
-
|
121
|
-
<p>Opponent's Hand:
|
122
|
-
<?php
|
123
|
-
foreach($opp as $card){
|
124
|
-
|
136
|
+
<p>合計:<?= $myTotal; ?></p>
|
125
|
-
}
|
126
|
-
?>
|
127
|
-
<br />
|
128
|
-
Total:
|
129
|
-
<?php
|
130
|
-
echo $opp_total;
|
131
|
-
if($opp_total > 21){
|
132
|
-
echo ' Burst';
|
133
|
-
} else if($end_game === true && $opp_total > $player_total){
|
134
|
-
echo ' Win';
|
135
|
-
}
|
136
|
-
?>
|
137
|
-
</p>
|
138
|
-
|
139
|
-
<hr />
|
140
|
-
|
141
|
-
<
|
137
|
+
<hr>
|
138
|
+
<!-- ホストの手札を表示 -->
|
139
|
+
<p>相手の手札:<?php
|
140
|
+
// foreach($hostCards as $hv) {
|
141
|
+
// print $hv.', ';
|
142
|
+
// }
|
143
|
+
print_r($hostCards);
|
144
|
+
?></p>
|
145
|
+
<!-- ホストの手札の合計を表示 -->
|
146
|
+
<p>合計:<?= $hostTotal; ?>
|
147
|
+
<hr>
|
148
|
+
<?= $result ?></p>
|
149
|
+
<hr>
|
150
|
+
<!-- $_GETの送信 -->
|
151
|
+
<?php if ($_SESSION['turn'] === true) :?>
|
152
|
+
<a href="?reset=reset">リセット</a>
|
153
|
+
<?php endif; ?>
|
142
|
-
<?php if($
|
154
|
+
<?php if ($_SESSION['turn'] === false) :?>
|
143
|
-
<
|
155
|
+
<a href="?hit=hit">ヒット</a>
|
156
|
+
<?php endif; ?>
|
157
|
+
<?php if ($_SESSION['turn'] === false) :?>
|
144
|
-
<
|
158
|
+
<a href="?stand=stand">スタンド</a>
|
145
|
-
<?php endif;?>
|
159
|
+
<?php endif;?>
|
146
|
-
<li><a href="?reset">Reset</a></li>
|
147
|
-
</ul>
|
148
160
|
</body>
|
149
161
|
</html>
|
150
162
|
コード
|