Вы находитесь на странице: 1из 10

7 Y MEDIO

VISUAL STUDIO

~1~

PROYECTO JUEGO DE 7 Y MEDIO


OBJETIVO
Conseguir siete y media, es decir, que el valor de todas las cartas del jugador sume siete puntos y medio o bien se
acerque el mximo a este valor sin pasarse. La banca juega contra cada uno de los puntos individualmente y su
jugada ha de superar o igualar la de cada uno de ellos. En caso de empate, la banca gana
TIPO BARAJA
En el juego de las siete y media se utiliza la baraja espaola de 40 cartas cualquier baraja de 40 cartas que tenga
12 figuras y 28 cartas distribuidas en cuatro grupos cuyos valores sean consecutivos del 1 al 7.
VALORES DE LAS CARTAS
Cada una de las figuras vale medio punto. El resto de las cartas tiene el valor representado por su ndice, es decir el
valor indicado en la carta: el uno o as vale 1 punto; el dos, 2 puntos; el tres, 3 puntos; el cuatro, 4 puntos; el cinco, 5;
el seis, 6 puntos, y el siete, 7. J, Q y K, valen medio punto.
INICIO DEL JUEGO
El primero en iniciar la partida es el jugador, pidiendo una carta tras otra hasta que decida plantarse o por el
contrario se pase de 7,5, que automticamente pierde y gana la banca.

Una vez acaba el jugador, jugar la banca


Finalmente el ganador ser el que ms se acerca o llega a 7,5
INDICACIONES PARA LA APLICACIN
Se debe cargar un array con las 40 cartas al inicio de la aplicacin
Al pulsar el botn IniciarPartida, el jugador recibe la primera carta
Posteriormente ir pidiendo carta con el botn PedirCarta, hasta que se plante, con el botn
Meplanto, o se pase de 7,5
Cada carta que sale debe quedar marcada en el array para que no vuelva a salir
En el momento en que el jugador se pasa de 7,5 se debe recargar el array y reinicializar todo.
Los botones y los labels aparecern ocultos, salvo el botn IniciarPartida, y se irn mostrando en
funcin de las necesidades del juego
Hay un label para el jugador que ir guardando el valor acumulado, y otro para la Banca

7 Y MEDIO

VISUAL STUDIO

En primer lugar hacemos el formulario.

Las label donde van a ir las cartas de la banca se llaman:


cartaBanca1, cartaBanca2, cartaBanca3, cartaBanca4 y cartaBanca5
Las label donde van a ir las cartas del jugador se llaman:
cartaJugador1, cartaJugador2, cartaJugador3, cartaJugador4, cartaJugador5
El botn Iniciar: btnIniciarJuego
El botn Otra Carta: btnOtraCarta
El botn Me Planto: btnMePlanto

~2~

7 Y MEDIO

VISUAL STUDIO

~3~

Al comienzo del juego aparezca solo el botn Iniciar y al darle aparezca la primera carta del jugador:

Al pulsar el botn Iniciar, que aparezca la primera carta del jugador y los botones Otra Carta y Me Planto

7 Y MEDIO

VISUAL STUDIO

~4~

El cdigo para que haga esto es el siguiente:


Public Class Form1
Dim indiceCartaJugador As Integer
Public Sub MostrarCartasJugador()
Me.Controls("cartaJugador" & indiceCartaJugador.ToString()).Visible = True
End Sub
Private Sub btnIniciarJuego_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnIniciarJuego.Click
indiceCartaJugador = 1
MostrarCartasJugador()
btnPedirCarta.Visible = True
btnMePlanto.Visible = True
End Sub
End Class

El segundo paso es que adems de mostrar la label de la primera carta del jugador que sale al darle a Inicio,
le asigne un valor de la baraja.
Creo una funcin que me cree una baraja en el array Dim Baraja(39) As String
Public Sub CrearBaraja()
'Cargo el array con las 40 cartas de la baraja
Dim numCarta As Integer = 0
For i As Integer = 0 To Baraja.GetUpperBound(0)
If numCarta > 10 Then
numCarta = 1
Baraja(i) = numCarta
Else
Baraja(i) = numCarta
End If
numCarta += 1
Next
End Sub

Hay que elegir una carta al azar de esa baraja. Para ello creo una variable Random.
Dim ValorAleatorio As New Random

Y la guardo en una variable (que puede ser integer)


Dim cartaElegida As Integer
cartaElegida = ValorAleatorio.Next(0, 39)

7 Y MEDIO

~5~

VISUAL STUDIO

Ahora ya tengo la posicin del array de la baraja a la que quiero acceder. Slo me queda acceder al array y
asignar esa carta al Jugador. Para ello creo la siguiente funcin.
Public Function cogerCartaJugador(ByVal a As Integer)
' Funcion que recibe como parametro la posicion del array
' Extraigo el valor en esa posicion, acumulo y paso el valor a las labels
If Baraja(cartaElegida) <= 7 Then
Me.Controls("cartaJugador" & indiceCartaJugador.ToString()).Text
Baraja(cartaElegida)
PuntosJugador += Convert.ToInt16(Baraja(cartaElegida))
ElseIf Baraja(cartaElegida) = 8 Then
Me.Controls("cartaJugador" & indiceCartaJugador.ToString()).Text
PuntosJugador += 0.5
ElseIf Baraja(cartaElegida) = 9 Then
Me.Controls("cartaJugador" & indiceCartaJugador.ToString()).Text
"Caballo"
PuntosJugador += 0.5
ElseIf Baraja(cartaElegida) = 10 Then
Me.Controls("cartaJugador" & indiceCartaJugador.ToString()).Text
PuntosJugador += 0.5
End If
Return (PuntosJugador)
End Function

= "Sota"
=

= "Rey"

Adems de mostrarlo por pantalla guardo este valor puesto que me va a hacer falta posteriormente
para ir sumndole el valor de las siguientes tiradas.
El cdigo completo hasta este momento es el siguiente:
Public Class Form1
Dim Baraja(39) As String
Dim cartaElegida As Integer
Dim ValorAleatorio As New Random
Dim PuntosJugador As Double
Dim indiceCartaJugador, indiceCartaBanca As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
'lblJugador.Text = InputBox("BIENVENIDO!. Introduzca su nombre:")
CrearBaraja()
End Sub
Public Sub CrearBaraja()
'Cargo el array con las 40 cartas de la baraja
Dim numCarta As Integer = 0
For i As Integer = 0 To Baraja.GetUpperBound(0)
If numCarta > 10 Then
numCarta = 1
Baraja(i) = numCarta
Else
Baraja(i) = numCarta
End If
numCarta += 1
Next
End Sub
Public Sub MostrarCartasBanca()
Me.Controls("cartaBanca" & indiceCartaBanca.ToString()).Visible = True
End Sub

7 Y MEDIO

~6~

VISUAL STUDIO

Public Sub MostrarCartasJugador()


Me.Controls("cartaJugador" & indiceCartaJugador.ToString()).Visible = True
End Sub
Public Function cogerCartaJugador(ByVal a As Integer)
' Funcion que recibe como parametro la posicion del array
' Extraigo el valor en esa posicion, acumulo y paso el valor a las labels
If Baraja(cartaElegida) <= 7 Then
Me.Controls("cartaJugador" & indiceCartaJugador.ToString()).Text
Baraja(cartaElegida)
PuntosJugador += Convert.ToInt16(Baraja(cartaElegida))
ElseIf Baraja(cartaElegida) = 8 Then
Me.Controls("cartaJugador" & indiceCartaJugador.ToString()).Text
PuntosJugador += 0.5
ElseIf Baraja(cartaElegida) = 9 Then
Me.Controls("cartaJugador" & indiceCartaJugador.ToString()).Text
"Caballo"
PuntosJugador += 0.5
ElseIf Baraja(cartaElegida) = 10 Then
Me.Controls("cartaJugador" & indiceCartaJugador.ToString()).Text
PuntosJugador += 0.5
End If
Return (PuntosJugador)
End Function

= "Sota"
=

= "Rey"

Private Sub btnIniciarJuego_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles btnIniciarJuego.Click
indiceCartaJugador = 1
'En cartaElegida guardo una posicin al azar dentro del array con las 40 cartas
cartaElegida = ValorAleatorio.Next(0, 39)
MostrarCartasJugador()
PuntosJugador = cogerCartaJugador(cartaElegida)
lblPuntosJugador.Visible = True
lblPuntosJugador.Text = PuntosJugador
'Pongo vaca en esa posicin del array para no poder volver a coger esa carta
Baraja(cartaElegida) = "vacia"
btnPedirCarta.Visible = True
btnMePlanto.Visible = True
End Sub
End Class

Llegados hasta este punto el usuario debe elegir si quiere otra carta o se planta.
Comenzamos por el caso de que pida otra carta:
Private Sub btnPedirCarta_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnPedirCarta.Click
indiceCartaJugador += 1
If indiceCartaJugador <= 5 Then
If PuntosJugador < 7.5 Then
cartaElegida = ValorAleatorio.Next(0, 39)
MostrarCartasJugador()
PuntosJugador = cogerCartaJugador(cartaElegida)
lblPuntosJugador.Text = PuntosJugador
Else
MsgBox("No tienes ms tiradas. HA GANADO LA BANCA")
End If
End If
End Sub

7 Y MEDIO

~7~

VISUAL STUDIO
CODIGO COMPLETO

Public Class Form1


Dim Baraja(39) As String
Dim cartaElegida As Integer
Dim ValorAleatorio As New Random
Dim PuntosJugador, PuntosBanca As Double
Dim indiceCartaJugador As Integer
Dim indiceCartaBanca As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
lblJugador.Text = InputBox("BIENVENIDO!. Introduzca su nombre:")
CrearBaraja()
End Sub
Public Sub CrearBaraja()
'Cargo el array con las 40 cartas de la baraja
Dim numCarta As Integer = 1
For i As Integer = 0 To Baraja.GetUpperBound(0)
If numCarta > 10 Then
numCarta = 1
Baraja(i) = numCarta
Else
Baraja(i) = numCarta
End If
numCarta += 1
Next
End Sub
Public Sub MostrarCartasBanca()
Me.Controls("cartaBanca" & indiceCartaBanca.ToString()).Visible = True
End Sub
Public Sub MostrarCartasJugador()
Me.Controls("cartaJugador" & indiceCartaJugador.ToString()).Visible = True
End Sub
Public Function cogerCartaJugador(ByVal a As Integer)
' Funcion que recibe como parametro la posicion del array
' Extraigo el valor en esa posicion, acumulo y paso el valor a las labels
If Baraja(cartaElegida) <= 7 Then
Me.Controls("cartaJugador" & indiceCartaJugador.ToString()).Text
Baraja(cartaElegida)
PuntosJugador += Convert.ToInt16(Baraja(cartaElegida))
ElseIf Baraja(cartaElegida) = 8 Then
Me.Controls("cartaJugador" & indiceCartaJugador.ToString()).Text
PuntosJugador += 0.5
ElseIf Baraja(cartaElegida) = 9 Then
Me.Controls("cartaJugador" & indiceCartaJugador.ToString()).Text
"Caballo"
PuntosJugador += 0.5
ElseIf Baraja(cartaElegida) = 10 Then
Me.Controls("cartaJugador" & indiceCartaJugador.ToString()).Text
PuntosJugador += 0.5
End If
Return (PuntosJugador)
End Function

= "Sota"
=

= "Rey"

7 Y MEDIO

~8~

VISUAL STUDIO

Public Function cogerCartaBanca(ByVal a As Integer)


' Funcion que recibe como parametro la posicion del array
' Extraigo el valor en esa posicion, acumulo y paso el valor a las labels
If Baraja(cartaElegida) <= 7 Then
Me.Controls("cartaBanca" & indiceCartaBanca.ToString()).Text
Baraja(cartaElegida)
PuntosBanca += Convert.ToInt16(Baraja(cartaElegida))
ElseIf Baraja(cartaElegida) = 8 Then
Me.Controls("cartaBanca" & indiceCartaBanca.ToString()).Text
PuntosBanca += 0.5
ElseIf Baraja(cartaElegida) = 9 Then
Me.Controls("cartaBanca" & indiceCartaBanca.ToString()).Text
PuntosBanca += 0.5
ElseIf Baraja(cartaElegida) = 10 Then
Me.Controls("cartaBanca" & indiceCartaBanca.ToString()).Text
PuntosBanca += 0.5
End If
Return (PuntosBanca)
End Function
Public Sub comprobarPuntosJugador()
If PuntosJugador > 7.5 Then
lblPuntosJugador.Text = PuntosJugador
MsgBox("Gana la banca")
comenzarJuego()
End If
End Sub
Public Sub comprobarPuntosBanca()
If PuntosBanca > 7.5 Then
lblPuntosBanca.Text = PuntosBanca
MsgBox("Has ganado")
comenzarJuego()
ElseIf PuntosBanca > PuntosJugador Then
lblPuntosBanca.Text = PuntosBanca
MsgBox("Gana la banca")
Else
sigueJugandoBanca()
End If
End Sub
Public Sub comenzarJuego()
PuntosJugador = 0
PuntosBanca = 0
indiceCartaBanca = 1
'indiceCartaJugador = 1 'redundante
lblPuntosJugador.Visible = False
lblPuntosBanca.Visible = False
btnPedirCarta.Visible = False
btnMePlanto.Visible = False
btnIniciarJuego.Visible = True
OcultarCartasBanca()
OcultarCartasJugador()
CrearBaraja()
End Sub

= "Sota"
= "Caballo"
= "Rey"

7 Y MEDIO

VISUAL STUDIO

~9~

Public Sub OcultarCartasBanca()


For i = 1 To 5
Me.Controls("cartaBanca" & i.ToString()).Visible = False
Next
End Sub
Public Sub OcultarCartasJugador()
For i = 1 To 5
Me.Controls("cartaJugador" & i.ToString()).Visible = False
Next
End Sub
Public Sub JuegaBanca()
'QUE JUEGUE LA BANCA
indiceCartaBanca = 1
'comprobarPuntosBanca()
cartaElegida = ValorAleatorio.Next(0, 39)
MostrarCartasBanca()
PuntosBanca = cogerCartaBanca(cartaElegida)
lblPuntosBanca.Visible = True
lblPuntosBanca.Text = PuntosBanca
'Pongo vaca en esa posicin del array para no poder volver a coger esa carta
Baraja(cartaElegida) = "vacia"
comprobarPuntosBanca()
End Sub
Public Sub sigueJugandoBanca()
indiceCartaBanca += 1
If indiceCartaBanca < 6 Then
cartaElegida = ValorAleatorio.Next(0, 39)
While Baraja(cartaElegida) = "vacia"
cartaElegida = ValorAleatorio.Next(0, 39)
End While
MostrarCartasBanca()
PuntosBanca = cogerCartaBanca(cartaElegida)
comprobarPuntosBanca()
lblPuntosBanca.Text = PuntosBanca
End If
End Sub
Private Sub btnIniciarJuego_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnIniciarJuego.Click
lblBanca.Visible = True
lblJugador.Visible = True
indiceCartaJugador = 1
'En cartaElegida guardo una posicin al azar dentro del array con las 40 cartas
cartaElegida = ValorAleatorio.Next(0, 39)
MostrarCartasJugador()
PuntosJugador = cogerCartaJugador(cartaElegida)
lblPuntosJugador.Visible = True
lblPuntosJugador.Text = PuntosJugador
'Pongo vaca en esa posicin del array para no poder volver a coger esa carta
Baraja(cartaElegida) = "vacia"
comprobarPuntosJugador()
btnPedirCarta.Visible = True
btnMePlanto.Visible = True
btnIniciarJuego.Visible = False
End Sub

7 Y MEDIO

VISUAL STUDIO

Private Sub btnPedirCarta_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles btnPedirCarta.Click
indiceCartaJugador += 1
comprobarPuntosJugador()
If indiceCartaJugador < 6 Then
cartaElegida = ValorAleatorio.Next(0, 39)
While Baraja(cartaElegida) = "vacia"
cartaElegida = ValorAleatorio.Next(0, 39)
End While
MostrarCartasJugador()
PuntosJugador = cogerCartaJugador(cartaElegida)
comprobarPuntosJugador()
lblPuntosJugador.Text = PuntosJugador
ElseIf indiceCartaJugador = 5 Then
JuegaBanca()
comenzarJuego()
End If
End Sub
Private Sub btnMePlanto_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnMePlanto.Click
JuegaBanca()
End Sub
End Class

~ 10 ~