Ristinolla

Tein ristinollan command-painikkeista joita kun klikkaa tulee X ja O. Miten saan että x ja o tulevat vuoronperään command-painikkeiden captioniin?
6814
Äänestä

Muut lukivat myös

Vastaukset 6

Vanhimmat

Vaihtoehtoja varmaan on satoja mutta tässä ekana mieleen tullut.

Private Sub CommandButton1_Click()
vaihda
End Sub

Function vaihda()
If CommandButton1.Caption = "X" Then
CommandButton1.Caption = "O"
Else: CommandButton1.Caption = "X"
End If
End Function

Äänestä

Tee tyhjään formiin ensin command-button ja kopioi sitä sitten riittävä määrä control-arrayksi, niin tämä koodi tekee homman ja saat koulusta kympin.

Dim Xy As Boolean
Private Sub Form_Load()
Xy = False
End Sub

Private Sub Command1_Click(Index As Integer)

Dim Merkki As String
If Trim(Command1(Index).Caption) "" Then
MsgBox "Siinä on jo merkki", vbCritical, "Virhe"
Exit Sub
End If
If Xy = False Then
Merkki = "X"
Else
Merkki = "O"
End If
Command1(Index).Caption = Merkki
Xy = Not Xy

End Sub

Äänestä

Mitenkäs sen saa ilmoittamaan voitosta kun on 3 0 tai x peräkkäin?

Äänestä
  • Siinä pitää vaan vertailla... Ja se tarkoittaa melkoista määrää ehtolauseita....

    Mielestäni yksi hyvä tapa voisi olla tehdä taulukko-muuttuja... Siihen tallennettaisiin kaikkien ruutujen tilanne.

    Ja sitten kun sen taulukon kohdat määrittelee tyyliin Taulu(X,Y), niin homma on periaatteessa yksinkertainen, jokainen koordinaatti käydään vain läpi kaksinkertaisella silmukalla... Vaikka näin:

    Do Until X = xx
    X = 1
    Do Until Y = yy
    Y = 1
    If Taulu(X,Y) = "X" Then
    If Taulu((X - 1), Y) = "X" And Taulu((X 1), Y)
    ....
    End If
    Loop
    Loop

    Tuohon tulee sitten melkoinen määrä eri variaatioita tuosta samasta ehtolauseesta... Tai suurinpiirtein noin minä ainakin lähtisin tuota ongelmaa purkamaan...

    JK. tuli tässä vaan mieleeni, että ehkäpä on helpointa etsiä rivejä keskikohdan mukaan, sillä jokainen ruutu käydään kuitenkin läpi, eikä siksi ole mitään mieltä tehdä suuria määriä ehtolauseita vain siksi että voisi tunnistaa rivin sen eri kohdista...

    Äänestä

  • Ai se olikin ihan alkutekijöissään tämä peli - tämä poikii aina kaikenlaista melenkiintoista.

    Mites jos napin merkinta X:llä tallentaa esimerkikis laskentataulukkoon tai muuttujaan arvon 1 ja O-merkintä tallentaa vastaavasti arvon 0.

    Sitten summataan pelialustan rivit kukin omaan muuttujaan, jonka jälkeen testataan noiden 8 muuttujan arvoa kutakin yksitellen, ja jos summa on...

    Eikös tämä ristinolla ole perinteinen kansanurheilulaji - että kuka lyhimmällä koodilla sen kasaa?

    Äänestä

  • ...kuin heinänteko.

    Laitat vaan ne painallukset merkin mukaisesti taulukkoon kuten noissa aikaisemmissa viesteissä on mainittu.

    Sitten teet pikku proceduurin jossa on laskuri ja joka lukee viimeksi painetusta napista "pääilmansuuntiin" arvoja niin pitkälle kuin ne on samoja kuin viimeinen painallus. Jos laskuri kasvaa kahteen niin hommahan on siinä. Jos ei löydy kuin yksi samanlainen merkki vierestä niin sitten lasketaan vastakkaisten suuntien summa ja päätellään sen perusteella tuliko määrä täyteen.

    Kuten huomaat niin tämä toimii myös ristinollan johdannaisessa jossa pelialue on laajempi ja pitää saada viisi omaa merkkiä peräkkäin.

    Tein tuollaisen joskus vuonna "miekka ja kypärä" omatoimisena ohjelmoinnin harjoituksena ja voin vakuuttaa että hyvin pelitti.

    Äänestä

Kommentoi aloitusta


oyt kirjoitti:

Tein ristinollan command-painikkeista joita kun klikkaa tulee X ja O. Miten saan että x ja o tulevat vuoronperään command-painikkeiden captioniin?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu