プロが教える店舗&オフィスのセキュリティ対策術

何度も質問させて頂いてます。すみません、

下記のプログラムはこの場で教えて頂いたプログラムで、
実行すると●の後を▲や■が追いかける動きをします。
下記のプログラムをある程度使用して
1~20の数字が順々で追いかけっこする
プログラムを作成するにはどのようにすればいいのでしょうか…
できればプログラムは長めにならず
20の数字から簡単に増やすことのできるような
そんなプログラムが作成したいです…

どなたかアドバイスお持ちの方
教えて下さいお願いします...

Dim time1 As Integer, time As Integer
Dim X As Integer, Y As Integer
Dim X1 As Integer, Y1 As Integer
Dim X2 As Integer, Y2 As Integer
Dim maru As String, yoko As String, tate As String
Dim sankaku As String, shikaku As String

Sub 描画()
Cells(Y2, X2).Value = shikaku
Cells(Y1, X1).Value = sankaku
Cells(Y, X).Value = maru
End Sub

Sub 削除()
Cells(Y2, X2).Value = ""
End Sub

Sub 待機()
For time1 = 0 To 1000
For time2 = 0 To 1000
Next
Next
End Sub

Sub 座標移動()

X2 = X1
Y2 = Y1
X1 = X
Y1 = Y
If yoko = "右" Then
X = X + 1
Else
X = X - 1
End If

If X = 30 Then
yoko = "左"
ElseIf X = 1 Then
yoko = "右"
End If

If tate = "上" Then
Y = Y + 1
Else
Y = Y - 1
End If

If Y = 20 Then
tate = "下"
ElseIf Y = 1 Then
tate = "上"
End If

End Sub

Sub main()

maru = "●"
sankaku = "▲"
shikaku = "■"
X = 1
Y = 1
X1 = 1
Y1 = 1
X2 = 1
Y2 = 1
yoko = "右"
tate = "上"

Do
描画
待機
削除
待機
座標移動
Loop

End Sub

「Excel VBA ・・・教えてください」の質問画像

A 回答 (1件)

こんばんは。



前回(http://oshiete1.goo.ne.jp/qa5187630.html)の回答にあったように、座標を計算する必要があるのは先頭だけで、あとは順にずらして行けばよく、最後尾の表示を消せばよいことになります。

●■▲の3種類だったものが、20種類に増えただけで、考え方は同じですね。数が増えたので、効率的に処理するには配列を利用するのが妥当かと。

それぞれの表示オブジェクト(●、■、▲とか1,2,3・・・など)の座標を配列に記憶するようにしておいて、その座標移動と表示処理をループで行うようにすれば、たいした手間にはならないでしょう。
(初期設定などは追加の必要がありますが…)

要は、1回の移動処理に際して、「n番の座標にn-1番の座標を入れて、表示内容をn番のもで上書きする」ということをループで行えばよいです。
先頭に新しい値が入るので、実際には、ループ処理は後ろから行う方が簡単だと思います。(最初に最後尾を消して、順に後ろから表示してゆく)
(配列そのものを逆順に作っておくという方法もありますが)


残念ながら、前々回の回答は、ほとんど参考にはならなかったようですね。
・セルに依存しないオブジェクトの利用と、方向・位置の自由度
・タイマーによる時間管理  など
    • good
    • 0
この回答へのお礼

いえいえいえ!
とても参考になっております
ただ私ができなさ過ぎなだけで
fujillinさんのアドバイスには
助けて頂いてます。

伝わりにくいと思いますが
毎回ありがとうございます!

お礼日時:2009/08/07 21:50

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