Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

Kółko i krzyżyk w VBA

#1
Kółko i krzyżyk w VBA
Witam!

Mam problem z kodem, który pozwoli wstawiać raz "X", następnym razem "O". Gra nie jest z komputerem, tylko na dwóch graczy. Kto mi powie jak to zrobić?
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#2
RE: Kółko i krzyżyk w VBA
A1-C3. Zaczyna kółko.
Kod PHP:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As IntegerAs Integer
Dim x 
As IntegerAs Integer

0
0

For 1 To 3
    
For 1 To 3
        
If Cells(ij).Value "X" Then x 1
        
If Cells(ij).Value "O" Then o 1
    Next j
Next i

If <= x Then
    Target
.Value "O"
Else: Target.Value "X"
End If

End Sub 

Jeśli to Excel - to wrzuć plik na jakiś serwer - daj link.
Nie pomagam na PW (ew. odpłatnie). 
I osobom z roszczeniowym podejściem. I osobom niedbającym o poprawność językową.
Jak podawać logi
Jeśli nie odpowiadam w danym wątku przez >3 dni - proszę o przypomnienie na PW z linkiem do wątku w treści.




 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#3
RE: Kółko i krzyżyk w VBA
Dzięki za kod, tylko nie wiem, czy to będzie działać na formularzu, bo muszę zrobić tą gierkę w UserFormie...
Link do tego, co udało mi się do tej pory zrobić:
http://chomikuj.pl/milagros6656/K*c3*b3*...zy*c5*bcyk
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#4
RE: Kółko i krzyżyk w VBA
Trochę namotałeś Oczko .
Podmień ten kod, sprawdź (po dostosowaniu do twojego kodu u mnie dzoiała):

Kod:
Private Sub ButtonGroup_Click()
    'MsgBox ButtonGroup.TabIndex + 1
    
Dim i As Integer, x As Integer, o As Integer
    
    x = 0
    o = 0
    
    For i = 1 To 9
    'Buttons(i).ButtonGroup.Caption = i
    'Next
        If Buttons(i).ButtonGroup.Caption = "X" Then x = x + 1
        If Buttons(i).ButtonGroup.Caption = "O" Then o = o + 1
    Next i
    
    If x <= o Then
        Call zmien(ButtonGroup.TabIndex + 1, "X")
    Else: Call zmien(ButtonGroup.TabIndex + 1, "O")
    End If
    
End Sub
Nie pomagam na PW (ew. odpłatnie). 
I osobom z roszczeniowym podejściem. I osobom niedbającym o poprawność językową.
Jak podawać logi
Jeśli nie odpowiadam w danym wątku przez >3 dni - proszę o przypomnienie na PW z linkiem do wątku w treści.




 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#5
RE: Kółko i krzyżyk w VBA
Fakt, nawet sporo namotałamWesoły
Teraz działaWesoły Dziękuję bardzoWesoły
A podpowiesz mi jeszcze co należy wpisać, aby nie można było kliknąć więcej niż 9 razy?
I jeszcze jak podłączyć te If-y informujące o wygranej?

Nie jestem orłem z tego vba...
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#6
RE: Kółko i krzyżyk w VBA
Kod:
Sub koniecwstawiania()

If UserForm1.CommandButton1.Caption = "O" And UserForm1.CommandButton2.Caption = "O" And UserForm1.CommandButton3.Caption = "O" Then
    MsgBox "Wygrał GRACZ 2"
ElseIf UserForm1.CommandButton4.Caption = "O" And UserForm1.CommandButton5.Caption = "O" And UserForm1.CommandButton6.Caption = "O" Then
    MsgBox "Wygrał GRACZ 2"
ElseIf UserForm1.CommandButton7.Caption = "O" And UserForm1.CommandButton8.Caption = "O" And UserForm1.CommandButton9.Caption = "O" Then
    MsgBox "Wygrał GRACZ 2"
ElseIf UserForm1.CommandButton1.Caption = "O" And UserForm1.CommandButton4.Caption = "O" And UserForm1.CommandButton7.Caption = "O" Then
    MsgBox "Wygrał GRACZ 2"
ElseIf UserForm1.CommandButton2.Caption = "O" And UserForm1.CommandButton5.Caption = "O" And UserForm1.CommandButton8.Caption = "O" Then
    MsgBox "Wygrał GRACZ 2"
ElseIf UserForm1.CommandButton3.Caption = "O" And UserForm1.CommandButton6.Caption = "O" And UserForm1.CommandButton9.Caption = "O" Then
    MsgBox "Wygrał GRACZ 2"
ElseIf UserForm1.CommandButton1.Caption = "O" And UserForm1.CommandButton5.Caption = "O" And UserForm1.CommandButton9.Caption = "O" Then
    MsgBox "Wygrał GRACZ 2"
ElseIf UserForm1.CommandButton3.Caption = "O" And UserForm1.CommandButton5.Caption = "O" And UserForm1.CommandButton7.Caption = "O" Then
    MsgBox "Wygrał GRACZ 2"
ElseIf UserForm1.CommandButton1.Caption = "X" And UserForm1.CommandButton2.Caption = "X" And UserForm1.CommandButton3.Caption = "X" Then
    MsgBox "Wygrał GRACZ 1"
ElseIf UserForm1.CommandButton4.Caption = "X" And UserForm1.CommandButton5.Caption = "X" And UserForm1.CommandButton6.Caption = "X" Then
    MsgBox "Wygrał GRACZ 1"
ElseIf UserForm1.CommandButton7.Caption = "X" And UserForm1.CommandButton8.Caption = "X" And UserForm1.CommandButton9.Caption = "X" Then
    MsgBox "Wygrał GRACZ 1"
ElseIf UserForm1.CommandButton1.Caption = "X" And UserForm1.CommandButton4.Caption = "X" And UserForm1.CommandButton7.Caption = "X" Then
    MsgBox "Wygrał GRACZ 1"
ElseIf UserForm1.CommandButton2.Caption = "X" And UserForm1.CommandButton5.Caption = "X" And UserForm1.CommandButton8.Caption = "X" Then
    MsgBox "Wygrał GRACZ 1"
ElseIf UserForm1.CommandButton3.Caption = "X" And UserForm1.CommandButton6.Caption = "X" And UserForm1.CommandButton9.Caption = "X" Then
    MsgBox "Wygrał GRACZ 1"
ElseIf UserForm1.CommandButton1.Caption = "X" And UserForm1.CommandButton5.Caption = "X" And UserForm1.CommandButton9.Caption = "X" Then
    MsgBox "Wygrał GRACZ 1"
ElseIf UserForm1.CommandButton3.Caption = "X" And UserForm1.CommandButton5.Caption = "X" And UserForm1.CommandButton7.Caption = "X" Then
    MsgBox "Wygrał GRACZ 1"
Else: MsgBox "Remis"
End If

End Sub

Kod:
Private Sub ButtonGroup_Click()
    'MsgBox ButtonGroup.TabIndex + 1
    
Dim i As Integer, x As Integer, o As Integer
    
    x = 0
    o = 0
    
    For i = 1 To 9
    'Buttons(i).ButtonGroup.Caption = i
    'Next
        If Buttons(i).ButtonGroup.Caption = "X" Then x = x + 1
        If Buttons(i).ButtonGroup.Caption = "O" Then o = o + 1
    Next i
    
    If x <= o Then
        Call zmien(ButtonGroup.TabIndex + 1, "X")
    Else: Call zmien(ButtonGroup.TabIndex + 1, "O")
    End If
    
    If x + o = 8 Then  'Tu jest do zmiany  dla remis
        Call koniecwstawiania
        Exit Sub
    End If
    
End Sub

To i tak jest do tyłka, bo należałoby sprawdzać wynik już po 5-tym ruchu - ale w tej chwili już po 1-szym pokazałby się Remis (a ta opcja jest najbardziej sensowna Oczko ).

Wieczorem popatrzę chyba że dasz sobie radę- trzeba wstawić sprawdzanie bez remis po każdym ruchu, warunek na opcję remis sprawdzać dopiero po 9-tym ruchu.
Nie pomagam na PW (ew. odpłatnie). 
I osobom z roszczeniowym podejściem. I osobom niedbającym o poprawność językową.
Jak podawać logi
Jeśli nie odpowiadam w danym wątku przez >3 dni - proszę o przypomnienie na PW z linkiem do wątku w treści.




 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#7
RE: Kółko i krzyżyk w VBA
Dziękuję!

Udało mi się zrobić to sprawdzanie na koniec i z tym remisemJupi

Jeszcze raz dziękujęPrzytul
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
Programy: Polecane / Nowe / Inne




Podobne wątki (Kółko i krzyżyk w VBA)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  [VBA Excel] Wyszukiwanie wartości w kolumnie Pioro 2 15382 22.06.2020, 18:27
Ostatni post: Pioro
  VBA excel dmjs 6 17221 17.04.2019, 10:20
Ostatni post: ptrick
  [VBA] Tworzenie nowego arkusza z danymi z TextBox'a Pioro 4 14880 19.06.2018, 23:24
Ostatni post: broda99

Skocz do: