Nuevo en programacion, ayuda en crear funciones

-DnT-

Pues bueno, estoy en 1º de bach y en informatica hemos estado programando un par de cosas (un paint basico, una calculadora) y ahora estamos haciendo un Snake de 2 players pero sin que la cola crezca.

Por ahora tengo esto:

Private Sub btn_juego_Click()
Pic1.Cls
x = 10: y = 100
Do
    If x > 604 Then Exit Do
    Pic1.Line (x, y)-(x + 1, y)
    x = x + 1: y = y
    Pic1.Refresh
    DoEvents
Loop
End Sub

Private Sub form_load()
ScaleMode = 3
AutoRedraw = True
With Pic1
     AutoRedraw = True
    .ScaleMode = 3
    .Height = 404
    .Width = 604
End With
End Sub

El tema es que en clase el profesor dijo que necesitamos una funcion para que "retarde" la tarea de do y asi, poder ver la linea... el tema es que no recuerdo como lo puso, y hasta el martes no lo vuelvo a ver... hay alguien que pueda decirmelo please? y si me da alguna sugerencia (Explicada plz, que se lo basico de programacion) se lo agradeceria profundamente ^^

PD: Que conste que esto no son deberes, lo hago porque quiero xD

billie

joe yo en informática 'aprendía' a usar el word +_+

Soltrac

sleep o wait creo q es

-DnT-

No, a ver, la funcion la creamos nosotros mismos y le dabamos el nombre de "Retardo" y poniamos algo de Byval o algo por el estilo... pero es que no me acuerdo como era :(

Solo me acuerdo que era un bucle que dependiendo del valor que le daba yo, pues lo hacia tantas veces.

por ejemplo "Retardo 1000" pues hace ese bucle 1000 veces para perder un poco el tiempo y que se vea la linea...

IS4kO

Tienes que pasarle un parámetro a la función, en el caso que decías, creo que por valor, dependiendo del lenguaje que uses tendrá una sintaxis u otra, pero para que te hagas una idea, te lo incluyo a la fucion del click:

Private Sub btn_juego_Click(ByVal retardo as integer)
Pic1.Cls
x = 10: y = 100
While (retardo>0)

If x > 604 Then Exit Do
Pic1.Line (x, y)-(x + 1, y)
x = x + 1: y = y
Pic1.Refresh
DoEvents
retardo--

wend
End Sub

P.D: Eso si q es un profesor, enseñando visual (creo), en clase de informática de 1º de Bachiller, quien lo hubiera pillado :), yo en Bachiller daba Logo y Basic xDDD eso Logo ahiiii jaejejaaej levantaTortuga, bajaTortuga, avanzaTortuga... dios que viejo que soy


Edit, se me olvidaba, cuando llames al procedimiento tienes que enviarle el valor del parametro claro:

En este caso como creo que lo estas haciendo con visual para no liarte a la hora de llamar al evento click pasandole parámetros debería quedarte algo así:

Private Sub btn_juego_Click()
Pic1.Cls
x = 10: y = 100
.
.
.
retardo(1000)
End Sub

public sub retardo(Byval r as integer)
{
while (r>0)
.
.
r--
wend
}
end sub

Otra cosa, FUNCION para cuando devuelvas algun valor, PROCEDIMIENTO, si no devuelves nada :)

RikuTheRonin

#2 Yo di de todo: office, paginas web, programacion en basic...

-DnT-

#5, la verdad es que me has liado un poquitin xD

Tu codigo no me va ;( me da error... pero bueno! no pasa nada, he creado un bucle un poco tonto para retrasar la velocidad de la linea de esta manera:

Private Sub btn_juego_Click()
Dim i As Integer
Pic1.Cls
x = 10: y = 100
Do
If x > 604 Then Exit Do
Pic1.Line (x, y)-(x + 1, y)
x = x + 1: y = y
For i = 1 To 1000
Print " "
Next i

Pic1.Refresh
DoEvents
Loop
End Sub

Se que es un poco tonto, pero funciona xDD

Ahora otra pregunta, como hago para que al presionar la tecla A, S, D o W la serpiente se mueva para dichas direcciones? ayer me pegue toda la tarde pensando y probando, pero nada :(

Y otra cosa, para variar la velocidad de la serpiente con un scroll? Es decir, incrementar el bucle mas o menos, como si fuera una difilcudad

Thx por la ayuda

LoRTH

Pos para lo de la velocidad, que dependa de una variable, que tenga que introducir el jugador.

Para lo del canvio de direccion, no se mucho, y no se cual seria el comando para detectar la letra, pero si tienes un tablero del palo Array de arrya de 9 x 9, podias decirli de que casilla a casilla debe abanzar...

IS4kO

-DnT- mi codigo te da error pq no esta acabao, son solo ejemplos, de como pasar parametros a funciones, en el codigo qyue pones ahora te funciona pero no las usas :)

Para controlar el tema de las pulsaciones mirate el evento onkeyPress, es que no me acuerdo exactamente cual era en vb6, creo que ese.

La cuestion es que iwal que haces un onclick a un boton, cada vez que pulses una tecla, compruebes si esta es una A, S, etc.. y dependiendo de esta peus mandarás a la serpiente para un lado o para otro

En vb.net sería así:

Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress
MsgBox(e.KeyChar)
End Sub

A

Y en VB6...

Sub Form1_KeyPress (KeyAscii As Integer)
If KeyAscii = "número" Then "acciones"
End If
End Sub

javithelong

te recomiendo que te hagas una variable en plan "direccion" y que la serpiente se mueva siguiendo esa direccion (subiendo y bajando en el array), y con las pulsaciones de teclas, se cambie esa variable

uplink

joder, usando arrays en primero de bachiller, kien pillara a un profe desos... yo me pasaba las horas de informatica copiando texto a word y poniendolo bonito :'(

Usuarios habituales

  • javithelong
  • Archville
  • IS4kO
  • LoRTH
  • -DnT-
  • RikuTheRonin
  • billie