我正在制作一个简单的游戏来帮助我学习基本的c ++代码。我想让一个僵尸能够在2d蛇状环境中追随/追逐玩家。虽然我还没有找到办法让这个工作起作用。
For Each crxFormula In crxRpt.FormulaFields
Select Case crxFormula.FormulaFieldName
Case CR_FORMULA_COMPANY_NAME
crxFormula.Text = QuoteIt(Trim(strCompanyName(1)))
Case CR_FORMULA_GROUP_1_HIGHLIGHT
crxFormula.Text = Replace$(strHCGroup(1), " ", "")
Case CR_FORMULA_GROUP_2_HIGHLIGHT
crxFormula.Text = Replace$(strHCGroup(2), " ", "")
Case CR_FORMULA_GROUP_3_HIGHLIGHT
crxFormula.Text = Replace$(strHCGroup(3), " ", "")
Case CR_FORMULA_GROUP_4_HIGHLIGHT
crxFormula.Text = Replace$(strHCGroup(4), " ", "")
Case CR_FORMULA_GRAND_HIGHLIGHT
crxFormula.Text = Replace$(strHCGrand, " ", "")
Case "Processing Date"
crxFormula.Text = "Date(" & QuoteIt(Format(dtpProcDate.Value, "Short Date")) & ")"
Case "Days Col 1"
crxFormula.Text = CStr(txtPeriod(0).Value)
Case "Days Col 2"
crxFormula.Text = CStr(txtPeriod(1).Value)
Case "Days Col 3"
crxFormula.Text = CStr(txtPeriod(2).Value)
Case "Days Col 4"
crxFormula.Text = CStr(txtPeriod(3).Value)
Case "Age Type"
Select Case True
Case optAgingType(0).Value
crxFormula.Text = QuoteIt(optAgingType(0).Tag)
Case optAgingType(1).Value
crxFormula.Text = QuoteIt(optAgingType(1).Tag)
Case optAgingType(2).Value
crxFormula.Text = QuoteIt(optAgingType(2).Tag)
Case optAgingType(3).Value
crxFormula.Text = QuoteIt(optAgingType(3).Tag)
End Select
Case "Summary"
crxFormula.Text = IIf(optReportType(1).Value, "True", "False")
End Select
crxFormula.Check blnFormulaOK, strFormulaErr
If Not blnFormulaOK Then
MsgBox CR_FORMULA_ERROR_TEXT & crxFormula.FormulaFieldName & vbNewLine & vbNewLine & _
strFormulaErr & vbNewLine & vbNewLine & _
Trim(crxFormula.Text), vbCritical, CR_FORMULA_ERROR_TITLE
Exit For
End If
Next crxFormula
答案 0 :(得分:1)
在主循环中,在致电Draw
之前,您需要更改僵尸的位置。使其位置(在X或Y轴上)离玩家更近一步。
由于您知道播放器的当前位置,因此可以轻松完成。如果zombie-X高于player-X,则减少zombie-X。或者如果相反则增加zombie-X。与Y位置相同。
为了不使僵尸只是走上下(或左右)你在主循环中每隔一次调整僵尸的X位置,每隔一次调整Y位置。或者你可以随机选择X或Y.
简而言之,你的“B点”总是球员的当前位置。
答案 1 :(得分:0)
你的游戏逻辑应该是这样的。
Setup();
do
{
Draw();
Delay();
Update();
}while(!bIsEnd);
更新是您更新对象位置的位置
包括检查任何人类输入(键盘/鼠标)和
根据它移动物体。
某些对象会自动移动(AI)
此功能应该放置更新位置的逻辑(I& Z)
我假设'我'是人为控制的,'Z'是计算机控制的(AI)。
对于'我',您可以使用_getch()功能从键盘输入并切换大小写。
对于'Z',因为这是一款游戏,你应该让它具有挑战性。
不是太愚蠢或太聪明。
您可以随机移动(X或Y方向)
对于每4次更新调用,您可以通过计算来定义其方向
'我'和'Z'的位置。
if(X > ZombX)
ZombX += random(2);
else
ZombX -= random(2);
if(Y > ZombY)
ZombY += random(2);
else
ZombY -= random(2);
4个更新电话就是一个例子。您可以使用另一个常量或开发一个新逻辑。
if(X == ZombX&& Y == ZombY),设置bIsEnd。