[Tutorial] Sistema de Ranking |
Saintgio « Consul » 1483213080000
| 0 | ||
Sistema de ranking. Último día de 2016, y aprovechando de que estoy trabajando en un sistema de ranking para mi propio minijuego, comparto este pequeño sistema de ranking o clasificación, que a pesar de no estar 100% optimizado y que dependiendo de como tú uses y guardes los datos puede que necesites hacerle modificaciones para que funcione correctamente, pero en cualquier caso creo que puede ser útil como una base desde donde partir. (Si quieres pasar directamente a ver el código completo, dirígete al final de esta publicación.) Si tienes algún problema entendiendo algún concepto de programación o de que cosas hacen algunas funciones math te recomiendo visitar los siguientes enlaces: • Serie Tuttorials - Tutoriales de Hina • Diccionario Lua Ahora doy paso a explicar paso a paso el funcionamiento de este código(script), función por función. I Debido a que todo sistema de clasificación necesita una cantidad de información mínima para poder ser de utilidad, crearemos nuestros propios datos ficticios y al azar (si tu ya tienes la información de tus jugadores almacenada solo deberias adaptar el código). Se rellenará una tabla llamada ratones con elementos de la forma: "nombre" = {victorias=X,rondastotales=X} Es decir para cada nombre de jugador, existirá una tabla asociada, que contiene el numero de victorias y las rondas jugadas en total. (nombre = string, X = number) La funcion generarDatos() utiliza dos ciclos for, el primero para rellenar la tabla ratones con los nombres que aparecen en jugadores, definiendo que han jugado 10 rondas, y entre 0-10 victorias (esto es al azar), y el segundo les calcula el ratio que es una simple proporción entre victorias y rondas jugadas en total. Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 function generarDatos() Nota: Se usa la función truncar para que todos los datos queden con la misma cantidad de decimales, ya que divisiones como 1/3 entregan numero con mas de un decimal. Codigo fuente de la función truncar: Simple Round (yo solo la modifique un poco y puse las variables en español.) II En la función imprimirDatos(tabla) simplemente mostramos en pantalla (en este caso en el chat #lua), cada uno de los elementos de la tabla con su respectivo valor, su implementación es solo para comprobar que la tablas ratones y ranking se rellenaron correctamente, así que puedes borrarla del código si deseas. Code Lua 1 2 3 4 5 6 7 8 function imprimirDatos(tabla) III La función generarRanking() es una de las mas importantes. Aquí se tomarán el nombre del jugador y su ratio, y se insertaran en la tabla ranking, para posteriormente ordenarlos de forma descendente (de mayor ratio a menos ratio) con table.sort(). Code Lua 1 2 3 4 5 6 7 8 function generarRanking() Nota: table.sort() por defecto nos entrega los numero ordenados de menor a mayor, es por eso que se le debe agregar ese segundo parámetro. Manual de Referencia de lua 5.1: table.sort() IV Ahora en imprimirTop(rango), mostraremos nuevamente en pantalla los datos, pero esta vez desde la tabla ranking, por lo tanto estarán de forma ordenada, ademas podemos personalizar si queremos mostrar a los cinco mejores jugadores, tres , diez, etc (esto lo controlamos con un contador al que le vamos sumando una unidad hasta pasar el rango, entonces usamos la sentencia break para salirnos del ciclo for). También puedes aprovechar esta función para en vez de hacer un print(), generar un TextArea y mostrar los datos ahí. Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 function imprimirTop(rango) V Finalmente en la función principal main(), ejecutamos todas las funciones anteriores para que se generen, ordenen e impriman los datos. Code Lua 1 2 3 4 5 6 7 8 9 10 function main() Nota: math.randomseed(os.time()) solo es necesario, por que estamos usando math.random para generar datos al azar, pero si tu tienes los tuyos, puedes eliminar esa linea. Código (recuerda que puedes probarlo en la casa de la tribu usando el comando /lua o en Lua: demo pegando todo el código.) Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 -- Saintgio 2017 Dernière modification le 1483247340000 |
Miiiclaroo « Citoyen » 1483219260000
| 0 | ||
Así que eso estabas haciendo xd, muy buen tutorial Felicitaciones Psdt: pole mio xd |
Mustazza « Censeur » 1483312980000
| 0 | ||
¿Tu lo hiciste? Que bueno, lo usare |
Saintgio « Consul » 1483315260000
| 0 | ||
mustazza a dit : Si, a excepción de la función truncar que la saque de la web lua-users.org (puse los créditos en la parte I). |
Tocutoeltuco « Censeur » 1483449840000
| 0 | ||
Muy buen tutorial! |