Yamix Posted January 21, 2018 at 03:29 PM Report #609014 Posted January 21, 2018 at 03:29 PM (edited) Olá, Estou desenvolvendo um jogo, e estou com alguns problemas, quero que minha nave possa teletransportar para ir, e se a tecla for apertada novamente dentro de 3 segundos, a nave volte para o ponto onde ela usou o teletransporte e no tempo de recarga são adicionados 2 segundos, caso a tecla não for apertada denovo dentro de 3 segundos, o player não podera mais teleportar . O que eu fiz está funcionando, mas há bugs.. Então tentei usar algumas variáveis booleanas e não estava dando certo nada, então passei para as variáveis integers e consegui consertar alguns, mas outros continuam. BUG : Se a NaveX e NaveY for diferente de TeleX e TeleY o jogador não podera mais teleportar.. esse foi o unico jeito q funcionou o problema da nave ir e voltar.. Var NaveX,NaveY : Integer; // Coordenadas X e Y da Nave. DirecaoX,DirecaoY : Integer; // Identificara a direcao que o player esta mirando. TeleX,TeleY : Integer; // Coordenadas X e Y do Teleporte. TempoT : Integer; // Temporiza o tempo de recarga da habilidade. TempoRealT : Real; // Tempo restante para que a habilidade saia do tempo de recarga. CooldownT,Teleportou : Boolean; // Identifica se a habilidade esta em tempo de recarga. (* Procedimento que ira desenhar o slot da habilidade TELETRANSPORTE *) Procedure InterfaceT; Begin ////////////////////////////////////////////////////////////// LimpadorXY(' ',2,5); // APAGA OS SLOTS DA HABILIDADE, EVITAR BUGS. // LimpadorXY(' ',2,6); // TEMPORIZA O TEMPO PARA QUE A HABILIDADE POSSA SER USADA. // Dec(TempoT); ///////////////////////////////////////////////////////////// TempoRealT := TempoT / 40; WriteCorXY(15,'TELETRANSPORTE',4,4); TemporizadorXY(Round(TempoRealT),'',10,5); WriteCorXY(15,'SEGUNDOS',7,6); If (NaveX <> TeleX) and (NaveY <> TeleY) then // << PROBLEMA AQUI, TENTEI USAR VARIAVEIS BOOLEANS MAS NAO ESTAVA ADIANTANDO.. Begin Teleportou := False; LimpadorXY(' ',TeleX,TeleY); TeleX := NaveX; TeleY := NaveY; End; If (TempoT <= 1) then Begin CooldownT := False; LimpadorXY(' ',2,5); LimpadorXY(' ',2,6); WriteCorXY(10,'PRONTO',8,5); End; End; { ----------------------------------------------------------- } 'J': Begin If (Teleportou = True) then Begin Teleportou := False; WriteCorXY(CorNave,' ',NaveX,NaveY); TempoT := TempoT + 80; NaveX := TeleX; NaveY := TeleY; If (DirecaoX < 0) then Begin WriteCorXY(CorNave,NaveE,NaveX,NaveY); NaveX := NaveX; NaveY := NaveY; TeleX := NaveX; TeleY := NaveY; End; If (DirecaoX > 0) then Begin WriteCorXY(CorNave,NaveD,NaveX,NaveY); NaveX := NaveX; NaveY := NaveY; TeleX := NaveX; TeleY := NaveY; End; If (DirecaoY < 0) then Begin WriteCorXY(CorNave,NaveC,NaveX,NaveY); NaveX := NaveX; NaveY := NaveY; TeleX := NaveX; TeleY := NaveY; End; If (DirecaoY > 0) then Begin WriteCorXY(CorNave,NaveB,NaveX,NaveY); NaveX := NaveX; NaveY := NaveY; TeleX := NaveX; TeleY := NaveY; End; End; If (CooldownT = False) and (TempoT <= 1) then Begin ///////////////////////////////////////////////////// If (DirecaoX < 0) and (NaveX > Teleporte + 1) then // QUANDO A HABILIDADE TELETRANSPORTE FOR USADA // Begin // APAGARA A POSICAO ATUAL DA NAVE E ATUALIZARA // TeleX := NaveX; // PARA A DIRECAO EM QUE A NAVE APONTOU. // TeleY := NaveY; // E COMEÇA O TEMPO DE RECARGA DA HABILIDADE. // LimpadorXY(#15,TeleX,TeleY); // PARA A DIRECAO EM QUE A NAVE APONTOU. // NaveX := NaveX - Teleporte; ////////////////////////////////////////////////// WriteCorXY(CorNave,NaveE,NaveX,NaveY); Teleportou := True; CooldownT := True; TempoT := 160; // ESQUERDA End Else if (DirecaoX < 0) and (NaveX < Teleporte) then Begin TeleX := NaveX; TeleY := NaveY; LimpadorXY(#15,TeleX,TeleY); NaveX := 3; WriteCorXY(CorNave,NaveE,NaveX,NaveY); Teleportou := True; CooldownT := True; TempoT := 160; End Else if (DirecaoX > 0) and (NaveX < 78-Teleporte) then // DIREITA Begin TeleX := NaveX; TeleY := NaveY; LimpadorXY(#15,TeleX,TeleY); NaveX := NaveX + Teleporte ; WriteCorXY(CorNave,NaveD,NaveX,NaveY); Teleportou := True; CooldownT := True; TempoT := 160; End Else if (DirecaoX > 0) and (NaveX >= 78-Teleporte) then Begin TeleX := NaveX; TeleY := NaveY; LimpadorXY(#15,TeleX,TeleY); NaveX := 78; WriteCorXY(CorNave,NaveE,NaveX,NaveY); Teleportou := True; CooldownT := True; TempoT := 160; End Else if (DirecaoY > 0) and (NaveY < 48-Teleporte ) then // BAIXO Begin TeleX := NaveX; TeleY := NaveY; LimpadorXY(#15,TeleX,TeleY); NaveY := NaveY + Teleporte; WriteCorXY(CorNave,NaveB,NaveX,NaveY); Teleportou := True; CooldownT := True; TempoT := 160; End Else if (DirecaoY > 0) and (NaveY >= 48-Teleporte ) then Begin TeleX := NaveX; TeleY := NaveY; LimpadorXY(#15,TeleX,TeleY); NaveY := 48; WriteCorXY(CorNave,NaveB,NaveX,NaveY); Teleportou := True; CooldownT := True; TempoT := 160; End Else if (DirecaoY < 0) and (NaveY > 11+Teleporte) then // CIMA Begin TeleX := NaveX; TeleY := NaveY; LimpadorXY(#15,TeleX,TeleY); NaveY := NaveY - Teleporte; WriteCorXY(CorNave,NaveC,NaveX,NaveY); Teleportou := True; CooldownT := True; TempoT := 160; End Else if (DirecaoY < 0) and (NaveY <= 11+Teleporte ) then Begin LimpadorXY(#15,NaveX,NaveY); NaveY := 11; WriteCorXY(CorNave,NaveB,NaveX,NaveY); Teleportou := True; CooldownT := True; TempoT := 160; End; End; End; End; { --------------------------------------------------------------------------------------------- } { FAZ A CONTAGEM REGRESSIVA DO TEMPO DE RECARGA DAS HABILIDADES ENQUANTO A NAVE ESTA PARADA } If (CooldownT = True) and (TempoT > 1) then Begin InterfaceT; End; Delay(ControlT); End; Until (KeyPressed = True); { --------------------------------------------------------------------------------------------- } { FAZ A CONTAGEM REGRESSIVA DO TEMPO DE RECARGA DAS HABILIDADES ENQUANTO A NAVE SE MOVIMENTA} If (CooldownT = True) and (TempoT > 1) then Begin InterfaceT; End; Edited January 21, 2018 at 03:32 PM by Gabriel Gomes
Yamix Posted January 21, 2018 at 04:55 PM Author Report #609015 Posted January 21, 2018 at 04:55 PM Depois de quebrar a cabeça ao infinito, problema foi resolvido..
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now