Black jack , convertir une lettre en nombre pour addition

Résolu
Signaler
Messages postés
45
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
2 avril 2014
-
Messages postés
45
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
2 avril 2014
-
Bonjour à tous ,
On ma demandé de faire un petit jeu de black jack que j'ai presque réussi a terminé sauf que je suis bloqué a un petit endroit.

C'est donc au moment on l'on veu tiré une carte , pour les valeurs de 2 à 10 , pas de probléme , le soucis c'est pour le valet ,la dame ,le roi et l'as .
J'ai donc fait une fonction qui arrive à faire affiché cet 4 lettres.
Function fct_chiffre(ByVal pvaleurausort As Integer) As String
        Dim wchiffre As String
        Dim V As Long
        Dim D As Long
        Dim R As Long
        Dim A As Long

If pvaleurausort = 11 Then
            wchiffre = "V"
        End If
        If pvaleurausort = 12 Then
            wchiffre = "D"
        End If
        If pvaleurausort = 13 Then
            wchiffre = "R"
        End If
        If pvaleurausort = 14 Then
            wchiffre = "A"
        End If
        fct_chiffre = wchiffre
    End Function


Les valeurs 11 , 12 ,13 et 14 sont la parce que j'ai fait un compteur qui tourne de 1 à 14.
J'ai essayé de faire : if ma carte = "V" then
mon resultat = "10"
end if

Mais ensuite dans ma textbox qui additione les valeurs ( car au black jack au dessus de 21 on a perdu) je n'arrive pas a faire un +10 quand je tire un valet dame roi as.

Dans l'attente d'une reponse , merci d'avance ^^

10 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
48
salut,

formater?
ah si seulement...
la même en moins crispé?

Function fct_chiffre(ByVal pvaleurausort As Integer) As String
select case pvaleurausort 
  case 1 to 10: return pvaleurausort.tostring
  case 11: return "V"
  case 12: return "D"
  case 13: return "R"
  case 14: return "A"
  case else: return string.empty
 end select
End Function



et on se rend compte que... RIEN
le problème n'est pas de ta fonction (même si elle était à refaire) mais le reste du traitement

on attend donc le vrai code utile, qui va ressemble à numerique = string + string
[hr]
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
"En faite avec ma fonction je veut afficher un "V" chose que j'ai réussi à faire"
Déjà une chose de faite

"mais ensuite dans une textbox a coté , je veus additionné les valeur"
Dans quoi se trouvent les valeurs ?
Y a t-il une seule valeur à chaque emplacement ?

"mon bouton qui appel ma fonction"
Ta fonction doit-elle convertir une seule carte ?
Si oui, tu peux utiliser le même principe que t'a proposé PCPT :
Il te suffit de lire l'aide de la fonction "Select Case" et tu verras que ce n'est pas compliqué.

Function fct_Valeur(ByVal sCarte As String) As Integer
Select Case sCarte 
  Case "1", "2", "3", "4", "5", "6", "7", "8", "9": Return Val(sCarte)
  Case "V", "D", "R": Return 10
  Case "A": Return 11
  Case Else: Return 0
 End Select
End Function

Et pour l'utiliser :
maSomme = fct_Valeur("V") + fct_Valeur("5") + fct_Valeur("A")

Là où tu rigoler, c'est pour faitre la différence entre un As et ... un As

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
267
Date d'inscription
jeudi 5 février 2009
Statut
Membre
Dernière intervention
26 novembre 2013
2
Bonjour,

As tu fais attention a convertir tes formats?

Peux tu mettre ton code qui pose une erreur?

Merci


HellAngel777
Les machines ne font pas d'erreurs
Heureusement nous sommes humains
Messages postés
45
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
2 avril 2014

Ben le truc c'est que je n'ai pas de code encore , c'est pour ça que je suis venu içi , en ayant l'espoir que quelqu'un pourrai m'éclairer

le seul truc que j'avais pensé c'était ça :

If chcarte.Text = "V" Then
            chresult.Text = 10
        End If
If chcarte.Text = "D" Then
            chresult.Text = 10
        End If
If chcarte.Text = "R" Then
            chresult.Text = 10
        End If
If chcarte.Text = "A" Then
            chresult.Text = 11
        End If


Mais ça m'affiche zero dans ma zone de resultat
Messages postés
267
Date d'inscription
jeudi 5 février 2009
Statut
Membre
Dernière intervention
26 novembre 2013
2
Et en rajoutant des quote?

If chcarte.Text = "V" Then
            chresult.Text = "10"
        End If
If chcarte.Text = "D" Then
            chresult.Text = "10"
        End If
If chcarte.Text = "R" Then
            chresult.Text = "10"
        End If
If chcarte.Text = "A" Then
            chresult.Text = "11"
        End If

Ca marque toujours 0?
Par contre tu es bien en .net?

HellAngel777
Les machines ne font pas d'erreurs
Heureusement nous sommes humains
Messages postés
45
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
2 avril 2014

Oui je suis bien en .net , PCPT ma assez engeuler la derniere fois a cause de sa lol
PCPT cette fois ci j'ai bien posté la ou il fallait ?

Merci pour le corriger de la fonction
Et même avec les quote sa me met 0.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Recentrons :
Ton énnoncé n'est pas clair :
"V"= 11, "D"=12 ... ou "V", "D" ... = 10 ?
Parce que la solution ne sera pas exactement la même.
Soit plus clair.

C'est la conversion "V" vers 11 qui te pose problème, ou 11 vers "V" ?
La solution de PCPT ne vaut que pour le deuxième cas, mais il t'est très simple de reprendre le même programme pour faire l'inverse ...
(*) avec modif des valeurs éventuellement car V, D, R et A doivent renvoyer 10

" sa me met 0 " : Dans quoi ? Suite à quel action ?

Vala
Jack, =fr MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
45
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
2 avril 2014

En faite avec ma fonction je veut afficher un "V" chose que j'ai réussi à faire , mais ensuite dans une textbox a coté , je veus additionné les valeur et la valeur d'un valet au black jack et 10 tout comme la dame et le roi.
Donc quand j'appuie sur mon bouton qui appel ma fonction , ca appel un 11 , mais qui affiche un V et je veus que le V prenne la valeur de 10 pour pouvoir additionné les chiffres
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Essaye d'être TRES précis quand tu poses une question, sinon, ça se barre en sucette et, toi comme nous, on perd du temps
Messages postés
45
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
2 avril 2014

Merci a tous , j'ai réussi mon petit jeu de black jack , je vous fournie le code integral :

Public Class Form3

    Function fct_chiffre(ByVal pvaleurausort As Integer) As String
        Select Case pvaleurausort
            Case 1 : Return "A"
            Case 2 To 10 : Return pvaleurausort.ToString
            Case 11 : Return "V"
            Case 12 : Return "D"
            Case 13 : Return "R"
            Case 14 : Return "A"
            Case Else : Return String.Empty
        End Select
    End Function
    Function fct_Valeurcarte(ByVal sCarte As String) As Integer
        Select Case sCarte
            Case "A" : Return 1
            Case "2", "3", "4", "5", "6", "7", "8", "9", "10" : Return Val(sCarte)
            Case "V", "D", "R" : Return 10
            Case "A" : Return 11
        End Select
    End Function

    Sub resultat()
        If chresult.Text 21 Or resultdeal.Text 21 Then
            MsgBox("BLACK JACK !")
            chcompte.Text = Val(chcompte.Text) + Val(chmise.Text)
            comptedeal.Text = Val(comptedeal.Text) - Val(chmise.Text)
            chmise.Text = "0"
            chresult.Text = ""
            chcarte.Text = ""
        End If
        If chresult.Text > 21 Or resultdeal.Text < 21 Then
            MsgBox("Perdu", MsgBoxStyle.Critical)
            chcompte.Text = chcompte.Text - chmise.Text
            comptedeal.Text = Val(comptedeal.Text) + Val(chmise.Text)
            chmise.Text = "0"
            chresult.Text = ""
            chcarte.Text = ""
        End If
    End Sub

    Sub compteur1()
        Randomize()
        chcarte.Text = Int(Rnd(1) * 14)
        chcarte.Text = fct_chiffre(chcarte.Text)
    End Sub
    Sub compteur2()
        Randomize()
        cartedeal.Text = Int(Rnd(1) * 14)
        cartedeal.Text = fct_chiffre(cartedeal.Text)
    End Sub

    Private Sub bt_1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bt_1.Click
        'If chmise.Text = "0" Then
        'MsgBox("La mise !")
        'End If
        Dim wcumul As Integer
        Call compteur1()
        wcumul = Val(chresult.Text)
        wcumul = wcumul + fct_Valeurcarte(chcarte.Text)
        chresult.Text = wcumul
        Call resultat()
    End Sub

    Private Sub bt_stop_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bt_stop.Click
        If chresult.Text < 21 Or resultdeal.Text < 21 Then
            MsgBox("Vous avez gagner ! ")
            chcompte.Text = Val(chcompte.Text) + Val(chmise.Text)
            comptedeal.Text = Val(comptedeal.Text) - Val(chmise.Text)
            chmise.Text = "0"
            chresult.Text = ""
            chcarte.Text = ""
        End If
    End Sub

    Private Sub bt_new_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bt_new.Click
        chmise.Text = "0"
        chresult.Text = ""
        chcarte.Text = ""
        cartedeal.Text = ""
        resultdeal.Text = ""
    End Sub

    Private Sub bt_deal_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bt_deal.Click
        Dim wcum As Integer
        Call compteur2()
        wcum = Val(resultdeal.Text)
        wcum = wcum + fct_Valeurcarte(cartedeal.Text)
        resultdeal.Text = wcum
        Call resultat()
    End Sub
End Class


Ainsi que ma forme utilisé :