Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Kontrollera sju stycken kort…

Postades av 2005-06-27 14:29:26 - Morgan Emgardsson, i forum visual basic - allmänt, Tråden har 41 Kommentarer och lästs av 1470 personer

Jag håller på med ett litet program som slumpar sju stycken kort. Varje kort har en egen kontrollsiffra. Samt en bokstav före som kännetecknar kortets typ i form av Hjärter, Ruter, spader och klöver.

Jag viste inte hur jag skulle få dem sorterade i rätt ordning men så kom jag på iden att sortera dem i en ”listbox” och därefter sätta dom åter igen i en (Array). Och fick på så vis dem ordnade i följd.

Problemet är nu hur man skall räkna ut alla dessa olika händer man kan få. Det bästa vore ju att börja med att försöka kontrollera om man har färg på fem kort.

Jag har sju stycken Label’er med följande kort: A00, A03, B15, A06, A10, D48, A11

A00 = Hjärter Ess
A03 = Hjärter Fyra
A06 = Hjärter Sju
A10 = Hjärter Nio
A12 = Hjärter Kung
B15 = Ruter Tre
D48 = Klöver Tio

Jag har försökt att skriva följande kod:

If Player(0,1,2,3,4) = A00 > A12 Then
lblHand.Caption = ”Färg i Hjärter”
ElseIf Player(1,2,3,4,5) = A00 > A12 Then
lblHand.Caption = ”Färg i Hjärter”
Player(2,3,4,5,6) = A00 > A12 Then
lblHand.Caption = ”Färg i Hjärter”
end if

Jag tror att detta är nära en lösning. För man måste ju vara optimist =). Men om det finns någon som håller inne med lite hämlig information angående lösning på detta problem så vore jag tacksam för lite hjälp.

Det som oroar mig mest är nog hur man sedan skall kunna räkna ut om man har en stege.

Tack på Förhand // Morgan


Svara

Sv: Kontrollera sju stycken kort…

Postades av 2005-06-27 15:11:14 - Niklas Jansson

Jag skulle gjort så här istället (pseudo):

int antalkort[13]=0;

for(i=1; i<7; i++);
antalkort[dittkort[i]]++;


//Fyrtal?
if(antalkort[i]=4)
fyrtal=true;

//Triss?
if(antalkort[i]=3)
triss=true;

//par?
if(antalkort[i]=3)
par=true;

(Du får också räkna antalet av varje ovan för att få reda på om du har kåk eller tvåpar)

low=min(antalkort);
high=max(antalkort);
if(high-low)=5
stege=true;

int farg[4];

for(i=2; i<7; i++)
farg[dinfarg[i]]++;
if max(farg)>=5
farg=true;


Svara

Sv:Kontrollera sju stycken kort…

Postades av 2005-06-27 18:26:05 - Morgan Emgardsson

Jag förstod att någon skulle komma med något sådant. men jag har ingen lust att göra om hela programmet. Jag ar mina 52 kort. Där A00 - A12 Är hjärter, B13 - B25 är Ruter, C26 - C38 är Spader och D39 - D51 är klöver. Det måste finnas något enklare sätt att gemföra dessa Färdiga koder. Att dela upp t.ex. så att A00, A01, A02 osv... Står under samlingsnamnet A och om 5 av de sju korten visar tal i A gruppen så har man färg....

Jag vet inte om det är det ända settet som angivits ovan. Så ber jag om en lite mer utförlig förklaring om hur jag skall göra för att sätta dessa värden på korten osv.

Tack för tipset // Morgan

Ps. Korten ligger i en PictuteClip Control och inte en och en. Ds.


Svara

Sv: Kontrollera sju stycken kort…

Postades av 2005-06-27 23:04:18 - Niklas Jansson

Ser inte att du skulle behöva göra om hela programmet, det är ren pseudokod. Principen är bara att räkna förekomsten av varje kort, respektive förekomsten av varje färg. Jag förstår inte riktigt hur dina "koder" ser ut eller fungerar, men metoden jag har angivet är nog den vedertaget bästa och enklaste att förstå.


Svara

Sv: Kontrollera sju stycken kort…

Postades av 2005-06-28 08:40:54 - Peter Holm

Det finns ett enkelt sätt att kolla om man har stege. Det är att använda en liten matematisk formel.

Om summan av kortens "värde" = ((högsta+minsta)*antalet kort)/2 så är det en stege.

Anta att du har korten 4,5,6,7,8 i olika färger då blir detta så här med matteformeln. pseodo-kod


a=4+5+6+7+8 (a=30)
b=((8+4)*5)/2 (b=30)

Alltås stege eftersom a=b

kanske ett tips bara! så slipper man massa IF-Satser


[Peter.H]




Svara

Sv:Kontrollera sju stycken kort…

Postades av 2005-06-28 08:51:57 - Niklas Jansson

En massa ifsatser?

Med min kod ovan så är i princip den enda ifsatsen något i stil med:

if stege and färg then

elseif fyrtal then

elseif triss and par then

elseif färg then

elseif stege then

elseif triss then

elseif tvåpar then

elseif par then

end if


Svara

Sv: Kontrollera sju stycken kort…

Postades av 2005-06-28 13:37:20 - Sven Åke Persson

När jag läser denna intressanta tråd slår det mig att det kanske går att
komma till en smart lösning om man betraktar korten hexadecimalt.
A00, A03, B15, A06, A10, D48, A11 .

A00 - A12 B00 - B12 C00 - C12 D00 - D12 .
Jag vet inte i skrivande stund hur,men jag klurar på problemmet.

Någon som vill ta upp ideen ?


Svara

Sv:Kontrollera sju stycken kort…

Postades av 2005-06-28 16:27:30 - Sven Åke Persson

Då skulle man få 4 spännvidder att trolla med
A00 - A12 B00 - B12 C00 - C12 D00 - D12 .

2560-2578
2816-2834
3072-3090
3328-3346


Svara

Sv:Kontrollera sju stycken kort…

Postades av 2005-06-28 17:31:28 - Johan Svensson

Peter,

Så om man har 4,4,6,8,8 så har man stege? Summan är ju fortfarande 30...

// Johan


Svara

Sv: Kontrollera sju stycken kort…

Postades av 2005-06-28 17:34:52 - Morgan Emgardsson

Jag är själv inne på att göra något liknande.

A00 - A12 B00 - B12 C00 - C12 D00 - D12 .

Men frågan är ju om man kan skilja bort Bokstaven i värdena och bara kontrollera siffran.
Då blir det lätt att både kolla efter stege färg och färgstege. Problemet är väl hur man skall kunna plocka fram 2 par t.ex. Men jag jobbar ständigt med detta problem och är tacksam för all hjälp jag kan få.

// Morgan


Svara

Sv: Kontrollera sju stycken kort…

Postades av 2005-06-28 22:10:23 - Peter Holm

Det stämmer Johan, tydligen har man stege då :-p

haha! well well, det var ett felaktigt antagande av mig att man kunde kolla detta på det viset...


Svara

Sv:Kontrollera sju stycken kort…

Postades av 2005-06-28 22:25:14 - Sven Åke Persson

<b>Men frågan är ju om man kan skilja bort Bokstaven i värdena och bara kontrollera siffran.</b>

Ja det går bra med hexadecimala systemet

Tex HjärterDam skulle då heta A11 som i hex betyder 2577 A12 = 2578 osv.


Svara

Sv: Kontrollera sju stycken kort…

Postades av 2005-06-28 23:27:45 - Morgan Emgardsson

Det jag skulle vilja ha lite hjälp med nu är hur jag lyckas omvandla talen: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51
Så att det ser ut som följande:

A00, A01, A02, A03 osv. > A12
B00, B01, B02, B03 osv. > B12
C00, C01, C02, C03 osv. > C12
D00, D01, D02, D03 osv. > D12

Detta eftersom jag behöver talen 0 – 51 för att hämta ut mina kort ut PictureClip Controllen.
Och när jag sedan lägger kortets kontrollnummer i dess kontroll Label så skall det vara det andra systemet.

Anledningen till detta är att jag inte lyckats Slumpats med att försöka slumpa fram 01 utan att alla ental i Array’n blir Enkel: (1) och inte 01, 02,03, 04 som jag vill ja det. Då ahde det hela varit en annan historia.

// Morgan


Svara

Sv:Kontrollera sju stycken kort…

Postades av 2005-06-28 23:44:45 - Håkan Borneland

Hej!

Varför måste det vara 01 och inte 1?

//Håkan


Svara

Sv: Kontrollera sju stycken kort…

Postades av 2005-06-29 00:13:56 - Sven Åke Persson

Ok får se om detta hjälper dig.
I Form_Load laddar du in dina A01 - D13 i CardArray(51)
Nu kan du översätta alla dina kort som ex. B09 (Spader 9) för den ligger i facket CardArray(21)
som också förhoppningsvis korresponderar med PickClip(21)
Slumpar du fram 21 skall det bli Clip 21 och B09 som ligger i CardArry(21)

Tycker du skall kalla dom för A01 A02 ..... A13 så korresponderar dom mot kortets valör
Jag har gjort det här genom att göra i + 1
<code>
Option Explicit
Dim CardArray(51) As String
Private Sub Form_Load()
Dim i As Long
For i = 0 To 8
CardArray(i) = "A0" & CStr(i + 1)
CardArray(i + 13) = "B0" & CStr(i + 1)
CardArray(i + 26) = "C0" & CStr(i + 1)
CardArray(i + 39) = "D0" & CStr(i + 1)
Next 'i
For i = 9 To 12
CardArray(i) = "A" & CStr(i + 1)
CardArray(i + 13) = "B" & CStr(i + 1)
CardArray(i + 26) = "C" & CStr(i + 1)
CardArray(i + 39) = "D" & CStr(i + 1)
Next 'i
'Här testrader om du vill kolla hur det blir
For i = 0 To 51
List1.AddItem CStr(i) & " = " & CardArray(i)
Next ' i
End Sub
</code>


Svara

Sv:Kontrollera sju stycken kort…

Postades av 2005-06-29 09:01:30 - Sven Åke Persson

Varför inte ta steget fullt ut och kalla korten för deras riktiga namn
Ditt A00 blir då Hj01 D12 blir Kl13
<code>
Option Explicit
Dim CardArray(51) As String
Private Sub Form_Load()
Dim i As Long
For i = 0 To 8
CardArray(i) = "Hj0" & CStr(i + 1)
CardArray(i + 13) = "Sp0" & CStr(i + 1)
CardArray(i + 26) = "Ru0" & CStr(i + 1)
CardArray(i + 39) = "Kl0" & CStr(i + 1)
Next 'i
For i = 9 To 12
CardArray(i) = "Hj" & CStr(i + 1)
CardArray(i + 13) = "Sp" & CStr(i + 1)
CardArray(i + 26) = "Ru" & CStr(i + 1)
CardArray(i + 39) = "Kl" & CStr(i + 1)
Next 'i
'Här testrader om du vill kolla hur det blir
For i = 0 To 51
List1.AddItem CStr(i) & " = " & CardArray(i)
Next ' i
End Sub
</code>


Svara

Sv: Kontrollera sju stycken kort…

Postades av 2005-06-30 07:12:30 - Morgan Emgardsson

Hejsan!

Såg inlägget och blev väldigt nyfiken. Frågan är nu bara hur jag skall få det att fungera med den kod som jag laggt dit. Den kod som slumpar fram korten för att sedan sätta en bild på motsvarande kort i en "image"

Private Sub cmdPlay_Click()

Dim i As Long
For i = 0 To 8
CardArray(i) = "Hj0" & CStr(i + 1)
CardArray(i + 13) = "Sp0" & CStr(i + 1)
CardArray(i + 26) = "Ru0" & CStr(i + 1)
CardArray(i + 39) = "Kl0" & CStr(i + 1)
Next 'i
For i = 9 To 12
CardArray(i) = "Hj" & CStr(i + 1)
CardArray(i + 13) = "Sp" & CStr(i + 1)
CardArray(i + 26) = "Ru" & CStr(i + 1)
CardArray(i + 39) = "Kl" & CStr(i + 1)
Next 'i
'Här testrader om du vill kolla hur det blir
For i = 0 To 51
lstCardCheck.AddItem CStr(i) & " = " & CardArray(i)
Next ' i


Const AntalValbara As Integer = 52
Const AntalVal As Integer = 7

Dim Vald() As Boolean
Dim SlumpArr(7) As Integer
ReDim Vald(AntalValbara)
Dim Slump As Integer
Dim a As Integer

For a = 1 To AntalVal
Do
Slump = Int(Rnd() * AntalValbara)
Loop Until Not Vald(Slump)
Vald(Slump) = True
SlumpArr(a) = Slump

Randomize
Next

imgPlay0101.Picture = PiCl1.GraphicCell(SlumpArr(1))
imgPlay0102.Picture = PiCl1.GraphicCell(SlumpArr(2))
imgFlop01.Picture = PiCl1.GraphicCell(SlumpArr(3))
imgFlop02.Picture = PiCl1.GraphicCell(SlumpArr(4))
imgFlop03.Picture = PiCl1.GraphicCell(SlumpArr(5))
imgTurn.Picture = PiCl1.GraphicCell(SlumpArr(6))
imgRiver.Picture = PiCl1.GraphicCell(SlumpArr(7))

End Sub

Som koden är nu så fungerar hämtandet av korten på det gamla sättet. Det vore kanske bra om korten man får upp hamnar i en listbox för att där bli sorterade då blir det änkelt att avgöra handen också. Tror jag =)...

Jag vore tacksam om du även har något tankesätt runt det där med att räkna ut de olika händerna.

// Morgan


Svara

Sv:Kontrollera sju stycken kort…

Postades av 2005-06-30 09:17:09 - Niklas Jansson

Inte för att på något sätt klanka ner på nuvarande lösning, men jag tycker att du angriper problemet på fel sätt.

Det första du bör göra är inte en massa bilder och döpa dem till saker, utan snarare något i stil med:

1. Välj hur korten skall representeras i datorn. Jag skulle föreslå en egen typ (Färg + Valör), men du kan också ha strängar som du har nu, eller bara heltal. Båda sistnämnda ger onödiga beräkningar.
2. Dela upp dessa kort på olika ställen (högar, händer, etc.). Gör en funktion som kan beräkna vad det bästa man kan få på sju kort är.
3. Sen börjar du koppla detta till filnamn, presentation, osv. Det är först då du har någon aning om hur du bör hantera den biten. Tänk inte på listboxar och pictureboxar förrän i det här läget. Du kan även konvertera till din första lite skumma notation.

Kort förslag på hur din korttyp och omvandlingen av den till en sträng kan se ut:
<code>
Public Type Card
Color As Long
Value As Long
End Type

Public Function CardToString(C as Card) As String
Select Case C.Color
Case 1: CardToString="Hj"
Case 2: CardToString="Kl"
Case 3: CardToString="Ru"
Case 4: CardToString="Sp"
End Select
CardToString = CardToString & CStr(C.Value)
End Function
</code>


Svara

Sv: Kontrollera sju stycken kort…

Postades av 2005-06-30 10:02:25 - Sven Åke Persson

Ok Niklas nu har han börjat så här så låt oss se vart det bär hän.

Om jag skall engagera mig så vill jag börja enl detta koncept,för att fortsätta i ditt spår.
<code>
Option Explicit
Dim CardArray(51) As String
Dim Vald() As Boolean
Const AntalVal = 7
Private Sub Form_Load()
Dim i As Long
Randomize
For i = 0 To 8
CardArray(i) = "Hjä" & Chr(9) & "0" & CStr(i + 1)
CardArray(i + 13) = "Spa" & Chr(9) & "0" & CStr(i + 1)
CardArray(i + 26) = "Rut" & Chr(9) & "0" & CStr(i + 1)
CardArray(i + 39) = "Klö" & Chr(9) & "0" & CStr(i + 1)
Next 'i
For i = 9 To 12
CardArray(i) = "Hjä" & Chr(9) & CStr(i + 1)
CardArray(i + 13) = "Spa" & Chr(9) & CStr(i + 1)
CardArray(i + 26) = "Rut" & Chr(9) & CStr(i + 1)
CardArray(i + 39) = "Klö" & Chr(9) & CStr(i + 1)
Next 'i
'Här testrader om du vill kolla hur det blir
'For i = 0 To 51
' lstCardCheck.AddItem CStr(i) & " = " & CardArray(i)
'Next ' i
End Sub
Private Sub cmdPlay_Click()
Dim SlumpArr(7) As Long
Dim slump As Long, i As Long
ReDim Vald(51)
lstCardCheck.Clear
Do Until i >= AntalVal
slump = Int(Rnd * 52)
If Vald(slump) = False Then
SlumpArr(i + 1) = slump
Vald(slump) = True
i = i + 1
End If
Loop
For i = 0 To 51
If Vald(i) Then lstCardCheck.AddItem CardArray(i)
Next 'i
'imgPlay0101.Picture = PiCl1.GraphicCell(SlumpArr(1))
'imgPlay0102.Picture = PiCl1.GraphicCell(SlumpArr(2))
'imgFlop01.Picture = PiCl1.GraphicCell(SlumpArr(3))
'imgFlop02.Picture = PiCl1.GraphicCell(SlumpArr(4))
'imgFlop03.Picture = PiCl1.GraphicCell(SlumpArr(5))
'imgTurn.Picture = PiCl1.GraphicCell(SlumpArr(6))
'imgRiver.Picture = PiCl1.GraphicCell(SlumpArr(7))
'End Sub
End Sub
</code>


Svara

Sv:Kontrollera sju stycken kort…

Postades av 2005-06-30 10:06:32 - Sven Åke Persson

Förresten hur är ordningen på färgerna. ?
Jag anser att det är Hjä Spa Rut Klö ! ?


Svara

Sv: Kontrollera sju stycken kort…

Postades av 2005-06-30 10:11:20 - Morgan Emgardsson

Nu är det på detta viset att jag tror på det här system och det passar mig bra =). Problemet är bara hur jag skall få 4 tvåor eller 3 sjuor att visas efter varandra i en sorterad listbox.

00
01 - Två
01 - Två
01 - Två
01 - Två
12
13

När detta sedan är gjort är det bara att söka igenom listboxen efter olika händer. Därför vore jag tacksam om någon kunde ge mig lösningen på detta.

// Morgan


Svara

Sv:Kontrollera sju stycken kort…

Postades av 2005-06-30 10:21:12 - Morgan Emgardsson

Tack så mycket för hjälpen. Då fungerade det presic sim jag hade tänkt mig. Nu skall jag sätta mig ner och försöka få ordning på allt. Jag kan säga att det blev ca 100 rader mindre kod nu än det var från början =). Men man lär sig väl någon gång...
Inlägget får väl stå öppet tills jag är färdig med uträknandet av händer. utifall det dyker upp problem =).

// Morgan


Svara

Sv:Kontrollera sju stycken kort…

Postades av 2005-06-30 10:25:26 - Sven Åke Persson

Har du provkört mitt exempel ! ?
Det är nu en baggis att vända på sorteringen enl mitt koncept
så att det blir ex.
02 Hjä
02 Spa
02 Klö
08 Rut
08 Spa
osv.


Svara

Sv: Kontrollera sju stycken kort…

Postades av 2005-06-30 10:38:59 - Sven Åke Persson

Ändra Form_Load koden enl nedan.
lstCardCheck.Sorted = True
<code>
Private Sub Form_Load()
Dim i As Long
Randomize
For i = 0 To 8
CardArray(i) = "0" & CStr(i + 1) & Chr(9) & "Hjä"
CardArray(i + 13) = "0" & CStr(i + 1) & Chr(9) & "Spa"
CardArray(i + 26) = "0" & CStr(i + 1) & Chr(9) & "Rut"
CardArray(i + 39) = "0" & CStr(i + 1) & Chr(9) & "Klö"
Next 'i
For i = 9 To 12
CardArray(i) = CStr(i + 1) & Chr(9) & "Hjä"
CardArray(i + 13) = CStr(i + 1) & Chr(9) & "Spa"
CardArray(i + 26) = CStr(i + 1) & Chr(9) & "Rut"
CardArray(i + 39) = CStr(i + 1) & Chr(9) & "Klö"
Next 'i
End Sub
</code>


Svara

Sv: Kontrollera sju stycken kort…

Postades av 2005-06-30 15:47:43 - Johan Svensson

<b>Förresten hur är ordningen på färgerna. ? Jag anser att det är Hjä Spa Rut Klö ! ?</b>

Det beror helt på vad det är för kortspel vi talar om. Eftersom det antyds poker i tråden här så finns det i poker INGEN rangordning av färgerna. Det finns en svensk kortbok från femtiotalet (eller om det var setxtiotalet) som är framtagen från en amerikansk förlaga där man missförstått orginalet och föreslagit den färgordning som SvenPon anger. Detta är dock som sagt fel av den författaren.

Däremot kan man i vissa pokerformer ha någon form av lottning i vissa sammanhang, t.ex. lottning av bordsplacering, och då har färgerna betydelse. Dock så är då ordningen inte den som anges ovan utan det som anses vara värt mest (och i fallande ordning) är spader, hjärter, ruter, klöver.

Men som sagt i själva spelet så har färgerna ingen betydelse för rangordningen, varför t.ex. färgstege i hjärter är värt lika mycke som en färgstege i klöver. På samma sätt så är par i knektar sama oavsett vilka knektar jag har respektive min motspelare har.


// Johan


Svara

Sv:Kontrollera sju stycken kort…

Postades av 2005-06-30 18:11:56 - Sven Åke Persson

Tack Johan för ditt svar. Men för helv.... det finns en <Enter> knapp.
Avstava så det blir aptiligt att läsa !!!

Detta gäller även Niklas.
Tänk på oss synsvaga.
När raderna försvinner ut till höger så skiter Jag i att läsa.

Märkligt att Ni inte förstår att budskapet skall vara väl formaterat med ny rad mm.


Svara

Sv: Kontrollera sju stycken kort…

Postades av 2005-06-30 21:43:42 - Morgan Emgardsson

Varför kan jag inte skriva:

If Player01(0 - 4) <= "A12" Then
lblYouHave.Caption = "Flush"
End If

Måste Jag sitta och skriva på detta viset för att det skall fungera:

If Player01(0) <= "A12" And Player01(1) <= "A12" And Player01(2) <= "A12" _
And Player01(3) <= "A12" And Player01(4) <= "A12" Then
lblYouHave.Caption = "Flush"
End If

När jag gör det sistnämnda så fungerar det bra. Men när jag sedAn skall göra det samma
på B nivån så tar den också med A eftersom A är lägre än B. Försökte då med:

If Player01(0) <= "A13" And Player01(1) <= "A13" And Player01(2) <= "A13" _
And Player01(3) <= "A13" And Player01(4) <= "A13" Then
lblYouHave.Caption = "Flush"

ElseIf Player01(0) >= "B00" <= "B13" And Player01(1) >= "B00" <= "B13" And Player01(2) >= "B00" <= "B13" _
And Player01(3) >= "B00" <= "B13" And Player01(4) >= "B00" <= "B13" Then
lblYouHave.Caption = "Flush"

ElseIf Player01(1) >= "B00" <= "B13" And Player01(2) >= "B00" <= "B13" And Player01(3) >= "B00" <= "B13" _
And Player01(4) >= "B00" <= "B13" And Player01(5) >= "B00" <= "B13" Then
lblYouHave.Caption = "Flush"

ElseIf Player01(2) >= "B00" <= "B13" And Player01(3) >= "B00" <= "B13" And Player01(4) >= "B00" <= "B13" _
And Player01(5) >= "B00" <= "B13" And Player01(6) >= "B00" <= "B13" Then
lblYouHave.Caption = "Flush"

End If

Om du undrar så har jag laggt tillbaka Numren i listboxen i en ny Array "Plauer01()" Det som inte fungerar är då:

>= "B00" <= "B13" som den inte förstår.

// Morgan


Svara

Sv: Kontrollera sju stycken kort…

Postades av 2005-07-01 05:57:48 - Johan Svensson

<b>Men för helv.... det finns en <Enter> knapp. Avstava så det blir aptiligt att läsa !!!</b>

:-)

Där satte du fingret på min svagaste punkt...

Jag är tyvärr i vissa kretsar ökänd för att skriva så stora textmassor
att det blir svårt att ta till sig. Jag jobbar ständigt på att bli bättre
på det området.

Tack för din feedback!

// Johan


Svara

Sv:Kontrollera sju stycken kort…

Postades av 2005-07-01 07:56:07 - Morgan Emgardsson

Efter många försök att försöka fixa detta ser det ut som om jag kommer ge upp.
Att det skulle vara ett sådant jäkla jobba att kunna plocka ut händer i ett kortspel.
Jag Tänker inte ge upp riktigt än. Men funderar på om det inte skulle vara enklare
om man la upp korten i var sin listbox.

lstHjärter
01
03

lstRuter
03

lstSpader
01
03

lstKlöver
09
12


Men jag vet inte om det skulle bli lättare. Om det finns någon vänlig själ som har
någon teori om hur detta skall gå till på enklast möjliga vis så vore jag tacksam
för hjälpen. Sen skall vi ju veta att först skall den kolla 2 kort sedan 5 kort sedan
6 kort och tillsist 7 kort...

// Morgan


Svara

Sv: Kontrollera sju stycken kort…

Postades av 2005-07-01 08:40:08 - Niklas Jansson

Och nu när du börjar inse att det här inte är ett vettigt tilvägagångssätt, kanske du är intresserad av att lyssna på mitt förslag istället? =)


Börja med representationen av dina kort. Dina bilder osv. kan du behålla. En "Type" är ett lämpligt alternativ. En klass hade på många sätt kunnat vara bättre, men det är lite jobbigare. En type använder du precis som en String eller Long, men du separerar olika delar av den med punkt.

<code>
Public Type Card
Color As Long
Value As Long
End Type

'Används så här:
Dim MyCard As Card

MyCard.Color = 3
MyCard.Value = 11
</code>

Okej?

Det första du ska göra i programmet är att generera alla 52 korten. Vi kan ha en global variabel för kortleken:

<code>
Public Deck(1 to 52) As Card

Public Sub Init()
Dim Color As Long, Value As Long
For Color=0 To 3
For Value=1 to 13
With Deck(Value+Color*13)
.Value=Value
.Color=Color
End With
Next Value
Next Color
End Sub
</code>

Efter detta skapar du funktioner för att till exempel omvandla ett Card till en sträng, skriva ut en array med Card, osv. Sen skapar du en funktion som givet en godtyckligt stor hand räknar ut den bästa handen med fem kort. Sen borde du komma igång i rätt riktning.

Sven: Jag vet inte hur många gånger vi har diskuterat detta. Problemet ligger inte hos oss som inte bryter raderna, problemet ligger i hur pelle har gjort sidan. Tryck på CTRL + "+" ett par gånger så ökar storleken. Dels blir raderna kortare, dels blir texten större. Då kan ni som har svårt att läsa mycket enklare. <b>Enter är för styckesbrytning!</b> (Åtminstone i löpande text som är tänkt att läsas. I kompilerad text såsom LaTeX så spelar de ingen roll)


Svara

Sv:Kontrollera sju stycken kort…

Postades av 2005-07-01 09:29:10 - Morgan Emgardsson

Hejsan Nicklas...

Eftersom jag nu har suttit med detta i snart en vecka och inte lyckats något vidare. Vore jag överlycklig om du då kunde ge mig ett stycke kod som när man klickar på knappen ”cmdDelaKort”. Slumpar kort och skriver ut deras beteckningar i sju olika textbox (txtKort01 till txtKort07). Samt när man har Fyrtal skriver ut det i en Label ”lblDinHand”.
Då kan man även lägga koden i en ”timer” och se hur många gånger man får fyrtal. Inträffar ju inte så ofta och då blir det jobbigt att klicka på knappen =).

Tack på förhand

// Morgan


Svara

Sv: Kontrollera sju stycken kort…

Postades av 2005-07-01 09:53:25 - Niklas Jansson

<b>>Nicklas</b> stavas visserligen Niklas...

<b>>...du då kunde ge mig ett stycke kod som när man...</b>
Jag kommer inte "ge dig ett stycke kod". Programmerandet får du sköta själv. Däremot har jag gett dig en bra start, och jag svarar gärna på frågor.

Hur som helst tänker du fortfarande på helt fel sätt. Tänk inte på att du vill ha textboxar och att de ska heta si och så. Eftersom det besvärliga i det här fallet är representationen av kort och beräkningen av händer, så är där du får börja. Jag har redan gett dig representationen i ren kod, och du har fått en hyfsad start på beräkningen av kort, som du bara måste omvandla till faktisk kod.

Är problemet att räkna ut antalet sätt att få fyrtal på given är problemet enklare. Det är ren matematik.


Svara

Sv:Kontrollera sju stycken kort…

Postades av 2005-07-01 10:35:55 - Morgan Emgardsson

"Ger dig en bra start". Jag har en bra start. Frågan är bara hur den skall användas för att jag skall få det resultat jag vill ha...

Eftersom jag inte ser något annat sätt än att ge upp allt för denna gång så får det väl bli så. Att detta skulle vara så svårt hade jag ingen aning om. Jag lyckades i all fall få korten slumpade och dess värden placerade i en listbox.

Får väl vara bra med Kort Spel på ett tag då. Tack för att ni tog er tid att försöka komma på en lösning på problemet. Närmast kom jag nog tack vare Sven.

// Morgan

PS.
Du säger att det handlar om mattematiska uträkningar. Nämen ojdå… Jag blir alldeles häpen.
DS.


Svara

Sv: Kontrollera sju stycken kort…

Postades av 2005-07-01 11:03:23 - Niklas Jansson

<b>>"Get dig en bra start". Jag har en bra start. Frågan är bara hur den skall användas för att jag skall få det resultat jag vill ha...</b>
Nej, det är det som är grejen. Du hade ingen bra start. Du utgick från vad dina kort skulle heta, inte från problemställningen och representationen. Är du en nybörjare så förstår jag verkligen att det inte är lätt att hitta rätt väg direkt, och därför tyckte jag det var bättre att gå den logiska vägen.

<b>>Eftersom jag inte ser något annat sätt än att ge upp allt för denna gång så får det väl bli så.</b>
Det väljer du själv.

<b>>Att detta skulle vara så svårt hade jag ingen aning om.</b>
Det är inte så svårt, du har bara börjat i fel ände. Låt säga att du bygger en bil. Du börjar med navkapslar och cigaretttändare. Sen fixar du en växellåda och en kaross. Till sist frågar du hur man gör en motor, för sen är det klart.

Du måste börja underifrån för att det ska funka bra och vara hyfsat lätt. Du börjar med karossen (representation), det är runt denna allt måste funka. Sen fortsätter du med motorn (funktioner som kollar diverse grejer, slumpar, osv.); utan denna kan du glömma hela grejen. Sen kan du börja koda på resten, lägga ut listboxar, bilder, välja namn, whatever.

<b>>PS.
Du säger att det handlar om mattematiska uträkningar. Nämen ojdå… Jag blir alldeles häpen.
DS. </b>
Öh?
Att kalla beräkningarna som krävs för att avgöra hur man får reda på om en hand har färg för matematiska är lite att ta i. Det jag pratar om är att om du vill veta i hur många procent av fallen du får fyrtal, så är det en lite mer komplicerad matematisk formel du är ute efter, inte ett program.


Svara

Sv: Kontrollera sju stycken kort…

Postades av 2005-07-01 12:58:52 - Johan Svensson

Morgan,

Jag tror du får slipa lite på din attityd. Vad jag kan förstå av tråden så har Niklas varit oerhört hjälpsam och ansträngt sig för att hjälpa dig på rätt väg.

Naturligtvis är det frustrerande när man kör fast, men det gör alla programmerare ibland. Och det är just därför som Pellesoft finns, för att lösa upp knutarna när man kör fast.

Om man trots detta inte kommer vidare så kan det vara en klok idé att lägga ned projektet, åtminstone för en tid. Vem vet det kanske klarnar längre fram.

Oavsett vad man väljer att göra så är det alltid trevligt med lite hyfs i forumet och inga spydiga kommentarer som "nämen ojdå" eller "jag blir häpen". Dock är det ett säkert sätt att göra sig impopulär och att inte få hjälp från någon här i forumet framöver.


Lycka till med ditt projekt när du väljer att ta upp det igen.

// Johan


Svara

Sv:Kontrollera sju stycken kort…

Postades av 2005-07-01 13:41:01 - Sven Åke Persson

Usch världen är full av inkastade handukar.
Jag ger mig aldrig kommer som ren hobby fortsätta där du slutade.
Tar det som en utmaning.
Något tips var jag kan hitta de 52 korten till min PicClip kontroll.

Det finns ju en massa Yatsy(hur fae.. det stavas) kod därute på nätet
borde vara något att kolla på.


Svara

Sv: Kontrollera sju stycken kort…

Postades av 2005-07-01 15:47:37 - Morgan Emgardsson

Hejsan! Både Sven och Niklas.

Givetvis så ger jag inte upp. Jag var lite grinig sist det håller jag med om. Men jag har ett litet problem och det är att sömnen får lida när jag inte kan lösa mina VB problem. Även när man sover programmerar man. Ni förstår säkert =).
Nu skall jag hålla mig borta från detta över helgen så jag blir någorlunda återställt. Men på måndag blir det nya tag igen…

Ha en bra helg

// Morgan

PS.
Förlåt för min spydiga kommentar. Inget illa menat.
DS.


Svara

Sv: Kontrollera sju stycken kort…

Postades av 2005-07-01 23:16:30 - Håkan Borneland

Sven, kika här:
http://www.jfitz.com/cards/

//Håkan


Svara

Sv:Kontrollera sju stycken kort…

Postades av 2005-07-02 11:05:56 - Sven Åke Persson

Kitos pallion


Svara

Sv: Kontrollera sju stycken kort…

Postades av 2005-07-02 13:23:49 - Håkan Borneland

Ole hyvä.

//Håkan


Svara

Sv:Kontrollera sju stycken kort…

Postades av 2005-07-03 02:46:07 - Morgan Emgardsson

Hejsan! Satt och kolade igenom lite böcker hemma i hyllan och fan boken
”Lär dig spelprogrammering med VB”. Där i fanns ett Kortspel som heter
Poker Squares. Problemet är att det bygger bara på att man skall lägga upp
totalt 25 kort på bordet 5 x 5. Sedan räknar programmet ut vilka händer
som finns rad för rad och kolumn för kolumn och anger detta med poäng.
Nu är det så att detta system bygger på att man kontrollerar ett kort med
klasserna clsCard och clsDeck. Som blandar och hanterar kortleken.
Om jag har förstått det hela rätt när jag har läst igenom kapitlet gång på
gång. Så har jag fått den uppfattningen av att korten läggs in i en (hand)
– matris och sedan anropas GetBestHand som sedan analyserar korten.
Nu är det ju så att värdet på korten i klassen clsDeck beräknas 0 – 51 vilka.
Vilket även den slumpgenerator som jag använder mig av:

----------------------------------------------------------

Const AntalValbara As Integer = 52
Const AntalVal As Integer = 7

Dim Vald() As Boolean
Dim SlumpArr(7) As Integer
ReDim Vald(AntalValbara)
Dim Slump As Integer
Dim a As Integer

For a = 1 To AntalVal
Do
Slump = Int(Rnd() * AntalValbara)
Loop Until Not Vald(Slump)
Vald(Slump) = True
SlumpArr(a) = Slump
Next

----------------------------------------------------------

Nedan har jag skrivit in den kod som behandlar de olika händerna. Kan
förekomma saker som inte skall vara med. Bl. vissa konstanter. Nu är
det ju så att denna är gjord för att analysera fem stycken kort. Men det
behöver väl inte vara något problem att ändra till sju kort. Tror jag =).

---------------------------------------------------------

Option Explicit

'==================================================
' Constants.
'==================================================
Const EMPTYCELL = -1
Const NOCARD = -1
Const MINX = 28
Const MAXX = 332
Const MINY = 28
Const MAXY = 450
Const CELLWIDTH = 62
Const CELLHEIGHT = 86
Const COLUMNCOUNT = 5
Const ROWCOUNT = 5
Const DISPENSERX = 369
Const DISPENSERY = 151
Const LINESPACING = 12
Const ROWSCORESX = 441
Const PLAYERSCOREX = 535
Const PLAYERSCOREY = 182
Const CARDBACK = 52
Const MAXHIGHSCORES = 15
Const CELLCOUNT = 25
Const COLSCORESX = 553
Const SCOREOFFSETY = 281
Const TOTALSCOREX = 430
Const TOTALSCOREY = 365

Public Enum PokerHandsEnum
NoHand
Pair
TwoPair
ThreeOfAKind
Straight
Flush
FullHouse
FourOfAKind
StraightFlush
End Enum

Public Enum PlayerEnum
FirstPlayer
SecondPlayer
End Enum

'==================================================
' General Game Variables.
'==================================================
Dim Player As Integer
Dim CardCount As Integer
Dim Grid(24) As Integer
Dim PlayerScores(2)
Dim Deck As clsDeck
Dim NumPlayers As Integer

Sub SortCards(cards() As Integer, hand() As Integer)
Dim i As Integer
For i = 0 To 13
cards(i) = 0
Next i
cards(13) = 1
For i = 0 To 4
If hand(i) <> NOCARD Then
Dim val As Integer
val = hand(i) Mod 13
cards(val) = cards(val) + 1
End If
Next i
End Sub

Function GetBestHand(hand() As Integer) As Integer
Dim FlushFlag As Boolean
Dim StraightFlag As Boolean
Dim PairFlag As Boolean
Dim TwoPairFlag As Boolean
Dim ThreeOfAKindFlag As Boolean
Dim FourOfAKindFlag As Boolean
Dim cards(13) As Integer

FlushFlag = CheckForFlush(hand)
SortCards cards, hand
StraightFlag = CheckForStraight(cards, hand)
PairFlag = CheckForPair(cards)
TwoPairFlag = CheckForTwoPair(cards)
ThreeOfAKindFlag = CheckForThreeOfAKind(cards)
FourOfAKindFlag = CheckForFourOfAKind(cards)

If (StraightFlag) And (FlushFlag) Then
GetBestHand = StraightFlush
ElseIf FourOfAKindFlag Then
GetBestHand = FourOfAKind
ElseIf (PairFlag) And (ThreeOfAKindFlag) Then
GetBestHand = FullHouse
ElseIf FlushFlag Then
GetBestHand = Flush
ElseIf StraightFlag Then
GetBestHand = Straight
ElseIf ThreeOfAKindFlag Then
GetBestHand = ThreeOfAKind
ElseIf TwoPairFlag Then
GetBestHand = TwoPair
ElseIf PairFlag Then
GetBestHand = Pair
Else
GetBestHand = NoHand
End If
End Function

Function CheckForTwoPair(cards() As Integer)
Dim i As Integer
Dim PairFlag As Boolean
CheckForTwoPair = False
PairFlag = False
For i = Ace To King
If cards(i) = 2 And PairFlag Then
CheckForTwoPair = True
ElseIf cards(i) = 2 Then
PairFlag = True
End If
Next i
End Function

Function CheckForThreeOfAKind(cards() As Integer) As Boolean
Dim i As Integer
CheckForThreeOfAKind = False
For i = Ace To King
If cards(i) = 3 Then CheckForThreeOfAKind = True
Next i
End Function

Function CheckForFourOfAKind(cards() As Integer) As Boolean
Dim i As Integer
CheckForFourOfAKind = False
For i = Ace To King
If cards(i) = 4 Then CheckForFourOfAKind = True
Next i
End Function

Function CheckForPair(cards() As Integer) As Boolean
Dim i As Integer
CheckForPair = False
For i = Ace To King
If cards(i) = 2 Then CheckForPair = True
Next i
End Function

Function CheckForFlush(hand() As Integer) As Boolean
Dim i As Integer
Dim Suit As Integer
Suit = hand(0) \ 13
CheckForFlush = True
For i = 1 To 4
If hand(i) \ 13 <> Suit Or hand(i) = NOCARD Then _
CheckForFlush = False
Next i
End Function

Function CheckForStraight(cards() As Integer, _
hand() As Integer) As Boolean
Dim First As Integer
Dim i As Integer
First = -1
i = Ace
Do
If ((cards(i)) And (i <> Ace Or cards(Two))) Then First = i
i = i + 1
Loop While (First = -1)
If (First > Ten) Then
CheckForStraight = False
Else
CheckForStraight = True
For i = First To First + 4
If (cards(i) = 0) Then CheckForStraight = False
Next i
End If
End Function

---------------------------------------------------------

Om det finns någon med förslag på hur denna kod kan komma till
användning så är jag väldigt tacksam för lite tipps och trix.
Källkoden och befintligt Project följde med boken. Och kan skickas via
E-mail om ni inte förstår vad jag menar med ovanstående =). Eller om ni är
nyfikna på des uppbyggnad.

// Morgan


Svara

Sv: Kontrollera sju stycken kort…

Postades av 2005-07-03 11:25:01 - Sven Åke Persson

Tackar där har Vi lösningen på hur det skall angripas.

En fråga ? Varför slumpar du 7 kort,nån typ av poker som jag inte känner till ?

En annan fråga i sammanhanget "Död mans hand" hur såg den ut ? och hur
går historien kring den handen ?

Jag anser att jag sitter inne med rätt svar.Man hör ofta felaktigheter kring denna fråga.


Svara

Nyligen

  • 17:03 Getmancar your go-to carsharing
  • 14:07 Games
  • 17:54 Vegastars New Zealand
  • 16:56 Verde Casino Danmark
  • 13:54 Vegastars: Top Australian Online C
  • 21:28 Chicken Road Casino Game
  • 21:21 1xBet Promo Code 2025
  • 18:37 Remove the bumper in AUDI

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 994
27 965
271 785
1 468
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies