Public Sub BasRndint(X As Long, Y As Long)
IntW = X
IntH = Y
End Sub
Public Sub RndInt(X1 As Long, Y1 As Long, M1 As Long, MP1 As Long)
'========================================
'X1 左上角 X 坐标
'Y1 左上角 Y 坐标
'M1 移动方向
' 3 Down
' 5 LeftDown
' 7 RightDown
'MP1 移动速度
'========================================
Dim ChooseInt As Long
If X1 = 0 Then
M1 = 7
ElseIf Y1 > 0 And Y1 < 120 Then
If M1 <= 4 Then
M1 = 3
Else
M1 = 7
End If
ElseIf Y1 < IntW And Y1 > IntW - 120 Then
If M1 <= 4 Then
M1 = 3
Else
M1 = 5
End If
ElseIf M1 <= 3 Then
M1 = 3
ElseIf M1 > 3 And M1 <= 5 Then
M1 = 5
Else
M1 = 7
End If
'==============================================================
'打印地图
Dim intX As Integer
Dim intY As Integer
If LoopH < factMH Then
For intX = 0 To mapW + player1.sRight Step factMW 'down
For intY = LoopH To mapH + player1.sBottom Step factMH
BitBlt GameMap.hdc, intX, intY, factMW, factMH, GameBackDC, 0, 0, SRCCOPY
Next intY
Next intX
For intX = 0 To mapW + player1.sRight Step factMW 'up
For intY = 0 To LoopH Step factMH
BitBlt GameMap.hdc, intX, intY, factMW, factMH, GameBackDC, 0, factMH - LoopH, SRCCOPY
Next intY
Next intX
LoopH = LoopH + 1
Else
LoopH = 0
For intX = 0 To mapW + player1.sRight Step factMW
For intY = 0 To mapH + player1.sBottom Step factMH
BitBlt GameMap.hdc, intX, intY, factMW, factMH, GameBackDC, 0, 0, SRCCOPY
Next intY
Next intX
LoopH = LoopH + 1
End If
'我只能连发三次
'===
'3部分,移动枪手
'枪手
Private player1 As track
Public Type track
Act As Boolean '是否处于活动
sLeft As Long '左距离(开始)
sTop As Long '上距离
sRight As Long '宽度
sBottom As Long '高度
sMove As fireway '移动方向
sMovePace As Long '移动速度
eLeft As Long '最大左距离(结束)
eTop As Long '最大上距离
eBlast As Boolean '爆炸
eSkin As Long '敌人皮肤
End Type
Private Sub MovePlayer()
'==============================================
'移动枪手
Select Case True
Case mLeft And mUp '左上
If player1.sLeft > 0 Then player1.sLeft = player1.sLeft - player1.sMovePace
If player1.sTop > 0 Then player1.sTop = player1.sTop - player1.sMovePace
player1.sMove = fLeftUp
Case mLeft And mDown '左下
If player1.sLeft > 0 Then player1.sLeft = player1.sLeft - player1.sMovePace
If mapH - player1.sTop > 0 Then player1.sTop = player1.sTop + player1.sMovePace
player1.sMove = fLeftDown
Case mRight And mUp '右上
If mapW - player1.sLeft > 0 Then player1.sLeft = player1.sLeft + player1.sMovePace
If player1.sTop > 0 Then player1.sTop = player1.sTop - player1.sMovePace
player1.sMove = fRightUp
Case mRight And mDown '右下
If mapW - player1.sLeft > 0 Then player1.sLeft = player1.sLeft + player1.sMovePace
If mapH - player1.sTop > 0 Then player1.sTop = player1.sTop + player1.sMovePace
player1.sMove = fRightDown
Case mLeft '左
If player1.sLeft > 0 Then player1.sLeft = player1.sLeft - player1.sMovePace
player1.sTop = player1.sTop
player1.sMove = fLeft
Case mDown '下
player1.sLeft = player1.sLeft
If mapH - player1.sTop > 0 Then player1.sTop = player1.sTop + player1.sMovePace
player1.sMove = fDown
Case mRight '右
If mapW - player1.sLeft > 0 Then player1.sLeft = player1.sLeft + player1.sMovePace
player1.sTop = player1.sTop
player1.sMove = fRight
Case mUp '上
player1.sLeft = player1.sLeft
If player1.sTop > 0 Then player1.sTop = player1.sTop - player1.sMovePace
player1.sMove = fUp
'==================================================
请大家不要留Email拉,现公布主要代码及其实现方法.
未使用DIRECTX. 分 15 部分
'1部分,循环
'---------------
'用于计时
Public Declare Function GetTickCount Lib "kernel32.dll" () As Long
'停止计时
Private ExitApp As Boolean
'暂停游戏
Private PauseZE As Boolean
Private Sub GetTime()
'开始计时
Dim NextTick As Long
Do Until ExitApp
DoEvents
Do Until GetTickCount > NextTick
DoEvents
Loop: NextTick = GetTickCount + 50
'暂停或继续
If PauseZE = False Then DoGames frmMain
Dim EnDis As Integer
Dim DisE As Integer
DisE = Int(12 * Rnd)
Dim intLeft As Long, intTop As Long, intMove As Long, intMovePace As Long
For EnDis = 0 To eMax
If Enemy(EnDis).BlastDone = False And DisE < 2 Then
RndInt intLeft, intTop, intMove, intMovePace
Enemy(EnDis).setEnemyValue True, intLeft, intTop, intMove, intMovePace, mapW + player1.sRight, mapH + player1.sBottom, False, 1
End If
Next
'==============================================================