部分代码不能同时工作?

时间:2019-06-25 11:08:38

标签: darkbasic

我总是一点一点地处理代码。除非确保当前正在使用的部分代码Im能够正常工作,否则我绝不会从代码的一部分移至另一部分。因此,我感到震惊的是发现引入新的代码位后,上一部分不起作用

该代码用于移动Sprite播放器,停止屏幕外移动并与Sprite墙碰撞。屏幕碰撞和精灵碰撞这两个不起作用的部分

此处提供代码:

//VARIABLES
PlayerSpeed = 4
ZombieSpeed = 2
WYCollision = 0
WXCollision = 0
PlayerH = 100
AllowS = 1

   //Allow Movement
AllowMovementW = 1
AllowMovementS = 1
AllowMovementD = 1
AllowMovementA = 1

//MAIN LOOP
do
    //SET SPRITE POSITION

    //Set Sprite Position
    SetSpritePosition (Player,PlayerXpos,PlayerYpos)
    SetSpritePosition (Wall,WallXpos,WallYpos)
    SetSpritePosition (Zombie,ZombieXpos,ZombieYpos)


    //Variables
    ZCollision = GetSpriteCollision (Player,Zombie)

    //CONTROLES
    KeyW = GetRawKeyState(87)
    KeyS = GetRawKeyState(83)
    KeyD = GetRawKeyState(68)
    KeyA = GetRawKeyState(65)

    //gosubs
    gosub MovePlayer
    gosub ScreenCollision
    gosub SpriteCollision


    Sync()
loop


MovePlayer:
//If both respective key and allow movement is true, it moves the sprite
//KeyW**************************************    
if KeyW = 1 AND AllowMovementW = 1
    PlayerYpos = PlayerYpos - PlayerSpeed
endif

//KeyS**************************************
if KeyS = 1 AND AllowMovementS = 1
    PlayerYpos = PlayerYpos + PlayerSpeed
endif

//KeyD**************************************
if KeyD = 1 AND AllowMovementD = 1
    PlayerXpos = PlayerXpos + PlayerSpeed
endif

//KeyA**************************************
if KeyA = 1 AND AllowMovementA = 1
    PlayerXpos = PlayerXpos - PlayerSpeed
endif

SetSpritePosition (Player,PlayerXpos,PlayerYpos)

return

ScreenCollision:
//KEY W
if PlayerYpos =< 2
    AllowMovementW = 0
    Else
        AllowMovementW = 1
endif
//KEY S
if PlayerYpos => 636
    AllowMovementS = 0
    Else
        AllowMovementS = 1
endif
//KEY D
if PlayerXpos => 910
    AllowMovementD = 0
    Else
        AllowMovementD = 1
endif
//KEY A
if PlayerXpos =< -12
    AllowMovementA = 0
    Else
        AllowMovementA = 1
endif

SetSpritePosition (Player,PlayerXpos,PlayerYpos)

return

SpriteCollision:
    //WALL
//Zone
if PlayerXpos => 384 AND PlayerXpos =<616
    WYCollision = 1
    Else
        WYCollision = 0
endif

if PlayerYpos => 224 AND PlayerYpos =<380
    WXCollision = 1
    Else
        WXCollision = 0
endif
//Keys
//KeyW
if PlayerYpos = 380 AND WYCollision = 1
    AllowMovementW = 0
    Else
        AllowMovementW = 1
endif

//KeyS
if PlayerYpos = 224 AND WYCollision = 1
    AllowMovementS = 0
    Else
        AllowMovementS = 1
endif

//KeyD
if PlayerXpos = 380 AND WXCollision = 1
    AllowMovementD = 0
    Else
        AllowMovementD = 1
endif

//KeyA
if PlayerXpos = 616 AND WXCollision = 1
    AllowMovementA = 0
    Else
        AllowMovementA = 1
endif

SetSpritePosition (1,PlayerXpos,PlayerYpos)

return

奇怪的是,每当我禁用破坏代码的代码时,它似乎都可以正常工作。因此,代码本身没有内在的错误,只是它们似乎无法协同工作。似乎没那么明白。编码语言是DarkBASIC,IDE是AppGameKit Classic。有什么想法吗?

0 个答案:

没有答案