Zacinam s Visual Basicem (6.0), jako neco uz umim ale moc toho neni a napadlo mne, udelat takovou jednoduchou hru jako jsou piskvorky. Problem je ale v tom, ze moc nevim jak na to.
- Jak bych mel udelat vlastne ten system zapisovani krizku a kolecek? (Napadlo mne to udelat sachovnici tvorenou z Command? ale nevim, zda je to nejlepsi napad.)
- Jak napsat do zdrojaku, ze az bude pet stejnych symbolu zasebou aby to vyvolalo nejakou akci? (Tu uz si udelam)
Diky moc
Fórum › Visual Basic
Piškvorky
to, jak to má vypadat, je dost o tvořivosti, v tom ti neporadím, na to má každý své osobité pojetí, zkoužej a potom to můžeš upravit.
J? jsem pi?kvorky kdysi programoval ve VB6... na v?sledek se m??e? pod?vat na mojich str?nk?ch.
Nemysl?m si, ?e to bylo nejl?p vy?e?en?, ale fungovalo to dob?e.
Pracovn? plochu jsem m?l rozd?lenou na ?tvere?ky (ImageBoxy) a ka?d? ?tvere?ek m?l sv?j index.
Do jeho TAGu se ukl?dalo, zda je pol??ko voln?, jestli je na n?m k???ek nebo kole?ko.
Za?al jsem takto:
Nejd??v jsem ud?lal program, ve kter?m hraje? s?m proti sob? a po??ta? pak rozhodne jestli n?kdo vyhr?l a kdo vyhr?l.
To je ud?lan? hlavn? anal?zou posledn?ho tahu.
Proto?e ImageBoxy byly o??slov?ny, tak se podle jejich ??sel dalo zjistit, kter? pol??ko je vlevo, kter? vpravo...
P?es funkci jsem zji??oval posloupnost tah? v 8 sm?rech.
Pak jsem program vylep??l do sou?asn? podoby:
Po??ta? m?l kontroln? pol??ko, kter?m zkou?el, kam m??e t?hnout. Do funkce, kter? kontrolovala posloupnost tah? jsem p?idal parametr pro d?lku ?et?zce. Program zkou?el ka?d? mo?n? tah a podle ?et?zc?, kter? mu vzniknou porovn?val jejich kvalitu. Nejv?t?? prioritu m?ly tahy, kter?mi dopln?? na 5 znak?, pak byla nekryt? ?tverka, pak 2 z jed? strany kryt? ?tverky.....
Na m?m webu bohu?el nen? zdrojov? k?d, proto?e jsem si s t?m dal opravdu hodn? pr?ce a pat?? to mezi nejslo?it?j?? v?ci, kter? jsem kdy naprogramoval.
T?eba takhle:
M?l bys cmd (Command Buttonu) pod n?m 4 lbl (Labely) kter? bys m?l nastaven? jako Visible = False. Jeden by byl lbl s k???kem, druh? s kole?kem a t?et? pro z?pis hodnoty kv?lli testov?n? podm?nkou. v Podm?nce bys potom testoval v?echna pole jestli netvo?? ?adu.
Vyvo??? ke ka?d?mu cmd, 4x lbl . Z?pis do cmd by mohl vypadat n?jak takhle:
cmdButton1_click()
cmdButton1.Visible = False
cmdButton2.Visible = False
lblKrizek1.Visible = True
lblKolecko1.Visible = False (nebylo by potreba ps?t kdy? je defaultn? nastaveno jako false)
lblHodnota1.Caption = 1 (lbl pro podm?nku kter? testuje zdali bylo na tomto poli ta?eno)
If lblHodnota1.Caption = 1 And lblHodnota2.Caption = 1 And lblHodnota3.Caption = 1 And lblHodnota4.Caption = 1
And lblhodnota5.Caption = 1 Or lblHodnota1.Caption = 1 And lblHodnota8.Caption = 1 And lblHodnota15.Caption = 1
And lblHodnota22.Caption And lblHodnota29.Caption = 1 Or lblHodnota.........
Then
MsgBox "Vyhr?l Hr?? ?.1", vBInforamtion + vBOKOnly
Tu samou podn?mku by jsi potom napsal pro tahy druh?ho hr??e akor?t by jsi na to ud?lal zvl??tn? lbl.
cmdButton2_click()
cmdButton1.Visible = False
cmdButton2.Visible = False
lblKrizek1.Visible = False
lblKolecko1.Visible = True
lblHod1.Caption = 1 (lbl pro z?pis hodnoty pokud bylo na tomto poli ta?eno pro druh?ho hr??e)
If.... (stejn? podm?nka jako naho?e)
pro pole 7x7:
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
T?mhle stylem vytvo?it p??slu?n? po?et pol?. Pokud by jsi hr?l s?m se sebou dal bys na ten cmdButton jes? jeden a t?m, ?e by jsi v?dycky p?epnul vrstvu cmdButtonu, by jsi jako nech?val hr?t jin?ho hr??e.
Hor?? je pohom vytvo?it algorytmus pro z?pis programu, respektive pro tahy po??ta?e. A zajistit aby nehr?l "stupidn?".
Vz?hledem k tomu ?e by jsi musel ps?t podm?nku pro v?echny mo?n? kombinace a musel bys zajistit, ?e kdy? t?hle po??ta? ukl?d?n? hodnot a zneviditel?ov?n? p??slu?n?ch cmd a zviditeln?n? lbl s kole?kem ?i k???kem, bude to pom?rn? n?ro?n? pr?ce, p?eji ti hodn? zdaru a ur?it? se v?sledkem sv?ho sna?en? pochlub ;)
Jak se liší Windows a Tamagoči? Windows chcípnou, i když se o ně staráte.
Viete ako spoznáte závislosť na internete? Keď narazíte autom do zvodidiel, a prvé čo hľadáte je back.
tom*p píše:#
# J? jsem pi?kvorky kdysi programoval ve VB6... na v?sledek se m??e? pod?vat na mojich str?nk?ch.#
#Nemysl?m si, ?e to bylo nejl?p vy?e?en?, ale fungovalo to dob?e.#
##
#Pracovn? plochu jsem m?l rozd?lenou na ?tvere?ky (ImageBoxy) a ka?d? ?tvere?ek m?l sv?j index.#
#Do jeho TAGu se ukl?dalo, zda je pol??ko voln?, jestli je na n?m k???ek nebo kole?ko.#
##
#Za?al jsem takto:#
#Nejd??v jsem ud?lal program, ve kter?m hraje? s?m proti sob? a po??ta? pak rozhodne jestli n?kdo vyhr?l a kdo vyhr?l.#
#To je ud?lan? hlavn? anal?zou posledn?ho tahu.#
##
#Proto?e ImageBoxy byly o??slov?ny, tak se podle jejich ??sel dalo zjistit, kter? pol??ko je vlevo, kter? vpravo...#
#P?es funkci jsem zji??oval posloupnost tah? v 8 sm?rech.#
##
#Pak jsem program vylep??l do sou?asn? podoby:#
#Po??ta? m?l kontroln? pol??ko, kter?m zkou?el, kam m??e t?hnout. Do funkce, kter? kontrolovala posloupnost tah? jsem p?idal parametr pro d?lku ?et?zce. Program zkou?el ka?d? mo?n? tah a podle ?et?zc?, kter? mu vzniknou porovn?val jejich kvalitu. Nejv?t?? prioritu m?ly tahy, kter?mi dopln?? na 5 znak?, pak byla nekryt? ?tverka, pak 2 z jed? strany kryt? ?tverky.....#
##
##
#Na m?m webu bohu?el nen? zdrojov? k?d, proto?e jsem si s t?m dal opravdu hodn? pr?ce a pat?? to mezi nejslo?it?j?? v?ci, kter? jsem kdy naprogramoval.
No jestli mysl?? tenhle http://programy.wz.cz/prog_soubory/piskvorky_pp12.zip Tak ten se mi n?jak nechce spustit
Nap??e:
Run-Time Error "79"
Path not found: X:.......... (v?pis sesty do adres??e kde to m?m ulo?en
Jak se liší Windows a Tamagoči? Windows chcípnou, i když se o ně staráte.
Viete ako spoznáte závislosť na internete? Keď narazíte autom do zvodidiel, a prvé čo hľadáte je back.
J? jsem u t?ch sv?ch imagebox? m?nil pouze vlastnost picture, kam jsem vkl?dal obr?zky k???k? a kole?ek, kter? jsem m?l ve 3 dal??ch imageboxech, kter? nebyly vid?t. Pokud jsi je?t? za??te?n?k, tak ti nedoporu?uju programovat AI po??ta?e a ud?lat hru rad?ji pro dva hr??e.
Diky moc !
Mne napadlo, jako nejdriv udelat hru 1 vs 1, coz by zase nemuselo byt tak slozity a postupem casu dodelat AI. Jenom tedka premyslim nad tim, jak velky to pole udelat. Kdyz ho udelam moc maly, tak pak muze nastat problem, ze uz nebude kam hrat. Pokud ho ale udelam naopak moc velke, bude s tim zase vic prace. Jako nejlepsi reseni mi zatim pripada 15x15, to jsi pouzil vlastne i ty v tech svych. No, kouknu na to co jsi tady napsal a neco zkusim udelat. Az to bude (pokud nekdy :) ) tak to sem postnu. Dik
Nejsem si ještš jistej jestli by fungovala ta složená podmínka nebo jestli bys každou kombinaci musel psát do zvláštního Ifu.. To by bylo potřeba vyzkoušet
Jak se liší Windows a Tamagoči? Windows chcípnou, i když se o ně staráte.
Viete ako spoznáte závislosť na internete? Keď narazíte autom do zvodidiel, a prvé čo hľadáte je back.
Pokud jsem to spravne pochopil, tak bych do te podminky musel napsat UPLNE VSECHNY moznosti toho, mit 5 stejnych obrazku zasebou, coz je celkem nadlouho :(
Udelal bych to nejak takhle:
Private Sub Form_load()
Image3.Visible = False ?nastaveni kolecka aby nebylo videt
Image4.Visible = False ?nastaveni krizku aby nebylo videt
Label1.Visible = False ?nastaveni lblu1, pro imagebox1 aby nebyl videt
Label2.Visible = False ?nastaveni lblu2, pro imagebox2 aby nebyl videt
..... ?atd.
Label50.Visible = False ?nastaveni lblu50, ktery urcuje kdo byl posledni na tahu a tim padem, jestli dalsi tah ma byt kolecko ci krizek
Label50.Caption = "ko" ?prvni na tahu je kolecko
End Sub
Private Sub Image1_click()
If Label50.Caption = "ko" Then
Image1.Picture = Image3.Picture ?kdyz klikne na na pole 1, tak se zmeni na kolecko
Label1.Caption = "ko" ?ko = kolecko ; hodnota lblu1, pro imagebox1 se zmeni na "ko"
Label50.Caption = "kr" ?dalsi na rade bude krizek
End If
End Sub
Private Sub Image2_click()
If Label50.Caption = "kr" Then
Image2.Picture = Image4.Picture ?kdyz klikne na na pole 2, tak se zmeni na krizek
Label2.Caption = "kr" ?kr = krizek ; hodnota lblu2, pro imagebox2 se zmeni na "kr"
Label50.Caption = "ko" ?dalsi na rade bude kolecko
End If
End Sub
A potom uz zbyva jen aby pocitac sam poznal, ze nekdo vyhral:
Private Sub Form_Load()
If Label3.Caption = "kr" And Label4.Caption = "kr" And Label5.Caption = "kr" And Label6.Caption = "kr" And Label7.Caption = "kr"
Or ......... ?a ted uz sem vypisovat jen vsechny moznosti
Then
MsgBox "Vyhrali krizky", vBInforamtion + OKOnly
End If
End Sub
Myslite ze by to takhle mohlo fungovat?
No, proč se ptáš?!? To rovnou zkus ;)
No takhle do té podmínky i tady musíš vypsat všechny možnosti. Jednou pro hodnotu "kr" jednou pro hodnotu "ko".
Jestli to chápu tak vkládáš obrázek do prázdného Image pole. Je to jednodušší máš pravdu.
Jen by to mělo být ještě:
Private Sub Image1_click()
If Label50.Caption = "ko" Then
Image1.Picture = Image3.Picture
Label1.Caption = "ko"
Label50.Caption = "kr"
End If
If Label50.Caption = "kr" Then
Image1.Picture = Image3.Picture
Label1.Caption = 1
Label50.Caption = "ko"
End If
End Sub
No ale nějak sem nepochopil tohle
Private Sub Form_Load()
If Label3.Caption = "kr" And Label4.Caption = "kr" And
Label5.Caption = "kr" And Label6.Caption = "kr" And Label7.Caption = "kr"
Or ......... a ted uz sem vypisovat jen vsechny moznost Then
MsgBox "Vyhrali krizky", vBInforamtion + OKOnlyEnd IfEnd Sub
Nemůžeš to tam mít 2x jedině, že bys to napsal pod jedinný Form_Load(), to ti ale nebude fungovat protože tu podmínku ti to bude testovat pouze na začátku při nahrání aplikace. Ty ale potřebuješ, aby ti to podmínku testovalo po každém kliknutí.
Ještě by nebylo na škodu po každém kliknutí zajistit aby se na něj nedalo kliknout znova. Tím by se totiž znova přepsal obrázek. To by právě řešil label nebo bottom, který by ležel nad tím Image a který by ho zakrýval. Neklikal bys na obrázek ale na label.Vypadalo by to potom nějak takhle:
Private Sub Label1_clicck()
If Label50.Caption = "ko" Then
Image1.Visible = True
Image1.Picture = Image3.Picture
Label1.Caption = "ko"
Label1.Visible = False 'Jinak by byl stále zobrazen'
Label50.Caption = "kr"
End If
If Label50.Caption = "kr" Then
Image1.Visible = True
Image1.Picture = Image3.Picture
Label1.Caption = 1
Label1.Visible = False
Label50.Caption = "ko"
End If
End Sub
If Label3.Caption = "kr" And Label4.Caption = "kr" And Label5.Caption = "kr" And
Label6.Caption = "kr" And Label7.Caption = "kr" Or ......... Then
MsgBox "Vyhrali krizky", vBInforamtion + OKOnlyEnd If
Tz. Tokud by Label 50 obsahoval danou hodnout (v tomto případě výraz ko nebo kr) potom by se zviditelnilo pole Image1 do kterého by jsi nahrál Image3 a zároveň by se zneviditelnil nad ním Label1 s hodnotou, kterou testuješ potom v podmínce.
Jak se liší Windows a Tamagoči? Windows chcípnou, i když se o ně staráte.
Viete ako spoznáte závislosť na internete? Keď narazíte autom do zvodidiel, a prvé čo hľadáte je back.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Piskvorky v Pythonu — založil Pepa Rohlik
Piskvorky v dev-c++ — založil kamil
Java-piškvorky — založil Tpartl46
Moderátoři diskuze