回答編集履歴

2

コピペして編集すべきところ忘れてたので調整

2019/02/05 06:09

投稿

rururu3
rururu3

スコア5545

test CHANGED
@@ -34,9 +34,13 @@
34
34
 
35
35
  {
36
36
 
37
+ // 右の棒のY
38
+
37
39
  d = mouseY ;
38
40
 
41
+
42
+
39
- // 左の棒の動く処理をしている(ので当たりそうなときしか左の棒動かないよね)
43
+ // 左の棒のY
40
44
 
41
45
  if ((keyPressed ==true) && (key == 'w')){
42
46
 
@@ -100,6 +104,8 @@
100
104
 
101
105
  void draw() {
102
106
 
107
+  // 移動処理(更新処理)
108
+
103
109
  update();
104
110
 
105
111
 

1

移動仕様がわかったので修正

2019/02/05 06:09

投稿

rururu3
rururu3

スコア5545

test CHANGED
@@ -1,4 +1,8 @@
1
- 質問の文章はどうしたいのかわからなかったので、棒が動かない理由だけコメントである程度わかるように解説しました。
1
+ W押したとき押さなかったとき上下したいわかったので、こんな感じになるのかな
2
+
3
+
4
+
5
+ ※位置更新と描画は分けたほうがわかりやすいです(UpdateとDraw)
2
6
 
3
7
 
4
8
 
@@ -24,13 +28,35 @@
24
28
 
25
29
 
26
30
 
27
- void draw() {
31
+ void update() {
28
32
 
33
+ // 棒の動き
34
+
35
+ {
36
+
29
- d = mouseY ;
37
+ d = mouseY ;
38
+
39
+ // 左側の棒の動く処理をしている(ので当たりそうなときしか左の棒動かないよね)
40
+
41
+ if ((keyPressed ==true) && (key == 'w')){
42
+
43
+ w = w + 5;
44
+
45
+ }
46
+
47
+ else {
48
+
49
+ w = w - 1;
50
+
51
+ }
52
+
53
+ }
54
+
55
+
56
+
57
+ // ボールの動き
30
58
 
31
59
  x += vx;
32
-
33
-
34
60
 
35
61
  y += vy;
36
62
 
@@ -40,37 +66,53 @@
40
66
 
41
67
  }
42
68
 
69
+
70
+
71
+ // 当たり判定
72
+
73
+ // 左の棒(ただしXが棒より左の判定がないので入れてね)
74
+
75
+ if (x - 20 < 30 && vx < 0) {
76
+
77
+ if (y > w && y < w + 100) {
78
+
79
+ vx = -vx;
80
+
81
+ }
82
+
83
+ }
84
+
85
+ // 右の棒(ただしXが棒より右の判定がないので入れてね)
86
+
87
+ else if (x + 20 > 470 && vx > 0) {
88
+
89
+ if (y > d && y < d + 100) {
90
+
91
+ vx = -vx;
92
+
93
+ }
94
+
95
+ }
96
+
97
+ }
98
+
99
+
100
+
101
+ void draw() {
102
+
103
+ update();
104
+
105
+
106
+
43
107
  background(204);
44
108
 
45
109
  ellipse(x, y, 40, 40);
46
110
 
47
- // ボールが棒のX軸に近いときだけif内の処理をする
111
+
48
-
49
- if (x - 20 < 30 || x + 20 > 470) {
50
-
51
- // 右側の棒にあたったときはX速度を-1倍(跳ね返る)
52
-
53
- if (y > d && y < d + 100)
54
-
55
- vx = -vx;
56
-
57
-
58
-
59
- // 左側の棒の動く処理をしている(ので当たりそうなときしか左の棒動かないよね)
60
-
61
- if ((keyPressed ==true) && (key == 'w')){
62
-
63
- w = w + 5;
64
-
65
- }else
66
-
67
- w = w - 1;
68
-
69
- }
70
112
 
71
113
  rect(0, w, 30, 100); //長方形描写
72
114
 
73
- rect(470, mouseY, 30, 100);
115
+ rect(470, d, 30, 100);
74
116
 
75
117
  }
76
118