Yamix Posted April 22, 2018 at 07:43 PM Report #610320 Posted April 22, 2018 at 07:43 PM (edited) Olá, Estou a programar um joguinho, e estou tentando acessar as matrizes de forma rápida, mas sem usar muitos For..Do e estou tendo o seguinte problema.. // PARAMETROS DO DESENHAXY(Cor, Objeto, X, Y). For I := 1 To MaxObjetos Do If (Objeto[I].CriaObjeto[Jogador.X, Jogador.Y]) Then // SE PLAYER ENTROU NUMA COORDENADA DE UM OBJETO Begin ObjetoSuport.X[I] := Jogador.X; // SALVA AS COORDS ObjetoSuport.Y[I] := Jogador.Y; // PARA SER USADO QUANDO O PLAYER SAIR DESSAS COORDS Inc(J); // ATIVA O SISTEMA End; If (J > 0) Then For I := 1 To J Do Begin If (Jogador.X <> ObjetoSuport.X[I]) Or (Jogador.Y <> ObjetoSuport.Y[I]) Then // SE PLAYER SAIR DA COORDS DO OBJETO ENTAO REDESENHE OBJETO DesenhaXY(CorObstac, #177, ObjetoSuport.X[I], ObjetoSuport.Y[I]); // << PROBLEMA AQUI. If (I = J) Then J := 0; // RESETA End; O código funciona, se eu retirar esse comando: Citação DesenhaXY(CorObstac, #177, ObjetoSuport.X, Objeto Suport.Y ); Ma s s em ele, n ã o d á para eu re-de s enhar na s coordenada s exata s . Ca s o tenha ficado um pouco confu s o, e voc ê n ã o tenha con s eguido entender, e s tou tentando criar um m é todo que ir á varrer uma á rea na tela de forma eficaz, procurando objeto s que j á exi s tem no jogo, e que o jogador pa s s ou por cima, a fim de re-de s enhar o s objeto s . E s tive a de s envolver outro m é todo, ma s ele u s a muito s For..Do atrapalhando o decr é s cimo do tempo de habilidade s no meu jogo, n ã o é muito percept í vel a n ã o s er que haja um n ú mero muito grande de objeto s criado s . Olhem: For I := 1 To MaxObjetos Do If (Objeto[I].CriaObjeto[Jogador.X, Jogador.Y]) Then Begin Objeto[I].ReDesenhaObjeto[Jogador.X, Jogador.Y] := True; Inc(J); End; If (J > 0) Then For X := TelaX_Min To TelaX_Max Do For Y := TelaY_Min To TelaY_Max Do For I := 1 To MaxObjetos Do If (Objeto[I].ReDesenhaObjeto[X, Y]) And ((Jogador.X <> X) Or (Jogador.Y <> Y)) Then Begin Objeto[I].ReDesenhaObjeto[X, Y] := False; DesenhaXY(CorObstac, #177, X, Y); If (I = MaxObjetos) Then J := 0; End; S ã o nece s s á rio s 3 For..Do, atra s a um pouco o programa. Enfim, tentei muita s coi s a s para fazer o primeiro m é todo funcionar, ma s ainda s im n ã o funciona. Poderia me dar alguma s uge s t ã o? De s de j á , agrade ç o! Morituru s te s aluto! Edited April 22, 2018 at 08:14 PM by Gabriel Gomes Fix
Yamix Posted April 23, 2018 at 05:35 PM Author Report #610332 Posted April 23, 2018 at 05:35 PM Problema resolvido. (ALELUIA!!!!!!!!!!!!!!!) 😛 Solução: For I := 1 To MaxObjetos Do If (Objeto.X[I] = Jogador.X) And (Objeto.Y[I] = Jogador.Y) Then Begin Objeto.R_X[I] := Jogador.X; Objeto.R_Y[I] := Jogador.Y; End; For I := 1 To MaxObjetos Do If (Objeto.R_X[I] > 0) And (Objeto.R_Y[I] > 0) Then If (Jogador.X <> Objeto.R_X[I]) Or (Jogador.Y <> Objeto.R_Y[I]) Then Begin X := Objeto.R_X[I]; Y := Objeto.R_Y[I]; DesenhaXY(CorObstac, #177, X, Y); End; Código ficou perfeito!!
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