Zdravím, dostal jsem za ukol naprogramovat hru pexeso ve Visual basic 2010. Jenomže nemám tušení jak začít ( Jak udělat aby pokaždé byli ovrázky jinde a jak udělat aby program poznal dva shodne) :(
- Jak nejde otevrit? - Spust VB. zadej otevrit projekt, a klikni treba na GRILL.sln
To je projekt pro VB. On ale potřebuje VB.NET.
Jasně že znám :) učím se to 2 roky
Po dvou letech učení bys to měl zfouknout za odpoledne.
2 letech na škole ne celkově
Takže celkově je to ještě déle?
No právě že mín....ale todle ted není důležité duležitější je to pexeso
Míň to jaksi být nemůže. Pokud se něco učíš dva roky ve škole, tak se to celkově musíš učit minimálně dva roky. Nejřív si vytvoř logiku aplikace. Uživatelské rozhraní udělej až později.
no to se snažím
A v čem máš teda konkrétně problém?
To naprogramovat :D
Sadnes si a zacnes rozmyslat alebo si citat referenciu alebo nejaku knihu alebo tutorialy o tom jak sa vykresluje obrazok a jak sa robi reakcia na klavesy alebo mys apod. Az to budes mat nastudovane tak zacnes programovat. Este nejaky problem?
ked mas 6x6 poli tak si karty ocisluj 0-35 a vygenerujes nahodne cislo od 0 do 35 (alebo od 1 po 36) a kartu s tym cislom posadis na prve policko, potom si vygenerujes nahodne cislo z rozsahu 0 do 34 a prechadzas este neusadene karty a pocitas ich a tu dalsiu podla nahodneho cisla usadis, dalsie nahodne cislo bude z rozsahu 0 az 33 atd. Cele je to o 2 vnorenych cykloch P.S: usadenie kariet si ukladas napr. no nejakeho pola s 6x6 prvkami, do ktoreho si zaznamenavas ze ktora karta (ulozis si do pola cislo karty) je na danom policku. Alebo naopak mozes mat 36 kariet (pole s 36 polozkami) a ku kazdej karte si zapises ze kde je umiestnena (a tak potom mozes jednoducho preskakovat karty ktore uz su umiestnene, ptz si len prechadzas to pole ze ci tam je hodnota na ktoru si cele pole inicializoval, napr. -1, co znamena ze karta este neni usadena)
Ahh todle mi moc pomohlo děkuju:) jinak se nesnažím dohnat ukoly je to maturitní projekt mam na to pul roku
Je to presna kopia toho co by si robil ty v skutocnosti keby si mal v ruke 36 kariet a chcel by si ich nahodne rozmiestnit na stol. Robil by si to tiez po jednej karte, prvu by si vybral nahodne z 36tich, a umiestnil na prve policko, druhu nahodne z 35tich a umiestnil na druhe policko atd. Ked chces aby robil program nejaku cinnost tak rozmyslaj ze jak sa to robi v realnom svete, po malych krokoch, a tie kroky napises do programu.
Rozumím:) ted ještě jak udělat aby poznal že jsou stejné
Jak poznáš, že jsou dvě čísla stejná?
Jasně:D už vím
tak snad musis nejak mat neikde priradenie cislo karty -> obrazok, bud napevno (napr. ze karta 1 a 2 ma stejny obrazok, 3 a 4, atd, potom ti staci cislo karty celociselne vydelit dvomi a porovnat), alebo si budes drzat priradenie cislo karty -> obrazok v nejakom poli ktore si na zaciatku inicializujes, a porovnas potom podla toho pola ze ci maju stejny obrazok
no já přemejšlel že kdyby si vybral nějaký obrázek tak byhc mu dal číslo a po kliknutí by se to číslo uložilo do proměné a pokud by byla shodná s druhou tak by byl stejný..
Pole si napln treba samyma -1. Pak vypln pole 2x cisly od 0 do 17 na nahodne pozice (dej pozor abys zapisoval jen na pozice, kde jeste neni karta, tam kde je -1), pri tahu 2x sahnes do pole a porovnas cisla.
Todle mi teda přijde celkem složitý
To je tak na 20 minut prace. Bez UI.
No nevim pro mě je tendle postup moc složitý nebo nechápu jak přesně to myslíš
Tvůj problém bohužel není programování, ale algoritmizace. Chceš-li se opravdu naučit programovat, musíš prvně umět problém algoritmizovat - tj. rozložit na jednoznačný sled relativně jednoduchých operací, které je třeba provést, aby byla úloha správně vyřešena. Algoritmizace úzce souvisí s matematikou, zejména logikou. Pokud nemáš logické myšlení, je skvělým začátkem učení matematiky, protože to Tě přinutí myslet logicky. Naprogramování vytvořeného algoritmu je pak už úkol pro "cvičenou opici" - stačí znát syntaxi jazyka, v kterém to máš naprogramovat.
Abych Tě trochu naťukl, tak algoritmus vygenerování náhodných pozic karet může vypadat třeba takhle: - vytvoř pole od 0 do 35 a do všech prvků ulož -1 - v cyklu pro i 0 do 15: - - vygeneruj první pozici zvoleného čísla i - - je v poli na této pozici -1? - - - pokud ano, ulož do ní zvolené číslo (i) - - - pokud ne, jdi na předchozí krok (vygenerování první pozice) - - vygeneruj druhou pozici zvoleného čísla i - - je v poli na této pozici -1? - - - pokud ano, ulož do ní zvolené číslo (i) - - - pokud ne, jdi na předchozí krok (vygenerování druhé pozice) - konec cyklu
Děkuju moc!! Ale tak to nemusí být -1 v tom poli ne? Takže pokud si cyklem for do poli uložim vždy jiné čísla a kartam(buttonum) přiřadím čísla od 1 do 36 tak se zeřadí tak jak je mám v poli ne? To pak ale ty karty nebudou rozloženy do 6x6
Ta -1 je tam kvůli tomu, abys poznal, jestli už jsi tam vložil nějaké číslo.
Jo to vím ale nemuí tam být -1 muže tam být cokoliv ne?
Cokoliv ne. Cokoliv z hodnot, které se tam normálně nemůžou vyskytnout. Pokud se tam můžou vyskytnout pouze kladná čísla, tak u záporného je jistota, že tam být nemůže.
no jo udělal sem pole ale nemužu jich do pole nadefinovat víc jak 33
Cože nemůžeš?
je tam napsaný že limit je 32
Kde je to napsaný? Buď se nauč vyjadřovat přesně, nebo budeš sebemenší problém řešit pěkně dlouho.
Do pole jsem zadal 33 hodnot podtrhlo mi to tak jsem na to najel kurzorem a ukazalo se mi že pole může max obsahiovat 32 položek pro jistotu jsem si to i vygooglil a je to tak
O bože... Ty nepotřebuješ 32rozměrné pole. Potřebuješ maximálně 2rozměné.
jo tak proč když jsem mu nadefinoval ty "-1" tka jich víc jak 32 nešlo?
Tak znovu:
Ty nepotřebuješ 32rozměrné pole. Potřebuješ maximálně 2rozměné.
Dam ti taku radu. Zacni pekne od zaciatku - zadaj si do google slova zaciname s visual basic NET, alebo nejaky visual basic NET tutorial, urob si pekne najprv hello world, a dalsich X kapitol/cviceni, a az potom co si prejdes vsetky kapitoly/tutorialy co si si nasiel, sa snaz nieco programovat.
P.S. pretoze so sucastnym stavom vedomosti to nedas, ani omylom.
No jo, já je ale prostě nepochopím :/ nebyl by tu někdo tak ochotný ukázat mi kod na to jak do pole nacpat to "-1"
Este si si neprecital ani ten clanok. Bez citania ucenie jaksi moc nefunguje.
Jo přečetl ale prostě nechápu :(
Ta kapitola sa neda cela precitat za 5minut, tak netrep a citaj si. Idealne vsetky kapitoly.
Dim pole(6, 6)
For i As Integer = 0 To 5
For j As Integer = 0 To 5
pole(i, j) = -1
Next
Next
Děkuju! :)
S tímhle přístupem ten program stejně nikdy nedáš. Tohle bys měl znát tak po dvou týdnech, ale ty se to (jak tvrdíš) učíš už dva roky. To je jako bys po dvou letech učení se čtení ještě neuměl všechna písmenka.
No jo každej umí něco jiného programování prostě není moje no :/ A teda když budu chtít náhodně rozmístit karty tak pomocí cyklu for budu generovat čísla a zadávat je do -1 a když tam -1 nebude tak se přesuu do dalšího indexu?
I kdyby nebylo tvoje, tak tohle prostě musí po dvou letech dát každý. Ano, můžeš to dělat třeba takhle.
No jo dva roky školního (2h týdně), to neni moc skoro nic jsme nestihli....Jak vygeneruju první pozici?
Nahodne cislo bude znamenat poradie do ktoreho tu dalsiu kartu vlozis. T.j. musis mat 2 pocitadla - jedno bude pocitat ktoru kartu vkladas, druhe bude pocitat ze kolko uz si nasiel tych -1 v aktualnom prechode, a ked si sa dostal na to nahodne cislo tak ulozis cislo karty ktore vkladas. Potom si vygenerujes nove nahodne cislo, zvysis cislo karty, vynulujes pocitadlo -1, a zacnes prechadzat pole odznova. Neukladas nahodne ciasla do pola, to je ti uplne k hovnu.
Uz som to pisal vyssie, nechapes absolutne nic. Nakresli si na papier policka, vystrihni si karty, a rob to rukami a kukaj ze jake kroky pri tom robis. Alebo prenechaj programovanie niekomu kto je toho schopny a chod radsej ja neviem na prirodopisnu skolu alebo co.
No to bohužel nemůžu jsem ve čtvrtáku a todle je moje maturitní práce jestli to neudělám nepustí mě k maturitě :( a dělám to podle toho - vytvoř pole od 0 do 35 a do všech prvků ulož -1 - v cyklu pro i 0 do 15: - - vygeneruj první pozici zvoleného čísla i - - je v poli na této pozici -1? - - - pokud ano, ulož do ní zvolené číslo (i) - - - pokud ne, jdi na předchozí krok (vygenerování první pozice) - - vygeneruj druhou pozici zvoleného čísla i - - je v poli na této pozici -1? - - - pokud ano, ulož do ní zvolené číslo (i) - - - pokud ne, jdi na předchozí krok (vygenerování druhé pozice) - konec cyklu
Ale tam máš všechno potřebné napsané.
No tak MM psal že je mi to k hovnu...
Tam sa nikde nepise ze mas do pola ukladat nahodne cisla. (rozlisuj trochu slova pozice, a hodnota (cislo karty apod))
Ten algoritmus je ale dost nedokonaly resp. trochu dementny. Jak to robi clovek s IQ>10 som ti pisal uz uplne kdesi hore, aj teraz znova.
Ted sem přemejšlel jestli by šlo udělat tak že byhc si dal 6x6 labelu a jeden button do button bych napsal kod pro nahodně vygenerování čísel do všech labelu a pak podle vygenerovaných čísel zobrazovat karty šlo by to?
Ne to by neslo.
Jojo pravda:/
Vykašli se na uživatelské rozhraní. To je až ta poslední věc, kterou budeš dělat. Nejdříve si naprogramuj logiku aplikace.
No nejlíp byhc to udělal podle: - vytvoř pole od 0 do 35 a do všech prvků ulož -1 - v cyklu pro i 0 do 15: - - vygeneruj první pozici zvoleného čísla i - - je v poli na této pozici -1? - - - pokud ano, ulož do ní zvolené číslo (i) - - - pokud ne, jdi na předchozí krok (vygenerování první pozice) - - vygeneruj druhou pozici zvoleného čísla i - - je v poli na této pozici -1? - - - pokud ano, ulož do ní zvolené číslo (i) - - - pokud ne, jdi na předchozí krok (vygenerování druhé pozice) - konec cyklu
Mozes pouzit aj ten algoritmus co ti pisal vyssie, fungovat bude.
nahodne cislo je index pola, a do pola si davas hodnotu cislo karty.
Dim pole(36)
For cislo_karty = 0 to 15
nahodne_cislo = vygeneruj nahodne cislo od 0 do 35 (pouzi google)
opakuj ak (pole(nahodne_cislo) sa nerovna -1) toto:
nahodne_cislo = vygeneruj nove nahodne cislo od 0 do 35 (pouzi google)
koniec cyklu opakuj
pole(nahodne_cislo) = cislo_karty
nahodne_cislo = vygeneruj nahodne cislo od 0 do 35 (pouzi google)
opakuj ak (pole(nahodne_cislo) sa nerovna -1) toto:
nahodne_cislo = vygeneruj nove nahodne cislo od 0 do 35 (pouzi google)
koniec cyklu opakuj
pole(nahodne_cislo) = cislo_karty
koniec cyklu For
a mas v poli cisla kariet (v dvoch nahodnych polickach je hodnota 0, v inych dvoch nahodnych polickach je 1, atd.)
//oprava: to cislo karty pojde od 0 do 17 (mas 18kariet, 2*18 = 36 poli), ne do 15, sorry
alebo trochu normalnejsie
Dim pole(36)
For cislo_karty = 0 to 17
opakuj
nahodne_cislo = vygeneruj nove nahodne cislo od 0 do 35 (pouzi google)
ked (pole(nahodne_cislo) sa nerovna -1)
pole(nahodne_cislo) = cislo_karty
opakuj
nahodne_cislo = vygeneruj nove nahodne cislo od 0 do 35 (pouzi google)
ked (pole(nahodne_cislo) sa nerovna -1)
pole(nahodne_cislo) = cislo_karty
koniec cyklu For
este som tam zabudol za tym
Dim pole(36)
musis pole najprv inicializovat na tie -1
For i = 0 to 35
pole(i) = -1
konec For
Takhle to zkusim
Pro to nahodne normálně použiju CInt(Int((6 * Rnd()) + 1)) ?
ne. Mas generovat nahodne cislo z rozsahu 0 az 35:
CInt(Int(36 * Rnd()))
no však jen jako příklad sme to myslel sorry. A ještě jak je kod pro se nerovná? ISnot?
For i = 0 To 35 pole2(i) = -1 Next
For cislo_karty = 0 To 17 pole2(nahodne_cislo) = CInt(Int(36 * Rnd())) If pole2(nahodne_cislo) IsNot "-1" Then pole2(nahodne_cislo) = cislo_karty End If
pole2(nahodne_cislo) = CInt(Int(36 * Rnd())) If pole2(nahodne_cislo) IsNot "-1" Then pole2(nahodne_cislo) = cislo_karty End If Next
takhle ?
OMG.
opakovat neni if. To nepoznas ani cykly? Daj si do google visual basic net cykly. A ne nemyslim cyklus for.
nerovna sa je <> a neporovnavas to s textom ale len s cislom.
To vsetko su absolutne zaklady. Zakladnejsie zaklady uz neexistuju.
A nemas tam mat pole2(nahodne_cislo) = CInt(Int(36 * Rnd())) to nevies ani opisat text co som sem napisal tak jak bol po riadkoch? To snad neni pravda.
No tak myslíš while?
Tim pádem ale musim nadefinovat proměnou nahodne cislo nebo to je ten index
Samozrejme ze ked pouzivas nejaku premennu tak ju najprv kdesi nadefinujes cez Dim as integer apod ked to je integer apod.
Dim pole(36)
For i = 0 To 35
pole(i) = -1
Next
For cislo_karty = 0 To 17
Do
nahodne_cislo = CInt(Int(36 * Rnd()))
Loop Until pole(nahodne_cislo) = -1
pole(nahodne_cislo) = cislo_karty
Do
nahodne_cislo = CInt(Int(36 * Rnd()))
Loop Until pole(nahodne_cislo) = -1
pole(nahodne_cislo) = cislo_karty
Next
nevies nic.
Nahodne cislo mam podtržené a nutí mě to ho deklerovat
Tak ho deklaruj, co ti brání?
To pak bude brát jako index?
Jako index ho už přece používáš.
Takže ted stačí už jen podle pole přiřadit karty
A nebude v poli třeba: (36,25,1,36) co když se budou čísla v poli opakovat?
V poli su cisla kariet. Cisla od 0 po 17, kazde cislo je presne v dvoch polickach. Citaj si ten algoritmus este 5x, a nakresli si to pole na papierik a pis si tam ceruzkou kazdy krok co ten algoritmus robi.
Tohle vlákno si poznamenám, to se fakt jen tak nevidí.
To pole pouzijes na to aby si vedel ze jaky obrazok mas vykreslit. Mas na obrazovke plochu 6x6 policok. Takze suradnice policka (nejake x a y) su z rozsahu 0-5, 0-5. Index do pola bude potom (x*6 + y), t.j. pre policko na pozicii x,y zobrazis obrazok:
cislo_obrazku = pole(x*6 + y)
Mas 18 moznych kariet (obrazkov) t.j. cislo obrazku je z rozsahu 0-17
Dobře děkuju ti moc za trpělivost semnou a za čas který jsi stravil pomáháním mi moc si toho cením Zbytek nějak dodělám popř. se poptám učitele
jo jinak pro to vykreslení dám zase for s tím "cislo_obrazku = pole(x*6 + y)"
Najprv predsa vykreslis vsetky obrazky stejne (zadna strana kariet).
Az ked niekto niekam klikne tak si z pozicie mysi prepocitas poziciu karty, tym ziskas tie suradnice karty x,y (v rozsahu 0-5, 0-5) a zobrazis len jeden obrazok cislo_obrazku = pole(x*6 + y) na suradniciach na ktorych ma ten obrazok byt (podla toho kam uziavtel klikol)
Graficky program reaguje na udalosti zvonku, neni tam ziadne for, ale jednotlive funkcie ktore sa spustia po nejakej udalosti (napr. mouse click).
Zacni konecne si hladat googlom priklady a zacni od zakladov, neurobis to dnes, ani zajtra, a este budes muset vela googlit. Mas na to snad pol roka ci kolko.
Objednám si knížku k tomu....Jinak fakt moc díky:)
- Pres BOOLEAN (True/False) nebo IS (Karta_Hovezi IS Karta_Hovezi) jsi zkousel?
no jelikož ještě nemám random postavení karet tak ne ale díky za typ :)
- Potom nahodné losovani muzesz udelat pres RND typu:
- V pripade ze karta bude mit "CISELNOU" hodnotu, co ma na obrazku je jedno.
No ale jak mi tohle pomuže náhodně rozmístit karty?
- Zrejme nahodné zobrazeni do "PictureBox1, PictureBox2, PictureBox3 etc.", nevim jak nebo pres co mas udelane zobrazeni.
Mám 6x6 polí počínaje button1...
- Tady mas hotovy projek PEXESO ve VB. i kdyz bych preferoval, aby jsi ho sparcoval sam rucne
:
http://codes-sources.commentcamarche.net/source/do wnload/37710
Todle mi nejde otevřít :/
- Jak nejde otevrit?
- Spust VB. zadej otevrit projekt, a klikni treba na GRILL.sln
To je projekt pro VB. On ale potřebuje VB.NET.
Jasně že znám :) učím se to 2 roky
Po dvou letech učení bys to měl zfouknout za odpoledne.
2 letech na škole ne celkově
Takže celkově je to ještě déle?
No právě že mín....ale todle ted není důležité duležitější je to pexeso
Míň to jaksi být nemůže. Pokud se něco učíš dva roky ve škole, tak se to celkově musíš učit minimálně dva roky.
Nejřív si vytvoř logiku aplikace. Uživatelské rozhraní udělej až později.
no to se snažím
A v čem máš teda konkrétně problém?
To naprogramovat :D
Sadnes si a zacnes rozmyslat alebo si citat referenciu alebo nejaku knihu alebo tutorialy o tom jak sa vykresluje obrazok a jak sa robi reakcia na klavesy alebo mys apod. Az to budes mat nastudovane tak zacnes programovat.
Este nejaky problem?
ked mas 6x6 poli tak si karty ocisluj 0-35 a vygenerujes nahodne cislo od 0 do 35 (alebo od 1 po 36) a kartu s tym cislom posadis na prve policko, potom si vygenerujes nahodne cislo z rozsahu 0 do 34 a prechadzas este neusadene karty a pocitas ich a tu dalsiu podla nahodneho cisla usadis, dalsie nahodne cislo bude z rozsahu 0 az 33 atd. Cele je to o 2 vnorenych cykloch
P.S: usadenie kariet si ukladas napr. no nejakeho pola s 6x6 prvkami, do ktoreho si zaznamenavas ze ktora karta (ulozis si do pola cislo karty) je na danom policku. Alebo naopak mozes mat 36 kariet (pole s 36 polozkami) a ku kazdej karte si zapises ze kde je umiestnena (a tak potom mozes jednoducho preskakovat karty ktore uz su umiestnene, ptz si len prechadzas to pole ze ci tam je hodnota na ktoru si cele pole inicializoval, napr. -1, co znamena ze karta este neni usadena)
Ahh todle mi moc pomohlo děkuju:) jinak se nesnažím dohnat ukoly je to maturitní projekt mam na to pul roku
Je to presna kopia toho co by si robil ty v skutocnosti keby si mal v ruke 36 kariet a chcel by si ich nahodne rozmiestnit na stol. Robil by si to tiez po jednej karte, prvu by si vybral nahodne z 36tich, a umiestnil na prve policko, druhu nahodne z 35tich a umiestnil na druhe policko atd.
Ked chces aby robil program nejaku cinnost tak rozmyslaj ze jak sa to robi v realnom svete, po malych krokoch, a tie kroky napises do programu.
Rozumím:) ted ještě jak udělat aby poznal že jsou stejné
Jak poznáš, že jsou dvě čísla stejná?
Jasně:D už vím
tak snad musis nejak mat neikde priradenie cislo karty -> obrazok, bud napevno (napr. ze karta 1 a 2 ma stejny obrazok, 3 a 4, atd, potom ti staci cislo karty celociselne vydelit dvomi a porovnat), alebo si budes drzat priradenie cislo karty -> obrazok v nejakom poli ktore si na zaciatku inicializujes, a porovnas potom podla toho pola ze ci maju stejny obrazok
no já přemejšlel že kdyby si vybral nějaký obrázek tak byhc mu dal číslo a po kliknutí by se to číslo uložilo do proměné a pokud by byla shodná s druhou tak by byl stejný..
Pole si napln treba samyma -1. Pak vypln pole 2x cisly od 0 do 17 na nahodne pozice (dej pozor abys zapisoval jen na pozice, kde jeste neni karta, tam kde je -1), pri tahu 2x sahnes do pole a porovnas cisla.
Todle mi teda přijde celkem složitý
To je tak na 20 minut prace. Bez UI.
No nevim pro mě je tendle postup moc složitý nebo nechápu jak přesně to myslíš
Tvůj problém bohužel není programování, ale algoritmizace.
Chceš-li se opravdu naučit programovat, musíš prvně umět problém algoritmizovat - tj. rozložit na jednoznačný sled relativně jednoduchých operací, které je třeba provést, aby byla úloha správně vyřešena. Algoritmizace úzce souvisí s matematikou, zejména logikou. Pokud nemáš logické myšlení, je skvělým začátkem učení matematiky, protože to Tě přinutí myslet logicky.
Naprogramování vytvořeného algoritmu je pak už úkol pro "cvičenou opici" - stačí znát syntaxi jazyka, v kterém to máš naprogramovat.
Abych Tě trochu naťukl, tak algoritmus vygenerování náhodných pozic karet může vypadat třeba takhle:
- vytvoř pole od 0 do 35 a do všech prvků ulož -1
- v cyklu pro i 0 do 15:
- - vygeneruj první pozici zvoleného čísla i
- - je v poli na této pozici -1?
- - - pokud ano, ulož do ní zvolené číslo (i)
- - - pokud ne, jdi na předchozí krok (vygenerování první pozice)
- - vygeneruj druhou pozici zvoleného čísla i
- - je v poli na této pozici -1?
- - - pokud ano, ulož do ní zvolené číslo (i)
- - - pokud ne, jdi na předchozí krok (vygenerování druhé pozice)
- konec cyklu
Děkuju moc!! Ale tak to nemusí být -1 v tom poli ne? Takže pokud si cyklem for do poli uložim vždy jiné čísla a kartam(buttonum) přiřadím čísla od 1 do 36 tak se zeřadí tak jak je mám v poli ne? To pak ale ty karty nebudou rozloženy do 6x6
Ta -1 je tam kvůli tomu, abys poznal, jestli už jsi tam vložil nějaké číslo.
Jo to vím ale nemuí tam být -1 muže tam být cokoliv ne?
Cokoliv ne. Cokoliv z hodnot, které se tam normálně nemůžou vyskytnout. Pokud se tam můžou vyskytnout pouze kladná čísla, tak u záporného je jistota, že tam být nemůže.
no jo udělal sem pole ale nemužu jich do pole nadefinovat víc jak 33
Cože nemůžeš?
je tam napsaný že limit je 32
Kde je to napsaný? Buď se nauč vyjadřovat přesně, nebo budeš sebemenší problém řešit pěkně dlouho.
Do pole jsem zadal 33 hodnot podtrhlo mi to tak jsem na to najel kurzorem a ukazalo se mi že pole může max obsahiovat 32 položek pro jistotu jsem si to i vygooglil a je to tak
To by mě teda zajímalo, co jsi vygooglil.
VB.NET (stejně jako ostatní jazyky .NET) podporuje až 32-rozměrná pole, čili pole adresované až 32 indexy, s větším počtem rozměrů než tři (používaným ve 3D grafice) se ale setkáme málokdy. Více na: http://www.zive.cz/clanky/programujeme-ve-visual-b asic-net---20-dil---deklarace-pole/sc-3-a-121695/d efault.aspx#utm_medium=selfpromo&utm_source=zive&u tm_campaign=copylink
O bože... Ty nepotřebuješ 32rozměrné pole. Potřebuješ maximálně 2rozměné.
jo tak proč když jsem mu nadefinoval ty "-1" tka jich víc jak 32 nešlo?
Tak znovu:
Dam ti taku radu. Zacni pekne od zaciatku - zadaj si do google slova zaciname s visual basic NET, alebo nejaky visual basic NET tutorial, urob si pekne najprv hello world, a dalsich X kapitol/cviceni, a az potom co si prejdes vsetky kapitoly/tutorialy co si si nasiel, sa snaz nieco programovat.
P.S. pretoze so sucastnym stavom vedomosti to nedas, ani omylom.
... pri 20tej kapitole narazis napr. na taketo zaujimave veci
http://www.zive.cz/clanky/programujeme-ve-visual-b asic-net---20-dil---deklarace-pole/sc-3-a-121695/d efault.aspx
Já základy umím ale pole nějak nechápu
pole su zaklady.
No jo, já je ale prostě nepochopím :/ nebyl by tu někdo tak ochotný ukázat mi kod na to jak do pole nacpat to "-1"
Este si si neprecital ani ten clanok. Bez citania ucenie jaksi moc nefunguje.
Jo přečetl ale prostě nechápu :(
Ta kapitola sa neda cela precitat za 5minut, tak netrep a citaj si. Idealne vsetky kapitoly.
Děkuju! :)
S tímhle přístupem ten program stejně nikdy nedáš. Tohle bys měl znát tak po dvou týdnech, ale ty se to (jak tvrdíš) učíš už dva roky. To je jako bys po dvou letech učení se čtení ještě neuměl všechna písmenka.
No jo každej umí něco jiného programování prostě není moje no :/ A teda když budu chtít náhodně rozmístit karty tak pomocí cyklu for budu generovat čísla a zadávat je do -1 a když tam -1 nebude tak se přesuu do dalšího indexu?
I kdyby nebylo tvoje, tak tohle prostě musí po dvou letech dát každý.
Ano, můžeš to dělat třeba takhle.
No jo dva roky školního (2h týdně), to neni moc skoro nic jsme nestihli....Jak vygeneruju první pozici?
Nahodne cislo bude znamenat poradie do ktoreho tu dalsiu kartu vlozis. T.j. musis mat 2 pocitadla - jedno bude pocitat ktoru kartu vkladas, druhe bude pocitat ze kolko uz si nasiel tych -1 v aktualnom prechode, a ked si sa dostal na to nahodne cislo tak ulozis cislo karty ktore vkladas. Potom si vygenerujes nove nahodne cislo, zvysis cislo karty, vynulujes pocitadlo -1, a zacnes prechadzat pole odznova.
Neukladas nahodne ciasla do pola, to je ti uplne k hovnu.
Uz som to pisal vyssie, nechapes absolutne nic. Nakresli si na papier policka, vystrihni si karty, a rob to rukami a kukaj ze jake kroky pri tom robis. Alebo prenechaj programovanie niekomu kto je toho schopny a chod radsej ja neviem na prirodopisnu skolu alebo co.
No to bohužel nemůžu jsem ve čtvrtáku a todle je moje maturitní práce jestli to neudělám nepustí mě k maturitě :( a dělám to podle toho - vytvoř pole od 0 do 35 a do všech prvků ulož -1
- v cyklu pro i 0 do 15:
- - vygeneruj první pozici zvoleného čísla i
- - je v poli na této pozici -1?
- - - pokud ano, ulož do ní zvolené číslo (i)
- - - pokud ne, jdi na předchozí krok (vygenerování první pozice)
- - vygeneruj druhou pozici zvoleného čísla i
- - je v poli na této pozici -1?
- - - pokud ano, ulož do ní zvolené číslo (i)
- - - pokud ne, jdi na předchozí krok (vygenerování druhé pozice)
- konec cyklu
Ale tam máš všechno potřebné napsané.
No tak MM psal že je mi to k hovnu...
Tam sa nikde nepise ze mas do pola ukladat nahodne cisla. (rozlisuj trochu slova pozice, a hodnota (cislo karty apod))
Ten algoritmus je ale dost nedokonaly resp. trochu dementny. Jak to robi clovek s IQ>10 som ti pisal uz uplne kdesi hore, aj teraz znova.
Ted sem přemejšlel jestli by šlo udělat tak že byhc si dal 6x6 labelu a jeden button do button bych napsal kod pro nahodně vygenerování čísel do všech labelu a pak podle vygenerovaných čísel zobrazovat karty šlo by to?
Ne to by neslo.
Jojo pravda:/
Vykašli se na uživatelské rozhraní. To je až ta poslední věc, kterou budeš dělat. Nejdříve si naprogramuj logiku aplikace.
No nejlíp byhc to udělal podle:
- vytvoř pole od 0 do 35 a do všech prvků ulož -1
- v cyklu pro i 0 do 15:
- - vygeneruj první pozici zvoleného čísla i
- - je v poli na této pozici -1?
- - - pokud ano, ulož do ní zvolené číslo (i)
- - - pokud ne, jdi na předchozí krok (vygenerování první pozice)
- - vygeneruj druhou pozici zvoleného čísla i
- - je v poli na této pozici -1?
- - - pokud ano, ulož do ní zvolené číslo (i)
- - - pokud ne, jdi na předchozí krok (vygenerování druhé pozice)
- konec cyklu
Mozes pouzit aj ten algoritmus co ti pisal vyssie, fungovat bude.
nahodne cislo je index pola, a do pola si davas hodnotu cislo karty.
a mas v poli cisla kariet (v dvoch nahodnych polickach je hodnota 0, v inych dvoch nahodnych polickach je 1, atd.)
//oprava: to cislo karty pojde od 0 do 17 (mas 18kariet, 2*18 = 36 poli), ne do 15, sorry
alebo trochu normalnejsie
este som tam zabudol za tym
Dim pole(36)
musis pole najprv inicializovat na tie -1
Takhle to zkusim
Pro to nahodne normálně použiju CInt(Int((6 * Rnd()) + 1)) ?
ne. Mas generovat nahodne cislo z rozsahu 0 az 35:
CInt(Int(36 * Rnd()))
no však jen jako příklad sme to myslel sorry. A ještě jak je kod pro se nerovná? ISnot?
For i = 0 To 35
pole2(i) = -1
Next
For cislo_karty = 0 To 17
pole2(nahodne_cislo) = CInt(Int(36 * Rnd()))
If pole2(nahodne_cislo) IsNot "-1" Then
pole2(nahodne_cislo) = cislo_karty
End If
pole2(nahodne_cislo) = CInt(Int(36 * Rnd()))
If pole2(nahodne_cislo) IsNot "-1" Then
pole2(nahodne_cislo) = cislo_karty
End If
Next
takhle ?
OMG.
opakovat neni if. To nepoznas ani cykly? Daj si do google visual basic net cykly. A ne nemyslim cyklus for.
nerovna sa je <> a neporovnavas to s textom ale len s cislom.
To vsetko su absolutne zaklady. Zakladnejsie zaklady uz neexistuju.
A nemas tam mat
pole2(nahodne_cislo) = CInt(Int(36 * Rnd()))
to nevies ani opisat text co som sem napisal tak jak bol po riadkoch? To snad neni pravda.
No tak myslíš while?
Tim pádem ale musim nadefinovat proměnou nahodne cislo nebo to je ten index
Samozrejme ze ked pouzivas nejaku premennu tak ju najprv kdesi nadefinujes cez Dim as integer apod ked to je integer apod.
nevies nic.
Nahodne cislo mam podtržené a nutí mě to ho deklerovat
Tak ho deklaruj, co ti brání?
To pak bude brát jako index?
Jako index ho už přece používáš.
Takže ted stačí už jen podle pole přiřadit karty
A nebude v poli třeba: (36,25,1,36) co když se budou čísla v poli opakovat?
V poli su cisla kariet. Cisla od 0 po 17, kazde cislo je presne v dvoch polickach. Citaj si ten algoritmus este 5x, a nakresli si to pole na papierik a pis si tam ceruzkou kazdy krok co ten algoritmus robi.
Ty jsi programování neviděl ani z rychlíku, asi jsi ty dva roky chodil za školu, to jinak prostě není možný.
http://www.itnetwork.cz/visual-basic-vb-net-tutori al-pole
Tohle vlákno si poznamenám, to se fakt jen tak nevidí.
To pole pouzijes na to aby si vedel ze jaky obrazok mas vykreslit. Mas na obrazovke plochu 6x6 policok. Takze suradnice policka (nejake x a y) su z rozsahu 0-5, 0-5.
Index do pola bude potom (x*6 + y), t.j. pre policko na pozicii x,y zobrazis obrazok:
cislo_obrazku = pole(x*6 + y)
Mas 18 moznych kariet (obrazkov) t.j. cislo obrazku je z rozsahu 0-17
Dobře děkuju ti moc za trpělivost semnou a za čas který jsi stravil pomáháním mi moc si toho cením
Zbytek nějak dodělám popř. se poptám učitele
jo jinak pro to vykreslení dám zase for s tím "cislo_obrazku = pole(x*6 + y)"
Najprv predsa vykreslis vsetky obrazky stejne (zadna strana kariet).
Az ked niekto niekam klikne tak si z pozicie mysi prepocitas poziciu karty, tym ziskas tie suradnice karty x,y (v rozsahu 0-5, 0-5) a zobrazis len jeden obrazok cislo_obrazku = pole(x*6 + y) na suradniciach na ktorych ma ten obrazok byt (podla toho kam uziavtel klikol)
Graficky program reaguje na udalosti zvonku, neni tam ziadne for, ale jednotlive funkcie ktore sa spustia po nejakej udalosti (napr. mouse click).
Zacni konecne si hladat googlom priklady a zacni od zakladov, neurobis to dnes, ani zajtra, a este budes muset vela googlit. Mas na to snad pol roka ci kolko.
Objednám si knížku k tomu....Jinak fakt moc díky:)