Huésped Invitado
 | Tema: Parte10-Fragmentos de código Lua (Snippet) Dom Jul 27, 2008 1:51 pm | |
| Integración de Adhoc en Multijugador LUAPRIMERO DEFINIMOS LAS VARIABLES DEL TUTORIAL ADHOC | Código: | blanco = Color.new( 255, 255, 255 ) negro = Color.new( 0, 0, 0 )
pad = Controls.read() -- Variable que lee el teclado. oldpad = pad -- Teclado estado anterior.
SA = 60 -- Sensibilidad del Analógico (Se me ha olvidado ) --
fin_espera = true fin_juego = false fin_partida = false
nickname = System.nickName() nickname = tostring(nickname)
macaddress = Adhoc.getMac() macaddress = tostring(macaddress)
Adhoc_state = 0
mensaje_recibido = "" mensaje_enviado = "" ultimo_mensaje_recibido = "" ultimo_mensaje_enviado = "" mensaje = 65 caracter = "A"
jugador = {} jugador[1] = {
sprite = img_sprite_1, vida = 99, -- 100 Vida máxima / 0 = Destruido. p_fuego = 5, -- Daño inflingido. combustible = 99, -- Litros de Combustible. municion = 99, -- Numero de Proyectiles. x = 50, -- Posicion X. y = 136, -- Posicion Y. direccion = 0, -- Direccion del tanque en grados 0 - 360. accion = true, -- True = Operativo / False = Destruido. en_juego = true -- Si juega o no.
} jugador[2] = {
sprite = img_sprite_2, vida = 99, -- 100 Vida máxima / 0 = Destruido. p_fuego = 5, -- Daño inflingido. combustible = 99, -- Litros de Combustible. municion = 99, -- Numero de Proyectiles. x = 430, -- Posicion X. y = 136, -- Posicion Y. direccion = 0, -- Direccion del tanque en grados 0 - 360. accion = true, -- True = Operativo / False = Destruido. en_juego = true -- Si juega o no.
} |
DEFINIMOS LAS FUNCIONES DEL TUTORIAL ADHOC
| Código: | function reiniciar_nivel() -- TU CODIGO -- end function pintar_fondo_juego() -- TU CODIGO -- end function mueve_sprite_arriba( numero ) -- TU CODIGO -- end function mueve_sprite_abajo( numero ) -- TU CODIGO -- end function mueve_sprite_derecha( numero ) -- TU CODIGO -- end function mueve_sprite_izquierda( numero ) -- TU CODIGO -- end function accion_sprite( numero ) -- TU CODIGO -- end function dibujar_sprites() -- TU CODIGO -- end function mostrar_marcadores() -- TU CODIGO -- end function muestra_pantalla() -- TU CODIGO -- end function determina_fin_partida_y_ganador() -- TU CODIGO -- end |
AVISO DE INTERRUPTOR WLAN
| Código: | while pcall ( Adhoc.init ) == false do screen:print( 130, 116, "CONECTA EL INTERRUPTOR WLAN" , blanco ) screen:print( 130, 126, " PULSA X " , blanco ) screen.flip() fin_espera = true while fin_espera do pad = Controls.read() System.sleep(50) if pad:cross() then fin_espera = false end end end
screen:print( 140, 86, "nickname = " .. nickname , blanco ) screen:print( 140, 96, "macaddress = " .. macaddress , blanco ) screen:print( 130,116, " ESPERANDO ADHOC " , blanco ) screen.flip() System.sleep(50)
Adhoc.connect() System.sleep(50) repeat Adhoc_state = Adhoc.getState() System.sleep(50) until Adhoc_state == 1 |
-- La idea es transmitir via Adhoc un "String" o cadena de cuatro caracteres: -- -- El primer carácter sera uno de control que variará desde el número 65 que es la -- -- letra "A" hasta el número 122 que es la letra "z". Esto es para evitar que falte -- -- un mensaje, por ejemplo: Si nos ha llegado el mensaje número 75 y después nos -- -- llega el mensaje 77, pues está claro que el 76 no ha llegado. Ahora tenemos que -- -- pedirle a la otra consola que nos repita el mensaje 76. -- -- El segundo carácter es el de arriba o abajo, como no se pueden pulsar las dos -- -- teclas a la vez si es arriba "U", abajo "D" y no pulsadas "F". -- -- El tercer carácter es de derecha, izquierda igual que el anterior. Derecha "R", -- -- Izquierda "L" y no pulsadas "F". -- -- Y el cuarto carácter es de pulsar el botón cruz. Pulsado "C", no pulsado "F". --
| Código: | fin_juego = false repeat
reiniciar_nivel()
mensaje_recibido = "" mensaje_enviado = "" ultimo_mensaje_recibido = "" ultimo_mensaje_enviado = "" mensaje = 65
fin_partida = false repeat
pintar_fondo_juego()
pad = Controls.read()
if jugador[1].accion then -- Jugador que controlas tu. --
mensaje_enviado = string.char(mensaje) -- Cabecera de mensaje. -- |
SI PULSAS ARRIBA O ABAJO (No creo que puedas pulsar los dos a la vez)
| Código: | if pad:up() or pad:analogY() < -SA then mensaje_enviado = mensaje_enviado .. "U" mueve_sprite_arriba( 1 )
elseif pad:down() or pad:analogY() > SA then mensaje_enviado = mensaje_enviado .. "D" mueve_sprite_abajo( 1 ) else mensaje_enviado = mensaje_enviado .. "F" -- no hay movimiento -- end |
Por pipagerardo |
|