Pues esto desarrollando lo que será el motor "Aleatorio" de las nuevas versiones de El Ahogado, pero me da un error con un fichero.
Aquí el código:
--Color-- blanco = Color.new(255,255,255,255) --Variables-- i = 0 Generathor = io.open("Semilla.txt","r") --Semilla generadora de los numeros-- line1 = Generathor:read() Generathor:close() Generathor = nil --Temporizador para que cambie de letra-- temporizador = Timer.new() temporizador:start() --Abrimos el archivo "Palabras.txt"-- Palabras = io.open("Palabras.txt","r") --[[Tabla que contiene las palabras escritas en el archivo "Palabras.txt", las seleccionará de manera aleatoria de una en una.]]-- Lineas = { Palabras:read(), Palabras:read(), Palabras:read(), Palabras:read(), Palabras:read(), Palabras:read(), Palabras:read(), Palabras:read(), Palabras:read(), Palabras:read(), Palabras:read(), Palabras:read(), Palabras:read(), Palabras:read(), Palabras:read(), Palabras:read(), Palabras:read(), Palabras:read(), Palabras:read(), Palabras:read() } --Función de la aleatoriedad-- function Aleatorio() --Aquí comienza todo el rollo de la Aleatoriedad xD-- math.randomseed(line1) i = math.random(1,table.getn(Lineas)) Palabraelegida = tostring(Lineas[i]) expalabra = string.len(Palabraelegida) TrueExtension = expalabra - 1 end --Bucle Principal-- while true do screen:clear() tiempo = temporizador:time() Aleatorio() if tiempo < 1000 then screen:print(30,30,Lineas[i],blanco) screen:print(30,50,TrueExtension,blanco) elseif tiempo > 1000 then local file = io.open("Semilla.txt","w") file:read() file:write(os.time()) file:close() file = nil dofile("WGF.lua") end screen.waitVblankStart() screen.flip() end
Bien, pues primero les felicito si le entienden al pedazo de código que está arriba jeje xD.
Segundo, les comento lo que me pasa:
Lo que hace el código anterior es mostrar una palabra diferente y la extensión de esta cada segundo, como pueden ver en esta parte:
local file = io.open("Semilla.txt","w") file:read() file:write(os.time()) file:close() file = nil dofile("WGF.lua") end --[[Se abre el archivo llamado semilla (que contiene el numero que arroja las palabras aleatoriamente) y escribe un numero nuevo para que la palabra no sea la misma.]]-- --[[Pero solo se abre 11 veces, al intentar abrirlo por doceava ocación me da el error:]]-- --Error: WGF.lua:51: ettempt to index local 'file' (a nil value) --Press start to restart
Espero me ayuden y gracias de antemano.
PD: Evitar comentarios tontos y/o que no tengan relación con el tema.
aver
primero cambia esto por un for nil, o un while nil
asi no dependeras por el numero de palabras y podras actualizar.
por otro lado falto cerrar el archivo palabras...
segundo, si tus palabras no van a ser mayor a len(a-z) osea como 26 palabras
usa una lista ="ABCD....Z" y la revuelvez,
ahora la A=1,b=2, para mas facil char("A")=65-64=1
entonces ya revuelvta la abecedario, por cada letra que escojas
esta la sustituyes por la ultma o la primera, segun. y devuevleves una nueva
lista = listaanterior -1
si antes len(lista)=26 ahora sera 25, y el random actuara en base a 25
y asi sucesivamente hasta ser random(1)...
como lo vas a escribir sera cosa tuya. ahorita no tengo a la mano como escribirlo.
en el random utiliza math.randomseed (x) donde x usaras el relog del psp para activar una semilla aleatoria
eso no tiene nada que ver con las letras, es solo un nuero, ya sabras como usarlo.
enotnces usas math.random ([m [, n]]) asi m=1,n=len(lista) o alreves, pero asi delimitas el rango del numero devuelto
he son varias cosas...
reduce el codigo, muchos dicen que no, pero es bueno reducir lo que no es necesariamente deva ser largo
y a larga el codigo que mejorara la aplicacion o el resultado de la misma
es decir , un codigo de 1000 lineas podria ser mejor que uno de 10 y viceversa.
solo hay que fijaros bien e cual es el que hay que reducir por obvias razones
y cual hay que escribir mucho para un optimo funcionamiento.
por fallo del mismo lua
hay funciones agregadas como ifexist or direxits, que igual dejan
abierto el file e impide mas uso de memoria o archivos
recomiendo no usarlas.
al final, usa una variable, no un archivo.
----
--Error: WGF.lua:51: ettempt to index local 'file' (a nil value)
--Press start to restart
eso es porque usaste LOCAL para file sabiendo que la ocuparas
en un archivo separado ademas que la pusiste a nil...
pero creo que tu error es pedir a os.time el nombre de archivo
sabras que no devuelve 1,2,3,4 por eso te marca error, ya que
utilizas su resultado para saber el nombre, por eso mejor usa mi ejemplo de lista="AB..."
creo "y va para DeViaNTe jeje" puedes fijarte en el codigo de "Number Whah?" pues creo escribi algo parecido.
saludos.
GuinXell aprender mas...
trom...
no me tiro el dia mirando todos y cada uno de los posts de los demás usuarios, y menos aún todos y cada uno de los códigos que éstos postean...
Solo le hice un pequeño código para generar aleatoriedad... en serio... deja de decir, DeV, tus códigos se parecen a los mios! Y dí mas bien: DeV, scripteamos de la misma forma :) (reconozco un mérito por tu parte, pues llevo años en el scripting..., no en Lua, pero sí en este estilo de programación...)
Actualmente desarrollando nuestra web y UXCode : http://www.gcrew.es
spam
sorry no entendi, pero ya no te voy a vacilar...jeje
Repasillo
Viendo que no encuentras respuesta, te hago un repaso rápido al código:
Actualmente desarrollando nuestra web y UXCode : http://www.gcrew.es
si en vez de file =
si en vez de file = io.open(), file:read(), file:close(), etc. lo cambias por: archivo = io.open() o fichero = io.open(). fichero:read() o archivo:read()? yo cuando necesite leer txt no me funcionaba con file.
un saludo!
P.D: a, y DDB, no es lua HMv2 porque puso screen.flip() cuando en HMv2 es screen.flipscreen()
Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderas trucos para resolver tus dudas antes.
No preguntes por MP, mejor pregunta aquí.
Es cierto xDDD
Es cierto xDDD
No..
Es un problema con la memoria o algo así, ya que si hiciera lo que me dices quedaría prácticamente igual.
eso no tiene nada que ver
puedes poner lo que quieras
pues no se si tiene o no que
pues no se si tiene o no que ver, pero a mi con file, no me funciono.
Man no es
Blanco = Color.new (255,255,255)?? Creo q lo pusiste 4 veces! XD
Porfavor....
Abstenerse de este tipo de comentarios, y como dice DDB en el valor alpha del color.
sAlud0s!
Porque está escho en lua
Porque está escho en lua HMv2 y el cuarto valor es la transparencia de trexto -.-"