2019-04-14, 03:19 AM
(This post was last modified: 2019-04-15, 10:29 PM by klays.
Edit Reason: se agregan sugerencias y arreglos de comentarios.
)
switch, usos.
Para Variables globales.
Primero hay que tener una variable creada, para testear puedes probar con esto:
PHP Code:
new randomnumber = random(4);
Luego de eso creamos el switch, puede ser llamado cuando se ejecute un comando, por ejemplo.
PHP Code:
switch(randomnumber)
{
? ??case 0: print("el numero es 0.");
? ? case 1: print("el numero es 1.");
? ? case 2: print("el numero es 2.");
? ? case 3: print("el numero es 3.");
? ? default: print("el n?mero no es reconocido.");
}
Esto significar?, si la variable (randomnumber) es igual a x (el n?mero aleatorio de 0 a 3) imprimir? cierto valor (print).
Para variables del jugador.
Primero hay que crear la variable:
PHP Code:
new variable[MAX_PLAYERS];
Luego de eso, el switch, puede ser llamado desde un comando, por ejemplo:
PHP Code:
switch(variable[playerid])
{
? ??case 0:
? ? {
? ? ? ? SendClientMessage(playerid, -1, "tu variable es 0.");
? ? ? ? // resto de c?digo en caso de ser necesario.
? ??}
? ? case 1:
? ? {
? ? ? ??SendClientMessage(playerid, -1, "tu variable es 1.");
? ? ? ??// resto de c?digo en caso de ser necesario.
? ? }
? ??case 2:
? ? {
? ? ? ??SendClientMessage(playerid, -1, "tu variable es 2.");
? ? ? ?// resto de c?digo en caso de ser necesario.
? ? }
? ? default:
? ? {
? ? ? ? SendClientMessage(playerid, -1, "...");
? ? ? ? // resto de c?digo en caso de ser necesario.
? ? }
}
En resumen, si la variable?(variable) del jugador?es igual a x (numero asignado) mendar? cierto mensaje y ejecutar? cierta funci?n seg?n el case.
default: es llamado cuando ning?n case (tras comprobarlos) es igual a la variable, ejemplo:
PHP Code:
new dos = 2;
switch(dos)
{
? ? case 0: print("numero 0.");
? ? case 1: print("numero 1.");
? ? case 2: print("numero 2.");
? ? case 3: print("numero 3.");
? ? default: print("numero x");
}
En el ejemplo anterior la variable es igual a 2, por lo tanto ejecutar? el case 2, en resumen imprimir? numero 2 en la consola, pero en el siguiente ejemplo:
PHP Code:
new dos = 2;
switch(dos)
{
? ? case 0: print("numero 0.");
? ? case 1: print("numero 1.");
? ? default: print("numero x");
}
la variable es igual a dos, dentro del switch no hay ning?n case con valor 2 por lo tanto se ejecutar? el default. Por lo tanto imprimir?: numero x en la consola.
Para resumir default es invocado cuando ning?n case cumple con la variable.
__
Rangos de comprobaciones.
Para n?meros consecutivos: puedes comprobar m?s de un (1) solo n?mero en el case (definimos case como: case: 1, etc?tera) con:
PHP Code:
case 1 .. 4: // resto del c?digo.
Un ejemplo para esto es lo siguiente:
PHP Code:
new variable = random(51);
switch(variable)
{
? ? case 1 .. 10: print("el numero est? entre el 1 al 10.");
? ??case 11 .. 20: print("el numero est? entre el 11 al 20.");
? ? case 21?.. 30: print("el numero est? entre el 21?al 30.");
? ? case 31?.. 40: print("el numero est? entre el 31 al 40.");
? ? case 41?.. 50: print("el numero est? entre el 41 al 50.");
? ? default: print("el numero esta en un rango del 0 al 50.");
}
(cr?ditos/idea: autorojo) | En resumen, si la variable se establece en un n?mero entre 1 y 10 imprimir?: el n?mero est? entre el 1 al 10 y as? consecutivamente dependiendo del case. En caso de que ninguno est? en lo correcto se ejecutar? default.
Para n?meros distintos: puedes comprobar distintos n?meros que no est?n de forma consecutiva de la siguiente forma:
PHP Code:
case 1, 3,?7: // resto del c?digo.
Para explicar, si la variable es igual a 1, 3 ? 7 ser? ejectuada la funci?n que esta contenga, ejemplo:
PHP Code:
new variable = random(10);
switch(variable)
{
? ? case 1, 3, 7: print("el numero puede ser 1, 3 o 7.");
? ??case 2, 4, 6: print("el numero puede ser 2, 4 o 6.");
? ? default: print("el numero puede ser 0 o 5.");
}
Para resumir, el case 1, 3, 7 se ejecutar?n si el n?mero aleatorio es igual a cualquiera de esos 3 y as? con los dem?s, caso contrario se ejecutar? el default (n?mero 0 y 5, los restantes).
__
post en edici?n.