回答編集履歴

2

フローチャート追加

2019/09/11 08:55

投稿

fana
fana

スコア11663

test CHANGED
@@ -67,3 +67,27 @@
67
67
 
68
68
 
69
69
  全く違いますよね.
70
+
71
+
72
+
73
+ ---
74
+
75
+
76
+
77
+ 変数lockonMoveに関係する部分についてフローチャートを簡単に描いてみました.
78
+
79
+ (Key[KEY_INPUT_R] == 1 && playerY == enemyY)という条件は図に書込むには長ったらしいので,下図ではこれを「条件1」と記述しています.
80
+
81
+ 処理は一番上から始まって矢印の順で進んでいきます.
82
+
83
+ 菱型がifに相当する処理分岐です.条件を満たす場合は下方向に,満たさない場合は右方向に処理が進みます.
84
+
85
+
86
+
87
+ 差は一目瞭然かと思います.
88
+
89
+ 右側のフローチャートでは,lockonMove=1;の処理を通らずに++lockonMove;の処理を通るフローが存在することがわかります.
90
+
91
+ **処理の流れがわからない場合はこういうのを自分で描いてみて確認すると良いでしょう.**
92
+
93
+ ![イメージ説明](2c27fb08068cefc966dd8d8c753674d9.png)

1

より明確化

2019/09/11 08:55

投稿

fana
fana

スコア11663

test CHANGED
@@ -26,11 +26,13 @@
26
26
 
27
27
 
28
28
 
29
+ 上記の抜粋コードでは,
30
+
29
31
  if (Key[KEY_INPUT_R] == 1 && playerY == enemyY) の条件を**満たしたとき**,
30
32
 
31
33
 
32
34
 
33
- * lockonMoveの値が1になります.lockonMove=1; と書いてあるので.
35
+ * lockonMoveの値が1になります.lockonMove=1; と書いてあるので.
34
36
 
35
37
  * **その次に**,if (lockonMove > 0)の条件の判定が行われます.今,lockonMoveの値は1なので,条件を満たします.そうすると ++lockonMove; が実行されるので,値は2になります.
36
38
 
@@ -38,7 +40,7 @@
38
40
 
39
41
  以上に関しては大丈夫でしょうか?
40
42
 
41
-
43
+ lockonMoveの値は1になった後,直後にすぐ2になるわけです.間髪入れずに(?) 結果は2になりますね.
42
44
 
43
45
 
44
46