Avatar billede foxskywalker Nybegynder
07. maj 2003 - 17:51 Der er 15 kommentarer og
2 løsninger

Tilfældig tal fra .txt fil

Jeg har lidt problemer med at få VB til at åbne en fil og vise en tilfældig linie fra filen i en tekst box.

Jeg er ved at lave en Poker spille maskine som projekt på HTX, men jeg fatter ikke en pind af hvad min lære forklare mig, så jeg håber i kan hjælpe mig.

Bonusspørgsmål: hvordan får man programmet til at se vpk fra et af tallene.
Jeg skal have den til at tjekke de forskellige kombinationer, der er: f.eks. Hjerter Knægt = a11 Klør konge = b13 osv. men når programmet skal finde ud af hvad for nogle kombinationer der skal give point skal den kun tænke på tallene ikke på bogstaverne, de er kun med så man kan se forskel på de forskellige kort.

Håber i kan hjælpe mig
Avatar billede mortrr Praktikant
07. maj 2003 - 18:09 #1
I skal vist lige have læreren til at forklare jer hvordan man bruger reference-"manualer". ;-)

Først bonus'en:
Du kan kigge på en den af en streng, med fx
KortTal=mid(Strengen,2,2)
- Hent fra position 2 og 2 frem.

Eller
KortTal=right(Strengen,2)
- De to sidste tegn i strengen.

For at hente en tilfældig linie, er du nødt til at vide hvor mange linier der er. Så reelt skal du læse hele filen ind.
(hvis alle linier er samme længde, kan man dog regne sig frem til det)
Så læs hele filen ind i fx et array, kig på hvor mange linier du har hentet, og vælg en tilfældig.
Hvis det er en meget stor fil, kan det blive nødvendigt at benytte en anden metode.
Avatar billede foxskywalker Nybegynder
07. maj 2003 - 18:40 #2
hjælp lidt her, jeg kan Ikke en pind, andet end det basale, men hver gang jeg prøver at åbne filen:

open "c:\dokuments....\filnavn.txt" for input as #1
Line input #1, Data(x)
Close #1

Så har jeg vel loaded filen ind i programmet???

men hvordan får jeg den så læst ind i et array, og hvordan kigger jeg på den???

Bær over med mig
Avatar billede mikker Nybegynder
07. maj 2003 - 18:49 #3
Med ovenstående kode henter du 1 linie ind

men med

do while not eof(1)
line input #1, Data
loop

Vil du cykle hele filen igennem linie for linie.
Dog kan jeg ikke se hvorfor du vil bruge en fil, men det er nok bare mig :o)

- Mikker
Avatar billede mortrr Praktikant
07. maj 2003 - 18:54 #4
Det kunne blive til:

Dim data()
AntalLinier = 0
Open "c:\dokuments....\filnavn.txt" for input as #1
While Not EOF(1)
  ReDim Preserve data(AntalLinier + 1)
  Line Input #1, data(AntalLinier)
  AntalLinier = AntalLinier + 1
Wend
Close #1
Randomize
RandomLinie = data(Int(AntalLinier * Rnd))
Avatar billede foxskywalker Nybegynder
07. maj 2003 - 18:59 #5
Der er jo 52 kort, så jeg mener det vil kræve rimeligt meget arbejde at skrive det hele ind i kode linien, men du kender nok nogle tricks jeg ikke gør :D

men hvordan gemmer den så de forskellige linier fra filen, og hvordan vælger man en tilfældig derfra og viser den i en tekstboks???

Jeg har ikke ret meget styr på det kan du nok høre :-)
Avatar billede mortrr Praktikant
07. maj 2003 - 19:17 #6
Du behøver jo ikke gemme de 52 kort.
(jeg troede det var til en slags velkomst-hilsen, der skulle være forskellig fra gang til gang).

Når du skal udtrække et kort, skal du tænke på det som én stor bunke, hvor 0-12 er hjerter, 13-25 er spar, 26-38 er ruder og 39-51 klør.
(Jeg trækker en fra, da det så er nemmere at regne med)

Et lille program med én formular og en textbox:
Dim KortFarver(4) As String
Dim KortVaerdier(13) As String

Private Sub Form_Click()

' Et tilfældigt kort:
Kortet = Int(Rnd * 52)
KortVaerdi = (Kortet Mod 13)
KortFarve = Kortet \ 13

Text1.Text = KortFarver(KortFarve) & " " & KortVaerdier(KortVaerdi)

End Sub

Private Sub Form_Load()
KortFarver(0) = "Hjerter"
KortFarver(1) = "Spar"
KortFarver(2) = "Ruder"
KortFarver(3) = "Klør"

KortVaerdier(0) = "ES"
For i = 1 To 8
  KortVaerdier(i) = CStr(i + 1)
Next i
KortVaerdier(10) = "Knægt"
KortVaerdier(11) = "Dame"
KortVaerdier(12) = "Konge"

End Sub
Avatar billede sjh Nybegynder
07. maj 2003 - 19:56 #7
her er en ok kortblander:
http://www.eksperten.dk/spm/220338
Avatar billede foxskywalker Nybegynder
07. maj 2003 - 19:56 #8
Mange Tak mortrr Det virkede :D

Jeg mangler bare lige at finde ud af hvordan man skriver "ikke lig med" der må være et tegn for det. (Lyden af mig der kigger mine kopier igennem) jeg kan bare ikke lige finde den der er sikkert en der ved det :D

Det er det sidste jeg skal have at vide så kan jeg godt finde ud af resten :D
Avatar billede mikker Nybegynder
07. maj 2003 - 20:05 #9
<>

- Mikker
Avatar billede mikker Nybegynder
07. maj 2003 - 20:06 #10
eller

><

Men det gir det samme
Avatar billede mikker Nybegynder
07. maj 2003 - 20:08 #11
mortrr>>

Det ville nok hjælpe med en RANDOMIZE TIMER ellers er der ikke meget random over det. (Det er blevet diskuteret en del her på Eksperten)

- Mikker
Avatar billede foxskywalker Nybegynder
07. maj 2003 - 20:23 #12
Doh havde ikke lige helt ret i jeg kunne finde ud af resten selv :[ hvordan får man deen til at tjekke kun værdien og ikke alt der står i boksen??? (der kommer jo aldrig 2 ens kort) :D

Sådan det burde være dedt hele :)
Avatar billede sjh Nybegynder
07. maj 2003 - 20:26 #13
Avatar billede foxskywalker Nybegynder
07. maj 2003 - 20:55 #14
Nervermind fandt selv ud af det :D
Avatar billede mortrr Praktikant
07. maj 2003 - 21:15 #15
mikker >> Den var lige smuttet. Ved det godt.
Avatar billede mikker Nybegynder
08. maj 2003 - 18:31 #16
Takker for points, håber det bliver godt til sidst :o)

Smid bare din kode her når du er færdig, det ville være rart...

- Mikker
Avatar billede foxskywalker Nybegynder
11. maj 2003 - 17:57 #17
OK men skal lige have min computer op og stå først, den er lige gået i stykker :(
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester