elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ayuda para usar arrays.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda para usar arrays.  (Leído 693 veces)
Tachikomaia


Desconectado Desconectado

Mensajes: 1.420


Hackentifiko!


Ver Perfil
Ayuda para usar arrays.
« en: 23 Septiembre 2024, 06:56 am »

Quiero entender qué tiene sentido contar y qué no, en videojuegos, pongo una lista de ejemplo (X puede ser un objeto, enemigo, etc):
Citar
Distint@s X Aparecid@s
Distint@s X Adquirid@s
Distint@s X Adquirid@s desde la Izquierda
Distint@s X Adquirid@s desde la Derecha
Distint@s X Adquirid@s desde Abajo
Distint@s X Adquirid@s desde Arriba
X Contactad@s
Distint@s X Contactad@s
Distint@s X Contactad@s 1ero desde la Izquierda
Distint@s X Contactad@s 1ero desde la Derecha
Distint@s X Contactad@s 1ero desde Abajo
Distint@s X Contactad@s 1ero desde Arriba
Distint@s X Contactad@s sólo 1 vez
Distint@s X Contactad@s más de 1 vez
Distint@s X Contactad@s no desde la Izquierda
Distint@s X Contactad@s, desde la Izquierda sólo 1 vez
Distint@s X Contactad@s, desde la Izquierda más de 1 vez
Distint@s X Contactad@s no desde la Derecha
Distint@s X Contactad@s, desde la Derecha sólo 1 vez
Distint@s X Contactad@s, desde la Derecha más de 1 vez
Distint@s X Contactad@s no desde Abajo
Distint@s X Contactad@s, desde Abajo sólo 1 vez
Distint@s X Contactad@s, desde Abajo más de 1 vez
Distint@s X Contactad@s no desde Arriba
Distint@s X Contactad@s, desde Arriba sólo 1 vez
Distint@s X Contactad@s, desde Arriba más de 1 vez
Distint@s X Contactad@s sólo 1 vez, desde la Izq o Der
Distint@s X Contactad@s más de 1 vez desde la Izq o Der
Distint@s X Contactad@s alguna vez desde la Izq o Der
Se va poniendo cada vez más confuso, algunas cosas resultado de operaciones matemáticas a partir de cosas anteriores, y algunas cosas parecen tener doble interpretación, por ejemplo:
Distint@s X Contactad@s sólo 1 vez, desde la Izq o Der
Con la , no, sólo hay 1 interpretación: Debe haber sido contactado sólo 1 vez, y esa vez debe haber sido por la izquierda o derecha.
Pero es posible esto: Debe haber sido contactado sólo 1 vez por la izquierda o sólo 1 vez por la derecha, es decir, en el caso anterior si se contactó al objeto más de 1 vez entonces ese objeto no se cuenta, pero en el 2ndo caso si se contactó 1 vez por la izquierda o derecha, se cuenta, aunque por abajo o arriba haya sido contactado muchas veces, incluso puede haber sido contactado por la izquierda o derecha más de 1 vez, basta conque por 1 de esos 2 lados haya sido contactado sólo 1 vez.

En fin, ya que es tan confuso, decidí intentar que cuente cosas un programa, yo sólo le digo los eventos básicos. El orden de los eventos no me importa, excepto respecto a por ejemplo por dónde fue el 1er contacto y el último, o sea, no me importa cual fue el 2ndo, ni el 3ero, etc, no me interesa contar algo como "distintos objetos que al ser contactados por 2nda vez fue desde la izquierda".

En el ejemplo que estoy contando, X es escaleras, el personaje contactó 7 escaleras distintas, lo anoté así:
> 1: I3
> 2: D2
> 3: I
> 4: D, Ar, I2
> 5: Ar, I
> 6: D
> 7: I
Por ejemplo la 4 significa que se contactó 1ero por la derecha, luego por arriba, y al final por la izquierda, indicando que en algún otro momento también se contactó por la izquierda.

Serían 7 arrays.

Según he pensado, la mejor estructura que pueden tener es:
Lugar del 1er contacto, contactos desde la izquierda, derecha, arriba, lugar del útimo contacto
¿Me recomiendan otra manera?

No puse abajo porque el personaje no salta así que no contacta escaleras desde abajo de ellas.

Yo prácticamente no sé usar arrays, hago las cosas con "variables sueltas", pero esta vez decidí intentarlo.

Pondría:
Escalera1 = "I", 3, 0, 0, "I"
Escalera2 = "D", 0, 2, 0, "D"
Escalera3 = "I", 0, 0, 0, "I"
Escalera4 = "D", 2, 1, 1, "I"
Escalera5 = "Ar", 1, 0, 1, "I"
Escalera6 = "D", 0, 1, 0, "D"
Escalera7 = "I", 1, 0, 0, "I"

Si puse mal los datos, mala suerte, luego los reviso mejor. La cuestión es: ¿Puede un array tener texto y números? En Macromedia Flash 5, probaré, sino puedo sustituir I por 0, D por 1 y Ar por 2.

No me interesa mucho por ahora variar esos datos pero la idea es que el programa se base siempre en ellos, entonces si quiero contar Distintas contactadas 1ero desde la Izquierda (ah, lo de distintas es redundante a veces, olvidé eso, pero como me ayuda a no confundirme lo dejé), debo poner algo como:
Código:
PriI = 0
EscaleraaChequear = 0
Repetir
   EscaleraaChequear++
   Si 1era variable de eval("Escalera"+EscaleraaChequear) == "I"
      PriI++
mientras EscaleraaChequear < 7
¿no? ¿pero cómo es la condición de ese if específicamente? No sé mucho cómo hacer referencia a las partes de un array y menos si tengo que usar eval.


En línea

Tachikomaia


Desconectado Desconectado

Mensajes: 1.420


Hackentifiko!


Ver Perfil
Re: Ayuda para usar arrays.
« Respuesta #1 en: 29 Septiembre 2024, 09:18 am »

Lo empecé a hacer a mi manera y va bien así que ya no es importante, cualquier cosa le pregunto a GPT.
Código
  1. // Programa para contar cosas...
  2. // relativas a contactos con escaleras.
  3. // 1 condición:
  4. function ContarPriIzq () {
  5. PriIzq++;
  6. PriIzqoDer++;
  7. PriIzqoArr++;
  8. }
  9. function ContarPriDer () {
  10. PriDer++;
  11. PriIzqoDer++;
  12. PriDeroArr++;
  13. }
  14. function ContarPriArr () {
  15. PriArr++;
  16. PriIzqoArr++;
  17. PriDeroArr++;
  18. }
  19. // Escalera 1:
  20. Escalera1First = "Izq";
  21. Escalera1Izq = 3;
  22. Escalera1Der = 0;
  23. Escalera1Arr = 0;
  24. Escalera1Last = "Izq";
  25. // 2:
  26. Escalera2First = "Der";
  27. Escalera2Izq = 0;
  28. Escalera2Der = 2;
  29. Escalera2Arr = 0;
  30. Escalera2Last = "Der";
  31. // 3:
  32. Escalera3First = "Izq";
  33. Escalera3Izq = 1;
  34. Escalera3Der = 0;
  35. Escalera3Arr = 0;
  36. Escalera3Last = "Izq";
  37. // 4:
  38. Escalera4First = "Der";
  39. Escalera4Izq = 2;
  40. Escalera4Der = 1;
  41. Escalera4Arr = 1;
  42. Escalera4Last = "Izq";
  43. // 5:
  44. Escalera5First = "Arr";
  45. Escalera5Izq = 1;
  46. Escalera5Der = 0;
  47. Escalera5Arr = 1;
  48. Escalera5Last = "Izq";
  49. // 6:
  50. Escalera6First = "Der";
  51. Escalera6Izq = 0;
  52. Escalera6Der = 1;
  53. Escalera6Arr = 0;
  54. Escalera6Last = "Der";
  55. // 7:
  56. Escalera7First = "Izq";
  57. Escalera7Izq = 1;
  58. Escalera7Der = 0;
  59. Escalera7Arr = 0;
  60. Escalera7Last = "Izq";
  61. //
  62. Escalera = 0;
  63. do {
  64. Escalera++;
  65. // Resumen:
  66. Res = "Escalera"+Escalera;
  67. // Contar escaleras contactadas 1ero por (lado):
  68. eval("ContarPri"+eval(Res+"First"))();
  69. Contactos = eval(Res+"Izq")+eval(Res+"Der")+eval(Res+"Arr");
  70. if (Contactos == 1) {
  71. // Contar escaleras contactadas sólo 1 vez:
  72. OneTime++;
  73. } else {
  74. // Más de 1 vez:
  75. SomeTimes++;
  76. }
  77. } while (Escalera<7);


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines