Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: BlacKGilgamesH en 18 Agosto 2010, 00:14 am



Título: Motor Físico Beta 2
Publicado por: BlacKGilgamesH en 18 Agosto 2010, 00:14 am
Hola, pues he seguido con mi proyecto del motor físico en bash, así que les dejo la siguiente actualización, (aunque no la ultima), en esta versión ya se corrigieron algunos bugs y se implementaron cosas.

Bugs reparados:
  • Saltos en el aire

Implementaciones:
  • Objetos (para empujar)

Por ahora eso es todo, todavía tiene muchos bugs, pero va mejorando poco a poco, sin más les dejo el codigo:

Código
  1. #!/bin/bash
  2. #################
  3. ##Proyecto MFG1##
  4. #################
  5. #By GilgamesH Co#
  6. #######2010######
  7. #################
  8. py=2
  9. px=2
  10. mov(){
  11. tput cup $1 $2
  12. }
  13. key(){
  14. read -t 0.2 -n 1 $1
  15. }
  16. ox=4
  17. oy=8
  18. lim=( "4 2" "4 3" "4 4" "4 5" "4 6"  "4 7" "7 11" "7 12" "7 13" "9 0" "9 1" "9 2" "9 3" "9 4" "9 5" "9 6" "9 7" "9 8" "9 9" "9 10" "9 11" "9 12" "9 13" "9 14" "11 5" "11 6" "11 7" "11 8" "11 9" "11 10" "11 11" "11 12" "11 13" "11 14" "11 15" "11 16" "11 17" "13 0" "13 1" "13 2" "13 3" "15 0" "15 1" "15 2" "15 3" "18 0" "18 1" "18 2" "18 3" "18 4" "18 5" "18 6" "18 7" "18 8" "18 9" "18 10" "18 11" "18 12" "18 13" "18 14" "18 15" "18 17" "18 18")
  19. llen=19
  20. llen1="${#lim[@]}"
  21. salto=3
  22. while [ 1 = 1 ]
  23. do
  24. clear
  25. echo
  26. echo
  27. echo
  28. echo
  29. echo "  XXXXXX"
  30. echo
  31. echo        
  32. echo "           XXX"
  33. echo
  34. echo "XXXXXXXXXXXXXXX"
  35. echo
  36. echo "     XXXXXXXXXXXXX"
  37. echo
  38. echo "XXXX"
  39. echo
  40. echo "XXXX"
  41. echo
  42. echo
  43. echo "XXXXXXXXXXXXXXXXXX"
  44. mov $py $px
  45. echo -n "M"
  46. mov $oy $ox
  47. echo -n "N"
  48. mov 0 0
  49. key err
  50. py=$(($py+1))
  51. oy=$((oy+1))
  52. if [ $err = d ]
  53. then
  54. px=$(($px+1))
  55. fi
  56. if [ $err = w ]
  57. then
  58. if [ $salto = 0 ]
  59. then
  60. py=$(($py-3))
  61. salto=99999
  62. fi
  63. fi
  64. if [ $err = a ]
  65. then
  66. px=$(($px-1))
  67. fi
  68. while [ $px -lt 0 ]
  69. do
  70. px=$(($px+1))
  71. done
  72. while [ $px -ge $(($llen-1)) ]
  73. do
  74. px=$(($px-1))
  75. done
  76. for i in `seq 0 $llen1`
  77. do
  78. if [ "$py $px" = "${lim[$i]}" ]
  79. then
  80. py=$(($py-1))
  81. salto=0
  82. fi
  83. done
  84. for i in `seq 0 $llen1`
  85. do
  86. if [ "$oy $ox" = "${lim[$i]}" ]
  87. then
  88. oy=$(($oy-1))
  89. fi
  90. done
  91. if [ $salto != 0 ]
  92. then
  93. salto=$((salto-1))
  94. fi
  95. if [ $ox -lt 0 ]
  96. then
  97. ox=0
  98. fi
  99. if [ $ox = $llen ]
  100. then
  101. ox=$((ox-1))
  102. fi
  103. if [ "$px $py" = "$ox $oy" ]
  104. then
  105. if [ $lx -lt $ox ]
  106. then
  107. ox=$((ox+1))
  108. if [ $px = $ox ]
  109. then
  110. px=$((px+1))
  111. fi
  112. fi
  113. if [ $lx -gt $ox ]
  114. then
  115. ox=$((ox-1))
  116. if [ $px = $ox ]
  117. then
  118. px=$((px-1))
  119. fi
  120. fi
  121. if [ $ly -lt $oy ]
  122. then
  123. py=$((py-1))
  124. fi
  125. fi
  126. lx=$px
  127. ly=$py
  128. done

El funcionamiento es el mismo que el anterior, solo se le agrego una comparación para ver si el personaje esta en el suelo o no, para evitar los saltos en el aire; y también se le aplico la misma física (si se le puede decir así) a la caja, (la "N"), asi que la pueden empujar por los bordes, pero no fuera de los limites (o si ¬¬|| XD).

Les pido que si ven que tiene algún bug, por favor me lo reporten para corregirlo.

Saludos


Título: Re: Motor Físico Beta 2
Publicado por: leogtz en 19 Agosto 2010, 00:14 am
¿Podrías poner un script para ver la forma de utilizarlo?


Título: Re: Motor Físico Beta 2
Publicado por: BlacKGilgamesH en 19 Agosto 2010, 01:58 am
Pruebalo asi, alli ya hay un ejemplo, pero si quieres algo distinto dime y lo hago.

Saludos.