ブロック崩し
Posted: 2010年7月22日(木) 11:47
ブロック崩しで4方向にバーをやりたいんですけど、どうすればいいですか?
また、背景とかはどう入力すればいいですか?
プログラムはVBでC#です。
Public Class Form1
'定数
Const BAR_HABA As Integer = 120 'バーの幅を指定(整数)
Const BAR_SPEED As Integer = 9 'バーのスピードを指定(整数)
Const TAMA_SPEED As Integer = 5 '弾の初期スピード(整数)
Const TAMA_MAXSP As Integer = 8 '弾の最大スピード(整数)
Const TEN_HANSYA As Integer = 1 '弾が壁に1回反射したときの得点(整数)
Const TEN_UKETORI As Integer = 10 '弾をバーで1回受け止めたときの得点(整数)
Const TEN_HIT As Integer = 100 'ブロックに1回あたったときの点数(整数)
Const TEN_SPEED As Integer = 10000 '何点ごとに弾のスピードが1段階上がるか(整数)
Dim BLOCK_COLOR() As Brush = { _
Brushes.Cyan, Brushes.Crimson, Brushes.Magenta, _
Brushes.LawnGreen, Brushes.Cyan, Brushes.Yellow, _
Brushes.White _
} 'HPごとのブロックの色(最後の色はHPが7以上のとき適用)
'変数(システム関係)
Dim g As Graphics '画面に描くためのペン
Dim playing As Boolean 'プレイ中かどうか(True,False)
Dim keyHidari As Boolean '左が押されているかどうか(True,False)
Dim keyMigi As Boolean '右が押されているかどうか(True,False)
Dim i As Integer '繰り返し計算用として使用
Dim j As Integer '繰り返し計算用として使用
'変数(ゲーム関係)
Dim level As Integer '現在のレベル(整数)
Dim score As Integer '現在のスコア(整数)
Dim tamaX As Double '弾の中心位置X(数値)
Dim tamaY As Double '弾の中心位置Y(数値)
Dim kakudo As Double '弾の角度・計算用(数値)
Dim tamaMukiX As Double '弾の向きX(数値)
Dim tamaMukiY As Double '弾の向きY(数値)
Dim tamaYosokuX As Double '弾の予測位置X・当たり判定計算用(数値)
Dim tamaYosokuY As Double '弾の予測位置Y・当たり判定計算用(数値)
Dim bar As Double
Dim blockHP(10, 5) As Integer 'ブロックのHP
Dim blockX As Integer '弾のブロック換算位置X・当たり判定計算用(整数)
Dim blockY As Integer '弾のブロック換算位置X・当たり判定計算用(整数)
Dim blockAll As Boolean 'ブロックがすべて消えたかどうか(True,False)
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Keys.H Then
keyHidari = True '左が押され始めた!(左キーをON)
End If
If e.KeyCode = Keys.J Then
keyMigi = True '右が押され始めた!(右キーをON)
End If
End Sub
Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp
If e.KeyCode = Keys.H Then
keyHidari = False '左が離された!(左キーをOFF)
End If
If e.KeyCode = Keys.J Then
keyMigi = False '右が離された!(右キーをOFF)
End If
End Sub 'バーの左隅位置(数値)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'画面とペンの初期化
PictureGamen.Image = New Bitmap(PictureGamen.Width, PictureGamen.Height)
g = Graphics.FromImage(PictureGamen.Image)
'その他の初期化
Randomize() '乱数の初期化
playing = False 'プレイ中ではない状態
'タイトルロゴを表示
g.Clear(Color.Black) '画面をクリアする
g.DrawString("ブロック崩し", New Font("MS 明朝", 32, GraphicsUnit.Pixel), Brushes.Yellow, 64, 144)
PictureGamen.Invalidate() '画面を更新する
'キー入力を受け付けるようにする
Me.KeyPreview = True
End Sub
Private Sub PictureGamen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureGamen.Click
End Sub
Private Sub ButtonStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonStart.Click
If playing Then
'プレイ中でだったら、ゲームを停止する
playing = False
ButtonStart.Text = "スタート"
Else
'プレイ中でなかったら、初期化の上プレイ状態にする
playing = True
ButtonStart.Text = "やめる"
SetLevel(TextSyokiLV.Text) 'レベルを「初期レベル」に設定
SetScore(0) 'スコアを0に設定
SyokiHaichi() '初期配置を行う
CheckPause.Focus() '「一時停止」にフォーカスをあてる
End If
End Sub
また、背景とかはどう入力すればいいですか?
プログラムはVBでC#です。
Public Class Form1
'定数
Const BAR_HABA As Integer = 120 'バーの幅を指定(整数)
Const BAR_SPEED As Integer = 9 'バーのスピードを指定(整数)
Const TAMA_SPEED As Integer = 5 '弾の初期スピード(整数)
Const TAMA_MAXSP As Integer = 8 '弾の最大スピード(整数)
Const TEN_HANSYA As Integer = 1 '弾が壁に1回反射したときの得点(整数)
Const TEN_UKETORI As Integer = 10 '弾をバーで1回受け止めたときの得点(整数)
Const TEN_HIT As Integer = 100 'ブロックに1回あたったときの点数(整数)
Const TEN_SPEED As Integer = 10000 '何点ごとに弾のスピードが1段階上がるか(整数)
Dim BLOCK_COLOR() As Brush = { _
Brushes.Cyan, Brushes.Crimson, Brushes.Magenta, _
Brushes.LawnGreen, Brushes.Cyan, Brushes.Yellow, _
Brushes.White _
} 'HPごとのブロックの色(最後の色はHPが7以上のとき適用)
'変数(システム関係)
Dim g As Graphics '画面に描くためのペン
Dim playing As Boolean 'プレイ中かどうか(True,False)
Dim keyHidari As Boolean '左が押されているかどうか(True,False)
Dim keyMigi As Boolean '右が押されているかどうか(True,False)
Dim i As Integer '繰り返し計算用として使用
Dim j As Integer '繰り返し計算用として使用
'変数(ゲーム関係)
Dim level As Integer '現在のレベル(整数)
Dim score As Integer '現在のスコア(整数)
Dim tamaX As Double '弾の中心位置X(数値)
Dim tamaY As Double '弾の中心位置Y(数値)
Dim kakudo As Double '弾の角度・計算用(数値)
Dim tamaMukiX As Double '弾の向きX(数値)
Dim tamaMukiY As Double '弾の向きY(数値)
Dim tamaYosokuX As Double '弾の予測位置X・当たり判定計算用(数値)
Dim tamaYosokuY As Double '弾の予測位置Y・当たり判定計算用(数値)
Dim bar As Double
Dim blockHP(10, 5) As Integer 'ブロックのHP
Dim blockX As Integer '弾のブロック換算位置X・当たり判定計算用(整数)
Dim blockY As Integer '弾のブロック換算位置X・当たり判定計算用(整数)
Dim blockAll As Boolean 'ブロックがすべて消えたかどうか(True,False)
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Keys.H Then
keyHidari = True '左が押され始めた!(左キーをON)
End If
If e.KeyCode = Keys.J Then
keyMigi = True '右が押され始めた!(右キーをON)
End If
End Sub
Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp
If e.KeyCode = Keys.H Then
keyHidari = False '左が離された!(左キーをOFF)
End If
If e.KeyCode = Keys.J Then
keyMigi = False '右が離された!(右キーをOFF)
End If
End Sub 'バーの左隅位置(数値)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'画面とペンの初期化
PictureGamen.Image = New Bitmap(PictureGamen.Width, PictureGamen.Height)
g = Graphics.FromImage(PictureGamen.Image)
'その他の初期化
Randomize() '乱数の初期化
playing = False 'プレイ中ではない状態
'タイトルロゴを表示
g.Clear(Color.Black) '画面をクリアする
g.DrawString("ブロック崩し", New Font("MS 明朝", 32, GraphicsUnit.Pixel), Brushes.Yellow, 64, 144)
PictureGamen.Invalidate() '画面を更新する
'キー入力を受け付けるようにする
Me.KeyPreview = True
End Sub
Private Sub PictureGamen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureGamen.Click
End Sub
Private Sub ButtonStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonStart.Click
If playing Then
'プレイ中でだったら、ゲームを停止する
playing = False
ButtonStart.Text = "スタート"
Else
'プレイ中でなかったら、初期化の上プレイ状態にする
playing = True
ButtonStart.Text = "やめる"
SetLevel(TextSyokiLV.Text) 'レベルを「初期レベル」に設定
SetScore(0) 'スコアを0に設定
SyokiHaichi() '初期配置を行う
CheckPause.Focus() '「一時停止」にフォーカスをあてる
End If
End Sub