回答編集履歴

4

追記の追記の追記

2015/11/23 21:59

投稿

T.Kanno
T.Kanno

スコア915

test CHANGED
@@ -102,6 +102,6 @@
102
102
 
103
103
  else if ((area == 5) || (area == 8) || (area ==13) || (area ==22)) {
104
104
 
105
+      自分なら switch(area) を使いますけど…
105
106
 
106
107
 
107
-

3

追記の追記

2015/11/23 21:59

投稿

T.Kanno
T.Kanno

スコア915

test CHANGED
@@ -75,3 +75,33 @@
75
75
 
76
76
 
77
77
  が実行されてしまっています
78
+
79
+
80
+
81
+ ---
82
+
83
+ その後、追記
84
+
85
+
86
+
87
+ 他も見てみると、if 文の比較式の記述が、かなり誤っているみたいです。
88
+
89
+
90
+
91
+ if (area = 24) { ← 常に真になる   
92
+
93
+      ↓
94
+
95
+ if (area == 24) {
96
+
97
+
98
+
99
+ else if (area = 5 || 8 || 13 || 22) {   ← 常に真になる
100
+
101
+      ↓
102
+
103
+ else if ((area == 5) || (area == 8) || (area ==13) || (area ==22)) {
104
+
105
+
106
+
107
+

2

少し追記

2015/11/23 21:55

投稿

T.Kanno
T.Kanno

スコア915

test CHANGED
@@ -36,7 +36,15 @@
36
36
 
37
37
 
38
38
 
39
- おそらく使用したい比較演算子は == ではないですか?
39
+ おそらく使用したい演算子は代入演算子の = ではなく、比較演算子は == ではないですか?
40
+
41
+
42
+
43
+ ex.)
44
+
45
+ if (a == 0) {
46
+
47
+
40
48
 
41
49
 
42
50
 

1

予想される結果の追記

2015/11/23 21:48

投稿

T.Kanno
T.Kanno

スコア915

test CHANGED
@@ -37,3 +37,33 @@
37
37
 
38
38
 
39
39
  おそらく使用したい比較演算子は == ではないですか?
40
+
41
+
42
+
43
+ ---
44
+
45
+
46
+
47
+ この場合、比較式ではなく記述された代入式の値が0かどうかで偽か真かが決まります。
48
+
49
+
50
+
51
+ if (a = 0) の式 a = 0 の結果は 0 ですので、条件式は常に成立しません。
52
+
53
+ if (a = 1) の式 a = 1 の結果は 1 ですので、条件式は常に成立します。
54
+
55
+ if (a = 2) の式 a = 2 の結果は 2 ですので、条件式は常に成立します。
56
+
57
+
58
+
59
+ つまり move は a の値にかかわらず、呼び出されるたびに
60
+
61
+
62
+
63
+ car.x = car.x + 50;
64
+
65
+ car.y = car.y - 50;
66
+
67
+
68
+
69
+ が実行されてしまっています