回答編集履歴

1

返信による追記(コードや引用を使用したかったため)

2016/08/23 03:36

投稿

SASAHARA
SASAHARA

スコア247

test CHANGED
@@ -31,3 +31,87 @@
31
31
 
32
32
 
33
33
  お試し頂ければと思います。
34
+
35
+
36
+
37
+
38
+
39
+ 追記
40
+
41
+ ---
42
+
43
+
44
+
45
+ 返信読みまして、こちらに回答させて頂きます。
46
+
47
+
48
+
49
+ > たぶん、whileの中にないと、時間は1秒ごとに変化していかないと思うので、whileの中にあるのだと思います。
50
+
51
+
52
+
53
+ これはまさにその通りだと思います。
54
+
55
+ なので(書き方わかりにくかったかもですね)自分の上記回答の、
56
+
57
+
58
+
59
+ > def kaisiでゲームが始まった直後にあると思われるwhileの前でtimeを初期化してやればいいのではないでしょうか。
60
+
61
+
62
+
63
+ ここが該当すると思いました。
64
+
65
+ 私もrubyのinitializeの書き方がわからないので、ものすごく簡単に修正するなら、
66
+
67
+
68
+
69
+ ```ruby
70
+
71
+  //kaisi呼ばれた後
72
+
73
+
74
+
75
+  time = 0             // ←ここで初期化
76
+
77
+  while true do         // ゲーム開始のwhile
78
+
79
+
80
+
81
+   time = window3.getTime  // ここを通るたびに1秒追加
82
+
83
+   while event = SDL::Event2.poll do
84
+
85
+    case event
86
+
87
+    when SDL::Event2::Quit
88
+
89
+     exit
90
+
91
+    when SDL::Event2::MouseButtonDown
92
+
93
+     x = event.x
94
+
95
+     y = event.y
96
+
97
+ ```
98
+
99
+ のように、whileの前(上)で初期化してやればいいかと思います。得点なんかも合わせてやるといいだろうと思いますし、initializeもやるならゲーム開始前ですね。ゲームオーバー後にタイトルに行った直後とかでもいいかもしれません。
100
+
101
+
102
+
103
+ また、
104
+
105
+ > getTimeに書いてあるものをinitalizeに書くことにより、タイムを初期化することができるのだと思ったのですが、どうでしょう
106
+
107
+
108
+
109
+ getTimeは1秒を計算して返す処理(でいいのかな?)となっているため、初期化はgetTimeで取得した時間が蓄積されているtimeでなければいけないのではないかなと思います(同様に得点やクリック回数の初期化も格納されている変数を初期化する必要があります。本来ならそれをinitalizeするのがスマートなやり方かと思います)
110
+
111
+
112
+
113
+
114
+
115
+ 参考になれば幸いです。
116
+
117
+