タイトル | : 何処が可笑しいのでしょう? |
記事No | : 11324 |
投稿日 | : 2008/02/04(Mon) 11:50 |
投稿者 | : 猫 |
Option Explicit
'自機の構造体変数の定義 Public Type MyType X As Integer Y As Integer End Type Public MyType As MyType Public X_Max As Integer Public Y_Max As Integer Sub main() 'メインフォームを表示する ' CrtWidth = 32 * 8: CrtHeight = 32 * 8 Load MainForm MainForm.Show Do DoEvents If GetAsyncKeyState(vbKeySpace) Then MainForm.opPict.Visible = False MainForm.My.Visible = True MainRoutine ElseIf GetAsyncKeyState(vbKeyEscape) Then Exit Do End If Loop End End Sub
Sub MainRoutine() '初期値 MainForm.My.Move (MainForm.MainPict.Width - MainForm.My.Width) / 2, MainForm.MainPict.Height - MainForm.My.Height MyType.X = MainForm.My.Left MyType.Y = MainForm.My.Top X_Max = MainForm.MainPict.Width - MainForm.My.Width Y_Max = MainForm.MainPict.Height - MainForm.My.Height Do MyMove MyShow
DoEvents If GetAsyncKeyState(vbKeyEscape) Then Exit Do End If Loop End Sub
Sub MyMove() '自機移動処理 Select Case stick() Case 8 '上キー MyType.X = MyType.X MyType.Y = MyType.Y - 1 If MyType.Y <= 0 Then MyType.Y = 0 Case 2 '下キー MyType.X = MyType.X MyType.Y = MyType.Y + 1 If MyType.Y >= Y_Max Then MyType.Y = Y_Max Case 6 '右キー MyType.X = MyType.X + 1 MyType.Y = MyType.Y If MyType.X >= X_Max Then MyType.X = X_Max Case 4 '左キー MyType.X = MyType.X - 1 MyType.Y = MyType.Y If MyType.X <= 0 Then MyType.X = 0 Case 9 '右上キー MyType.X = MyType.X + 1 MyType.Y = MyType.Y - 1 If MyType.X >= X_Max Then MyType.X = X_Max If MyType.Y <= 0 Then MyType.Y = 0 Case 7 '左上キー MyType.X = MyType.X - 1 MyType.Y = MyType.Y - 1 If MyType.X <= 0 Then MyType.X = 0 If MyType.Y <= 0 Then MyType.Y = 0 Case 3 '右下キー MyType.X = MyType.X + 1 MyType.Y = MyType.Y + 1 If MyType.X >= X_Max Then MyType.X = X_Max If MyType.Y >= Y_Max Then MyType.Y = Y_Max Case 1 '左下キー MyType.X = MyType.X - 1 MyType.Y = MyType.Y + 1 If MyType.X <= 0 Then MyType.X = 0 If MyType.Y >= Y_Max Then MyType.Y = Y_Max End Select End Sub
Sub MyShow() MainForm.My.Move MyType.X, MyType.Y, MainForm.My.Width, MainForm.My.Height ' BitBlt MainForm.MainPict.hDC, MyType.X, MyType.Y, 240, 330, MainForm.My.hDC, 0, 0, SrcCopy End Sub
↑のコードを標準モジュールに記載し、実行しています。 キーボード検知をAPIで行い、押されたキーによりMyを動かすまでは問題なくできているのですが、動きが早過ぎている感があります。 私としてはもう少しゆったりとした動きにしたいのですが、何か方法はないでしょうか?
後、実を言いますと、画像転送のAPIも定義済みなのですが、現在コメント表示のBitBlt文では正常に動いてくれません。 こちらも何が問題なのかわかりませんので、ご指摘頂ければ幸いです。
|