素人がゲームプログラム作成に挑戦
ゲームを買うお金がないから、ゲームを作るというゲームに挑戦!言語はVisual Basic(VB)をメインにC++、C#、Javaは参考程度
Entries
新しい記事を書く事で広告が消せます。
- --------
- カテゴリ : スポンサー広告
- コメント : -
- トラックバック : -
-件のコメント
コメントの投稿
-件のトラックバック
- トラックバックURL
- http://hinagis.blog33.fc2.com/tb.php/38-830769c0
- この記事に対してトラックバックを送信する(FC2ブログユーザー)
マップチップ その5
- ジャンル : コンピュータ
- スレッドテーマ : Visual Basic
今回はキャラクタの移動範囲を制御するプログラムを作成していきます。
制御しなければならない条件としては以下のようなものがあげられます。
ということで、まずはこの制御から組み込んでいきます。
今までのフォームの大きさは640×480で、キャラクタなどのマップチップサイズは32×32です。
で、キャラクタ等を表示する座標は画像の左上が基準点となっています。
このことから、キャラクタが移動できるフォーム内の範囲は(0,0)から(640-32,480-32)となります。
これをキー入力時の処理として制御させればよいわけです。
条件としては、移動後の座標が範囲内かどうかになります。
範囲内ならそのまま移動させ、範囲外になりそうなら移動をキャンセルさせればよいわけです。
今までのプログラムではキャラクタ画像サイズを32と直接書いていましたが、今回から定数に変更しています。
制御しなければならない条件としては以下のようなものがあげられます。
- 画面外に移動しようとしたとき
- 川に移動しようとしたとき
- 海に移動しようとしたとき
ということで、まずはこの制御から組み込んでいきます。
今までのフォームの大きさは640×480で、キャラクタなどのマップチップサイズは32×32です。
で、キャラクタ等を表示する座標は画像の左上が基準点となっています。
このことから、キャラクタが移動できるフォーム内の範囲は(0,0)から(640-32,480-32)となります。
これをキー入力時の処理として制御させればよいわけです。
条件としては、移動後の座標が範囲内かどうかになります。
範囲内ならそのまま移動させ、範囲外になりそうなら移動をキャンセルさせればよいわけです。
Public Class CharaClass
・・・(省略)
Const ImgWidth As Integer = 32 '画像横幅
Const ImgHeight As Integer = 32 '画像縦幅
Public Sub New(ByVal px As Integer, ByVal py As Integer)
・・・(省略)
End Sub
Public Sub Update(ByVal nowTime As Double, ByVal elapsedTime As Double)
・・・(省略)
End Sub
Public Sub Draw(ByVal g As Graphics)
g.DrawImage(img, locate.X, locate.Y, imgRect(direct, iNo), GraphicsUnit.Pixel)
End Sub
Public Sub KeyDown(ByVal k As Keys)
If MoveFlg = False Then
Select Case k
・・・・(省略)
End Select
destination = New PointF(locate.X + velocity.X, locate.Y + velocity.Y) '移動後の座標設定
If destination.X < 0 OrElse destination.X > 640 - ImgWidth _
OrElse destination.Y < 0 OrElse destination.Y > 480 - ImgHeight Then
velocity = New Point(0, 0)
MoveFlg = False
End If
End If
End Sub
End Class
・・・(省略)
Const ImgWidth As Integer = 32 '画像横幅
Const ImgHeight As Integer = 32 '画像縦幅
Public Sub New(ByVal px As Integer, ByVal py As Integer)
・・・(省略)
End Sub
Public Sub Update(ByVal nowTime As Double, ByVal elapsedTime As Double)
・・・(省略)
End Sub
Public Sub Draw(ByVal g As Graphics)
g.DrawImage(img, locate.X, locate.Y, imgRect(direct, iNo), GraphicsUnit.Pixel)
End Sub
Public Sub KeyDown(ByVal k As Keys)
If MoveFlg = False Then
Select Case k
・・・・(省略)
End Select
destination = New PointF(locate.X + velocity.X, locate.Y + velocity.Y) '移動後の座標設定
If destination.X < 0 OrElse destination.X > 640 - ImgWidth _
OrElse destination.Y < 0 OrElse destination.Y > 480 - ImgHeight Then
velocity = New Point(0, 0)
MoveFlg = False
End If
End If
End Sub
End Class
今までのプログラムではキャラクタ画像サイズを32と直接書いていましたが、今回から定数に変更しています。
0件のコメント
コメントの投稿
0件のトラックバック
- トラックバックURL
- http://hinagis.blog33.fc2.com/tb.php/38-830769c0
- この記事に対してトラックバックを送信する(FC2ブログユーザー)



