アプリ版:「スタンプのみでお礼する」機能のリリースについて

 課題でもぐらたたきのようなものを作っています。
1ゲーム終了後、スタートボタンを押すと、再度ゲームができるようにする
2背景をクリックすると減点
 
 このような課題が出ていろいろやってみたのですがうまくいきません。何かいい方法はないでしょうか。

A 回答 (3件)

#2です。


すいません。ソースを全部見せてもらいたいわけではなくて、
どちらかというとあなたのVBに対する理解度を知りたいのです。
理解度がどの程度のものか、ということがわかればアドバイスもしやすいのです。
・ボタンを押したらどういうイベントに飛ぶかわからない
・飛ぶイベントはわかるけど、そこで何をやればいいかわからない。
・イベントって何?
というようにあなたがどの程度までVBが書けるのか。これがアドバイスする上で重要です。

まったくわからないのであれば、アドバイスのしようがないです。
正直、仕様の説明をしていただければ、ここにコードをすべて書き出すことも可能ですが
それでは課題の意味が無いですよね。

課題の本質は多分、VBでのロジックを理解するということではなく、
仕様を理解し、そこからコードに落とす個所にあると思うんですよ。

私が提示したソースはヒントです。
あなたがわからないといっている、ボタンとフォームのクリックイベントについての
サンプルを提示しました。
このコードからあなたの求めている仕様に当てはめてみてほしかったのです。

・・・とまぁ、何も返答しないものよくないので。
まず
----------
Private Sub Command1_Click()
Timer1.Enabled = True
'レベルの設定(魚の速さ)
If Option1.Value = True Then Timer1.Interval = 500
If Option2.Value = True Then Timer1.Interval = 1000
If Option3.Value = True Then Timer1.Interval = 2000

End Sub

この個所がスタートボタンのイベントですよね?
この下にゲームの状態を初期化したものを入れます。
単純に時間(t)と点数(n)を初期化すればよいです。

あと
-----------
Private Sub Image1_Click()
'画面がクリックされたら
'スタート前は得点加算をしない。スタート後は加算する
If Timer1.Enabled = True Then
End If
n = n + 1
Text1.Text = n '得点表示

End Sub

この個所はおそらく
-----------
Private Sub Image1_Click()
'画面がクリックされたら
'スタート前は得点加算をしない。スタート後は加算する
If Timer1.Enabled = True Then
 n = n + 1
 Text1.Text = n '得点表示
End If

End Sub

これが正解でしょう。

次いで、フォームをクリックしたときです。
私が先ほど書いたコードの
---------------
Private Sub Form_Click()

End Sub

この個所がフォームをクリックしたときのイベントです。
ここで減点の処理を行えばよいです。
    • good
    • 0
この回答へのお礼

ありがとうございます。何とかなりました。

お礼日時:2004/06/11 15:05

どこで詰まっているのかわかりませんのでコメントのしようがありません・・・。



言えることは
スタートボタンのClickイベントでタイマー、点数あたりの変数を初期化。
FormのClickイベントで点数を減点。

このような感じで作れば問題ないかと思います。

簡単なサンプルとしては以下の感じで。
CmdStartがスタートボタン
lblPointが点数を表示するラベル
lblTimerが残り時間(秒)を表示するラベル
ゲームの時間は30秒
----------------------------------------
Private iPoint as Integer'点数
Private iTimer as Integer'残り時間(秒)

Private Sub Form_Load()

'タイマーのインターバルを1秒に設定
Timer1.Interval = 1000
iPoint = 0
iTimer = 30
Timer1.Enabled = False

End Sub

Private Sub Timer1_Timer()

iTimer = iTimer - 1
call DrawScreen
if iTimer < 1 Then
Timer1.Enabled = False
End if


End Sub


Private Sub CmdStart_Click()

iPoint = 0
iTimer = 30
Timer1.Enabled = True
Call DrawScreen

End Sub

Private Sub Form_Click()

iPoint = iPoint - 1
Call DrawScreen

End Sub

Private Sub DrawScreen

lblPoint.Caption = iPoint
lblTimer.Caption = iTimer
Me.Refresh

End Sub

-----------------
テストしていませんので、動作保証しません。
使用する際は自己責任でお願いいたします。

この回答への補足

説明不足で申し訳ございませんでした。
といっても自分でも説明のしかたがわからないので、プログラムは下記のとおりです。

Dim t, n As Integer
Private Sub Command1_Click()
Timer1.Enabled = True
'レベルの設定(魚の速さ)
If Option1.Value = True Then Timer1.Interval = 500
If Option2.Value = True Then Timer1.Interval = 1000
If Option3.Value = True Then Timer1.Interval = 2000

End Sub
Private Sub Form_Load()
Randomize
Timer1.Interval = 2000 'タイマー時間間隔をミリ秒の単位でセット

End Sub
Private Sub Image1_Click()
'画面がクリックされたら
'スタート前は得点加算をしない。スタート後は加算する
If Timer1.Enabled = True Then
End If
n = n + 1
Text1.Text = n '得点表示

End Sub

Private Sub Timer1_Timer()
'ゲーム時間を変数に置き換え
gametime = 10
' ゼロから、フォーム画面の幅から画像の幅を引いた値までのランダムな整数を得る
X1 = Fix(Rnd * (Form1.ScaleWidth - Image1.Width))
' ゼロから、フォーム画面の高さから画像の高さを引いた値までのランダムな整数を得る
Y1 = Fix(Rnd * (Form1.ScaleHeight - Image1.Height))
' ランダムに決定した座標 X1, Y1 に画像を移動
Image1.Move X1, Y1
'タイマーが動いた回数を変数 tで数える
t = t + 1
'何回タイマーが動くか計算
If t = gametime * 1000 / Timer1.Interval Then
Timer1.Enabled = False
Form2.Show 'form2に飛ぶ
End If
End Sub

補足日時:2004/06/11 13:24
    • good
    • 0

新人研修か何かの課題ですか?


FORMにコマンドボタンがついているのでしょうか?

○スタートボタン
クリックしたらENABLEをFALSEにする。
ゲーム終了後ENBALEをTRUEにする。

○背景
もぐらを何で表示させているかわかりませんが
FORMのクリックイベントで座標を取得し
その座標がモグラでなければ減点

としたらいかがでしょうか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!