Black jack , convertir une lettre en nombre pour addition

Résolu
kijx Messages postés 45 Date d'inscription mercredi 30 décembre 2009 Statut Membre Dernière intervention 2 avril 2014 - 18 janv. 2010 à 14:29
kijx Messages postés 45 Date d'inscription mercredi 30 décembre 2009 Statut Membre Dernière intervention 2 avril 2014 - 19 janv. 2010 à 14:07
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

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
18 janv. 2010 à 15:25
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]
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
18 janv. 2010 à 18:08
"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)
3
hellangel777 Messages postés 267 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 26 novembre 2013 1
18 janv. 2010 à 14:58
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
0
kijx Messages postés 45 Date d'inscription mercredi 30 décembre 2009 Statut Membre Dernière intervention 2 avril 2014
18 janv. 2010 à 15:19
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hellangel777 Messages postés 267 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 26 novembre 2013 1
18 janv. 2010 à 15:25
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
0
kijx Messages postés 45 Date d'inscription mercredi 30 décembre 2009 Statut Membre Dernière intervention 2 avril 2014
18 janv. 2010 à 15:42
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.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
18 janv. 2010 à 17:23
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)
0
kijx Messages postés 45 Date d'inscription mercredi 30 décembre 2009 Statut Membre Dernière intervention 2 avril 2014
18 janv. 2010 à 17:42
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
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
18 janv. 2010 à 18:11
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
0
kijx Messages postés 45 Date d'inscription mercredi 30 décembre 2009 Statut Membre Dernière intervention 2 avril 2014
19 janv. 2010 à 14:07
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é :
0
Rejoignez-nous