公共函数.bas
上传用户:pcw2004
上传日期:2022-02-02
资源大小:743k
文件大小:4k
源码类别:

DirextX编程

开发平台:

Visual Basic

  1. Attribute VB_Name = "公共函数"
  2. Option Explicit
  3. '///////  怪物动作初始化
  4. Public Sub InitMonAct(MonID As Long)
  5.     Mon(MonID).Face = Rnd * 7
  6.     If Mon(MonID).DBInfo.Race_种族 = 101 Then
  7.         Mon(MonID).Act = Stand_怪站立
  8.         Mon(MonID).Pic = 0
  9.         Mon(MonID).PicSpeed = 0
  10.     Else
  11.         Mon(MonID).Act = Stand_怪站立
  12.         Mon(MonID).Pic = 0
  13.         Mon(MonID).PicSpeed = 0
  14.     End If
  15. End Sub
  16. Public Sub InitMon()
  17.     Dim i As Long
  18.     Randomize
  19.     MonCount = 1
  20.     ReDim Mon(MonCount)
  21.     For i = 1 To MonCount
  22.         Mon(i).Id = i
  23.         Mon(i).X = Rnd * Map.Width
  24.         Mon(i).Y = Rnd * Map.Height
  25.         Mon(i).DBInfo = MonDB(GetMonDBNum("祖玛雕像"))
  26. '        Mon(i).DBInfo = MonDB(Rnd * (MonDBCount - 1) + 1)
  27.         Mon(i).DBInfo.HP = 1000
  28.         Mon(i).MaxHP = Mon(i).DBInfo.HP
  29.         Mon(i).HP = Mon(i).MaxHP
  30.         InitMonAct i
  31.         Map.Map4(Mon(i).X, Mon(i).Y) = Map.Map4(Mon(i).X, Mon(i).Y) + 1
  32.     Next
  33. End Sub
  34. Public Sub ItemsXY(mItemName() As String, mItemCount, XX As Long, YY As Long)
  35.     Dim i As Integer, j As Integer, C As Integer
  36.     Dim Work As Boolean, N As Integer
  37.     Dim mICount As Integer
  38.     Work = True
  39.     N = 0
  40.     Do
  41.         N = N + 1
  42.         If N > Map.Width Or N > Map.Height Then Exit Do
  43.         For j = YY + N To YY - N Step -1
  44.             For i = XX - N To XX + N Step 1
  45.                 If i >= 0 And i <= Map.Width And j >= 0 And j <= Map.Height Then
  46.                     
  47.                     mICount = mICount + 1
  48.                     MapItemCount = MapItemCount + 1
  49.                     ReDim Preserve MapItem(MapItemCount)
  50.                     MapItem(MapItemCount).Id = MapItemCount
  51.                     MapItem(MapItemCount).mItem = ItemDB(GetItemNum(mItemName(mICount)))
  52.                     MapItem(MapItemCount).X = i
  53.                     MapItem(MapItemCount).Y = j
  54.                     MapItem(MapItemCount).mTime = GetTickCount
  55.                     If mICount = mItemCount Then Exit Do
  56.                 End If
  57.             Next
  58.         Next
  59.         DoEvents
  60.     Loop
  61.         
  62. End Sub
  63. Public Sub AddMon(MonName As String, X As Integer, Y As Integer, Optional mCount As Integer = 1, Optional Pos As Integer = 0)
  64.     Dim i As Integer
  65.     If mCount < 1 Then Exit Sub
  66.     For i = 1 To mCount
  67.         MonCount = MonCount + 1
  68.         ReDim Preserve Mon(MonCount)
  69.         Mon(MonCount).Id = MonCount
  70.         If Rnd * 1 < 0.5 Then
  71.             Mon(MonCount).X = X + Rnd * Pos
  72.         Else
  73.             Mon(MonCount).X = X - Rnd * Pos
  74.         End If
  75.         If Rnd * 1 < 0.5 Then
  76.             Mon(MonCount).Y = Y + Rnd * Pos
  77.         Else
  78.             Mon(MonCount).Y = Y - Rnd * Pos
  79.         End If
  80.         If Mon(MonCount).X < 0 Then Mon(MonCount).X = 0
  81.         If Mon(MonCount).X > Map.Width Then Mon(MonCount).X = Map.Width
  82.         If Mon(MonCount).Y < 0 Then Mon(MonCount).Y = 0
  83.         If Mon(MonCount).Y > Map.Height Then Mon(MonCount).Y = Map.Height
  84.         Mon(MonCount).DBInfo = MonDB(GetMonDBNum(MonName))
  85.         Mon(MonCount).MaxHP = Mon(MonCount).DBInfo.HP
  86.         Mon(MonCount).HP = Mon(MonCount).MaxHP
  87.         InitMonAct MonCount
  88.         Mon(MonCount).Dead = False
  89.         Map.Map4(Mon(MonCount).X, Mon(MonCount).Y) = Map.Map4(Mon(MonCount).X, Mon(MonCount).Y) + 1
  90.     Next
  91. End Sub
  92. Public Sub ActMonGen()
  93.     Dim i As Integer, mID As Long, mMonCount As Long, j As Long
  94.     FrmMain.Caption = MonGenCount
  95.     If MonGenCount = 0 Then Exit Sub
  96.     For i = 1 To MonGenCount
  97.         If GetTickCount / 1000 / 60 - MonGen(i).LTime > MonGen(i).mTime Then
  98.             MonGen(i).LTime = GetTickCount / 1000 / 60
  99.             mID = GetMonDBNum(MonGen(i).MonName)
  100.             If mID > 0 Then
  101.                 AddMon MonGen(i).MonName, MonGen(i).X, MonGen(i).Y, MonGen(i).mCount, MonGen(i).Pos
  102.             End If
  103.         End If
  104.     Next
  105. End Sub