hola amigos soy novato y necesito por favor su ayuda para crear una peque?a aplicacion que me muestre una palabra aleatoria en la pantalla de una lista que yo mismo pueda modificar y que esto suceda al presionar una tecla como quien dice que me revuelva la lista cada vez que la presiono sin repetir . si no es mucho pedir me gustaria ver un ejemplo por favor y gracias de antemano.

Hola, basta con generar un array con las palabras:

palabra[0]="palabra0";
palabra[1]="palabra1";
...
palabra[N]="palabraN";


y dibujar alguna palabra aleatoria con:

azar=floor(random(N+1));
draw_text(x,y,palabra[azar]);


Saludos.
Saludos Cordiales!!!

#2 Julio 20, 2011, 04:41:09 AM Ultima modificación: Julio 20, 2011, 04:45:51 AM por MaanuRP
Yo lo haria distinto, me parece que se te simplifica mucho mas (Pero solo sirve hasta 16 palabras sino me equivoco):

Usaria la funcion "choose", pero como se usa y para que sirve?

Su sintaxis es: choose(val1,val2,val3,valetc)

val(1,2,3,etc): Determina los distintos valores que puede devolver aleatoriamente la funcion

Devuelve uno de los argumentos asignados de forma aleatoria.

Te dejo un ejemplo:
choose("hola", "chau", "nada", "etc");

Esto va a devolver aleatoriamente "hola", "chau", "nada" o "etc"


Saludos!

Aunque el ejemplo de MaanuRP es m?s sencillo de implementar, hay que notar que est? limitado a 16 palabras. Para m?s palabras hay que usar un formato espec?fico o el resultado no ser?a del todo balanceado.
El ejemplo de Zeit tiene un l?mite de, si no recuerdo mal, 32.000 palabras.
Vim.

gracias amigos por sus respuestas pero como soy novato apenas estoy empezando con los codigos, por eso si no es mucho pedir les agardezco un ejemplo grafico pues as? analizo el codigo y aprendo mas ( es como para seleccionar de un grupo de estudiantes un nombre de cualquiera de ellos con solo presionar una tecla)

#5 Julio 20, 2011, 03:27:17 PM Ultima modificación: Julio 20, 2011, 03:32:18 PM por MaanuRP
Con mi metodo solo te servira si son 16 alumnos, pero bueno, seria algo asi:


Crea un sprite que seria el boton con el que quieras que se haga el "sorteo" entre los nombres, crea un objeto con ese sprite y en un evento de clic izquierdo o en el que tu quieras, pon una accion de "Execute code" de la pesta?a "Control" escribe lo siguiente:

str = choose("Juan", "Pedro", "Rocio", "Sofia")
show_message(str)

str: Es una variable cualquiera, le puedes cambiar el nombre.
choose("","","",""): Funcion con sus argumentos (Estos son los nombres de los alumnos, eso los tienes que elegir vos, pero ya sabes, tiene limite de 16 argumentos.
show_message(variable): En este caso la variable es str, pero dependera del nombre que le pusiste vos. Eso hara salir un mensaje con el nombre que salio al azar.


PD: No se como cambiar el tama?o de la letra dentro de los codigos, por eso la letra chica, perdon.

Saludos!

Usando el ejemplo de Zeit...

Pon? los siguientes c?digos en un objeto:
Create:
[gml]choosen = -1;
name[0] = "foo";
name[1] = "bar";
names = 2;[/gml]

Key Press Enter:
[gml]choosen = floor(random(names));[/gml]

Draw:
[gml]if (choosen == -1) {
    draw_text(10, 10, "No hay un nombre elejido a?n.");
} else {
    draw_text(10, 10, "Nombre: " + name[choosen] + ".");
}[/gml]

Para modificar los nombres ten?s que modificar el evento create. Por ejemplo, al agregar uno:
[gml]choosen = -1;
name[0] = "foo";
name[1] = "bar";
name[2] = "baz";
names = 3;  // Ese n?mero es el total de nombres.[/gml]
Vim.

gracias WADK eso era justo lo que necesita gracias a todos por sus ayudas oportunas, ya lo implement? y quedo de maravilla.

ojo, estas diciendo que quieres que las palabras no se repitan, con ambos metodos las palabras podr?an repetirse.
si bien es un metodo mucho m?s complejo yo usar?a listas

crar?a una ds_list y luego la duplicar?a y la ordenar?a aleatoriamente con su respectiva funcion, ir?a sacando las entradas una a una a medida que las muestro de la segunda lista y cuando no haya m?s valores, muestro un mensaje y vuelvo a duplicar la lista... no se si se entiende...
ese metodo no repetir?a nunca una palabra hasta que no se haya ordenado la lista completamente...

si te interesa me dices y te puedo hacer un ejemplo con c?digo...
Cita de: CGM 2008CGM: Un poco mas serios, mejores Juegos.
Bienvenid@ a CGM. Recomenzamos desde cero, con un reglamento mas estricto, mejor definido y con mas ganas que nunca de hacer juegos con calidad comercial. El que avisa no es traidor: Leete las reglas si no quieres llevarte un capon makero.
Mercilessly!!
Plug-In para animaciones: http://ciberman.net/tweenline/

Cita de: Ciberman en Julio 21, 2011, 03:49:54 AM
ojo, estas diciendo que quieres que las palabras no se repitan, con ambos metodos las palabras podr?an repetirse.
Se me pas? eso :S.
El ejemplo que puse antes tambi?n se puede modificar para que las palabras no se repitan.
Solo hay que cambiar el c?digo de Key Press Enter por este:
[gml]if (choosen != -1) {
    names -= 1;
    name[choosen] = name[names];
}
choosen = floor(random(names));[/gml]
Eso deber?a ser suficiente.

Me parace mucho m?s sencillo que el m?todo que plantea Ciberman.
Vim.

estas haciendo lo mismo que se hace con las listas de mi metodo pero manualmente usando arrays.

el problema de eso es que al no duplicar la lista, en el momento que se acabe la lista dar?a error, si se duplicara la lista se podr?a volver a resetear.

son metodos, nunca se me habr?a ocurrido esa forma de eliminar un elemento de la lista...

Cita de: CGM 2008CGM: Un poco mas serios, mejores Juegos.
Bienvenid@ a CGM. Recomenzamos desde cero, con un reglamento mas estricto, mejor definido y con mas ganas que nunca de hacer juegos con calidad comercial. El que avisa no es traidor: Leete las reglas si no quieres llevarte un capon makero.
Mercilessly!!
Plug-In para animaciones: http://ciberman.net/tweenline/

Hola, este ejemplo que puse en otro post hace tiempo puede servir para obtener sin repeticion una sublista dentro de una lista de palabras, objetos, rooms, etc... Saludos.

Post:
http://www.comunidadgm.org/index.php?topic=13803.msg68909#msg68909

Ejemplo:
http://www.comunidadgm.org/index.php?action=dlattach;topic=13803.0;attach=8346
Saludos Cordiales!!!

Perfecto!
Me sirve para poner comentarios al estilo minecraft  XD ;D
O para dar consejos antes de empezar el juego  :D
El Manual

- Ley de la gravitación selectiva: toda herramienta se caerá donde produzca el mayor daño.
- Si todo parece estar bien, es obvio que uno no encontró el problema
- Todo aquello que se corte a medida resultara ser demasiado corto.
- Todo archivo borrado era necesario, todo archivo conservado es inutil
- Cuando a usted se le ocurra la solución ideal, alguien habrá resuelto ya el problema.

                                                               Murphy


Cita de: Ciberman en Julio 21, 2011, 08:26:38 PM
estas haciendo lo mismo que se hace con las listas de mi metodo pero manualmente usando arrays.

el problema de eso es que al no duplicar la lista, en el momento que se acabe la lista dar?a error, si se duplicara la lista se podr?a volver a resetear.
Hmmm... seguro que eso se puede arreglar tambi?n ;).

Create:
[gml]choosen = -1;
name[0] = "foo";
name[1] = "bar";
names = 2;
cnames = names;[/gml]

Step:
[gml]if (cnames == 1) {
    cnames = names;
    choosen = -1;
}
if (choosen != -1) {
    var tmp;
    cnames -= 1;
    tmp = name[choosen];
    name[choosen] = name[cnames];
    name[cnames] = tmp;
}
choosen = floor(random(cnames));[/gml]

Draw:
[gml]if (choosen == -1) {
    draw_text(10, 10, "No hay un nombre elejido a?n.");
} else {
    draw_text(10, 10, "Nombre: " + name[choosen] + ".");
}
if (cnames == 1) {
    draw_text(10, 26, "Este es el ?ltimo nombre. Presiona Enter para reiniciar la lista.");
}[/gml]
Vim.

#14 Julio 22, 2011, 01:59:59 PM Ultima modificación: Julio 22, 2011, 09:12:50 PM por gatoblanco
hola , el ultimo ejemplo que me da wadk, ya lo hice pero no funciona

Cita de: Wadk en Julio 22, 2011, 02:10:17 AM
Cita de: Ciberman en Julio 21, 2011, 08:26:38 PM
estas haciendo lo mismo que se hace con las listas de mi metodo pero manualmente usando arrays.

el problema de eso es que al no duplicar la lista, en el momento que se acabe la lista dar?a error, si se duplicara la lista se podr?a volver a resetear.
Hmmm... seguro que eso se puede arreglar tambi?n ;).

Create:
[gml]choosen = -1;
name[0] = "foo";
name[1] = "bar";
names = 2;
cnames = names;[/gml]

Step:
[gml]if (cnames == 1) {
    cnames = names;
    choosen = -1;
}
if (choosen != -1) {
    var tmp;
    cnames -= 1;
    tmp = name[choosen];
    name[choosen] = name[cnames];
    name[cnames] = tmp;
}
choosen = floor(random(cnames));[/gml]

Draw:
[gml]if (choosen == -1) {
    draw_text(10, 10, "No hay un nombre elejido a?n.");
} else {
    draw_text(10, 10, "Nombre: " + name[choosen] + ".");
}
if (cnames == 1) {
    draw_text(10, 26, "Este es el ?ltimo nombre. Presiona Enter para reiniciar la lista.");
}[/gml]