Necesito ayuda!!!rapido xfa.
Necesito que me miren este programa no me va bien!!Tengo que hacer el juego del parchis en visual basic.Option Explicit
Private dado As Byte
Private contRo, contAz, contAm, contVe As Byte
Private turno As Byte
Private ro0, ro1, ro2, ro3 As Byte
Private az0, az1, az2, az3 As Byte
Private am0, am1, am2, am3 As Byte
Private ve0, ve1, ve2, ve3 As Byte
Private ficha As Byte
Private sacada As Boolean
Private Sub Form_Load()
ro0 = 4: ro1 = 4: ro2 = 4: ro3 = 4
az0 = 21: az1 = 21: az2 = 21: az3 = 21
am0 = 38: am1 = 38: am2 = 38: am3 = 38
ve0 = 55: ve1 = 55: ve2 = 55: ve3 = 55
Randomize 'Inicializa el generador de aleatorios
End Sub
Private Sub cmdDado_Click()
'los cont recojen el nº de fichas que llegaron:
'Do While (contRo < 3 Or contAz < 3 Or contAm < 3 Or contVe < 3)
Call Tirada
If turno = 0 Then
Call Movimiento(ro0, ro1, ro2, ro3)
ElseIf turno = 1 Then
Call Movimiento(az0, az1, az2, az3)
ElseIf turno = 2 Then
Call Movimiento(am0, am1, am2, am3)
Else
Call Movimiento(ve0, ve1, ve2, ve3)
End If
'Loop
End Sub
Private Sub Tirada()
'Ojo: CInt aproxima; Int trunca:
dado = Int(6 * Rnd + 1)
txtDado.Text = CStr(dado)
End Sub
Private Sub Movimiento(ficha0, ficha1, ficha2, ficha3)
If (lstJug(turno).List(0) <> "" Or lstJug(turno).List(1) <> "" Or lstJug(turno).List(2) <> "" Or lstJug(turno).List(3) <> "") And dado = 5 Then
Call Salida(ficha0, ficha1, ficha2, ficha3)
ElseIf lstJug(turno).List(0) = "" Or lstJug(turno).List(1) = "" Or lstJug(turno).List(2) = "" Or lstJug(turno).List(3) = "" Then
Call Normal(ficha0, ficha1, ficha2, ficha3)
End If
turno = turno + 1
If turno > 3 Then turno = 0
If turno = 0 Then
lstJugadores.ListIndex = 0
ElseIf turno = 1 Then lstJugadores.ListIndex = 1
ElseIf turno = 2 Then lstJugadores.ListIndex = 2
ElseIf turno = 3 Then lstJugadores.ListIndex = 3
End If
End Sub
Private Sub Salida(a, b, c, d)
sacada = False
If lstJug(turno).List(0) <> "" Then
pos(a).AddItem lstJug(turno).List(0)
lstJug(turno).List(0) = ""
sacada = True
ElseIf lstJug(turno).List(1) <> "" Then
pos(b).AddItem lstJug(turno).List(1)
lstJug(turno).List(1) = ""
sacada = True
ElseIf lstJug(turno).List(2) <> "" Then
pos(c).AddItem lstJug(turno).List(2)
lstJug(turno).List(2) = ""
sacada = True
ElseIf lstJug(turno).List(3) <> "" Then
pos(d).AddItem lstJug(turno).List(3)
lstJug(turno).List(3) = ""
sacada = True
End If
'Sacada toma valor True cuando sale una ficha de casa
End Sub
Private Function F_Reposiciona(ByVal ficha As Byte) As Byte
ficha = ficha + dado
If (turno = 1 Or turno = 2 Or turno = 3) And ficha > 67 Then ficha = ficha - 68
F_Reposiciona = ficha
End Function
Private Sub Normal(a, b, c, d)
Dim aux As Byte
Dim anterior As Byte
If optFicha0.Value = True And lstJug(turno).List(0) = "" Then
aux = a
a = F_Reposiciona(aux)
pos(a).AddItem pos(aux).List(0)
pos(aux).RemoveItem 0
'¿x ké actualiza aux=a al hacer a=F_reposiciona(aux)?
'xke aux pasa por referencia; x eso es actualizado al volver.
'x defecto, los parámetros se pasan siempre x referencia.
'Si pasamos 'aux' x valor a la función (Con ByVal) no necesitamos
'otra variable para almacenar la posición anterior.
ElseIf optFicha1.Value = True And lstJug(turno).List(1) = "" Then
aux = b
anterior = b
b = F_Reposiciona(aux)
pos(b).AddItem pos(anterior).List(0)
pos(anterior).RemoveItem 0
ElseIf optFicha2.Value = True And lstJug(turno).List(2) = "" Then
aux = c
anterior = c
c = F_Reposiciona(aux)
pos(c).AddItem pos(anterior).List(0)
pos(anterior).RemoveItem 0
ElseIf optFicha3.Value = True And lstJug(turno).List(3) = "" Then
aux = d
anterior = d
d = F_Reposiciona(aux)
pos(d).AddItem pos(anterior).List(0)
pos(anterior).RemoveItem 0
Else
MsgBox "Esa ficha no ha salido de casa todavía. Usa una de las que ya están fuera"
If turno = 0 Then
turno = 3 'xke al salir incrementa turno; como 4 > 3 => reinicializa turno=0
Else
turno = turno - 1
End If
End If
End Sub
Esto es lo que hice!!Gracias por contestar al que lo haga.
Private dado As Byte
Private contRo, contAz, contAm, contVe As Byte
Private turno As Byte
Private ro0, ro1, ro2, ro3 As Byte
Private az0, az1, az2, az3 As Byte
Private am0, am1, am2, am3 As Byte
Private ve0, ve1, ve2, ve3 As Byte
Private ficha As Byte
Private sacada As Boolean
Private Sub Form_Load()
ro0 = 4: ro1 = 4: ro2 = 4: ro3 = 4
az0 = 21: az1 = 21: az2 = 21: az3 = 21
am0 = 38: am1 = 38: am2 = 38: am3 = 38
ve0 = 55: ve1 = 55: ve2 = 55: ve3 = 55
Randomize 'Inicializa el generador de aleatorios
End Sub
Private Sub cmdDado_Click()
'los cont recojen el nº de fichas que llegaron:
'Do While (contRo < 3 Or contAz < 3 Or contAm < 3 Or contVe < 3)
Call Tirada
If turno = 0 Then
Call Movimiento(ro0, ro1, ro2, ro3)
ElseIf turno = 1 Then
Call Movimiento(az0, az1, az2, az3)
ElseIf turno = 2 Then
Call Movimiento(am0, am1, am2, am3)
Else
Call Movimiento(ve0, ve1, ve2, ve3)
End If
'Loop
End Sub
Private Sub Tirada()
'Ojo: CInt aproxima; Int trunca:
dado = Int(6 * Rnd + 1)
txtDado.Text = CStr(dado)
End Sub
Private Sub Movimiento(ficha0, ficha1, ficha2, ficha3)
If (lstJug(turno).List(0) <> "" Or lstJug(turno).List(1) <> "" Or lstJug(turno).List(2) <> "" Or lstJug(turno).List(3) <> "") And dado = 5 Then
Call Salida(ficha0, ficha1, ficha2, ficha3)
ElseIf lstJug(turno).List(0) = "" Or lstJug(turno).List(1) = "" Or lstJug(turno).List(2) = "" Or lstJug(turno).List(3) = "" Then
Call Normal(ficha0, ficha1, ficha2, ficha3)
End If
turno = turno + 1
If turno > 3 Then turno = 0
If turno = 0 Then
lstJugadores.ListIndex = 0
ElseIf turno = 1 Then lstJugadores.ListIndex = 1
ElseIf turno = 2 Then lstJugadores.ListIndex = 2
ElseIf turno = 3 Then lstJugadores.ListIndex = 3
End If
End Sub
Private Sub Salida(a, b, c, d)
sacada = False
If lstJug(turno).List(0) <> "" Then
pos(a).AddItem lstJug(turno).List(0)
lstJug(turno).List(0) = ""
sacada = True
ElseIf lstJug(turno).List(1) <> "" Then
pos(b).AddItem lstJug(turno).List(1)
lstJug(turno).List(1) = ""
sacada = True
ElseIf lstJug(turno).List(2) <> "" Then
pos(c).AddItem lstJug(turno).List(2)
lstJug(turno).List(2) = ""
sacada = True
ElseIf lstJug(turno).List(3) <> "" Then
pos(d).AddItem lstJug(turno).List(3)
lstJug(turno).List(3) = ""
sacada = True
End If
'Sacada toma valor True cuando sale una ficha de casa
End Sub
Private Function F_Reposiciona(ByVal ficha As Byte) As Byte
ficha = ficha + dado
If (turno = 1 Or turno = 2 Or turno = 3) And ficha > 67 Then ficha = ficha - 68
F_Reposiciona = ficha
End Function
Private Sub Normal(a, b, c, d)
Dim aux As Byte
Dim anterior As Byte
If optFicha0.Value = True And lstJug(turno).List(0) = "" Then
aux = a
a = F_Reposiciona(aux)
pos(a).AddItem pos(aux).List(0)
pos(aux).RemoveItem 0
'¿x ké actualiza aux=a al hacer a=F_reposiciona(aux)?
'xke aux pasa por referencia; x eso es actualizado al volver.
'x defecto, los parámetros se pasan siempre x referencia.
'Si pasamos 'aux' x valor a la función (Con ByVal) no necesitamos
'otra variable para almacenar la posición anterior.
ElseIf optFicha1.Value = True And lstJug(turno).List(1) = "" Then
aux = b
anterior = b
b = F_Reposiciona(aux)
pos(b).AddItem pos(anterior).List(0)
pos(anterior).RemoveItem 0
ElseIf optFicha2.Value = True And lstJug(turno).List(2) = "" Then
aux = c
anterior = c
c = F_Reposiciona(aux)
pos(c).AddItem pos(anterior).List(0)
pos(anterior).RemoveItem 0
ElseIf optFicha3.Value = True And lstJug(turno).List(3) = "" Then
aux = d
anterior = d
d = F_Reposiciona(aux)
pos(d).AddItem pos(anterior).List(0)
pos(anterior).RemoveItem 0
Else
MsgBox "Esa ficha no ha salido de casa todavía. Usa una de las que ya están fuera"
If turno = 0 Then
turno = 3 'xke al salir incrementa turno; como 4 > 3 => reinicializa turno=0
Else
turno = turno - 1
End If
End If
End Sub
Esto es lo que hice!!Gracias por contestar al que lo haga.
Tal vez podría ayudarle si me describiera el juego, ya que no lo conozco (al menos por ese nombre). Además, cuál es el problema con su código? No espere que se lo den hecho, eso no suele suceder. Yo le ayudo con mucho gusto con algún problema ESPECÍFICO.
hola!!!
Muchas gracias pero ya lo solucione!!era una tonteria lo que estaba mal.chao
Muchas gracias pero ya lo solucione!!era una tonteria lo que estaba mal.chao
