Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Kółko i krzyżyk (Gomok)


Rekomendowane odpowiedzi

Opublikowano

Simeka, postanowiłem, że wrzucę tutaj moją pracę na czerwcowy konkurs AutoIt. Mianowicie Gomok. Polega to na tym, że musicie ułożyć 5 Krzyżyków w rzędzie, kolumnie, lub w skosie. Rozmiar planszy można ustalić w zakresie 5-20

 

Zastrzegam sobie prawa do tego kodu. Proszę go nie kopiować/edytować bez mojej zgody i nie czerpać z niego korzyści dla własnej osoby.

 

 

 

#include <GUIConstantsEx.au3>

#include <WindowsConstants.au3>

#include <EditConstants.au3>

#include <StaticConstants.au3>

#include <ButtonConstants.au3>

#include <misc.au3>

Dim $color_tmp[7] ;kolor jeszcze nie zastosowany

Dim $color[7] ;kolor zastosowany

$color[0] = 0x000000 ;ustawiamy standardowe kolory

$color[1] = 0xFFFFFF

$color[2] = 0xFFFF00

$color[3] = 0x00ff00

$color[4] = 0xff0000

$color[5] = 0xFFFFFF

$color[6] = 0x000000

$color_tmp[0] = 0x000000 ;ustawiamy standardowe kolory tmp

$color_tmp[1] = 0xFFFFFF

$color_tmp[2] = 0xFFFF00

$color_tmp[3] = 0x00ff00

$color_tmp[4] = 0xff0000

$color_tmp[5] = 0xFFFFFF

$color_tmp[6] = 0x000000

Global $label_nazwa_profilu_2, $label_nazwa_profilu, $gui_file_open, $gui_profile_open ;do tworzenia profilu i wczytywania

$czy_otwarty = 0 ;jezeli bedzie 1 to bedzie zapisywal

$nazwa_profilu = "train" ;takie cos

Global $label_w_l ;labele do wygranych, przegranych,remisow dla roznych poz.trud

Global $label_w_s

Global $label_w_t

Global $label_p_l

Global $label_p_s

Global $label_p_t

Global $label_r_l

Global $label_r_s

Global $label_r_t

Global $reset, $param, $end, $gui_gra, $profil, $profil_nazwa ;do okna z gra

Global $kogo_ruch ;wiadomo

Global $kol, $wier ;wielkosc planszy

$wygrane_l = 0 ;wiadomo (dla poziomow trudnosci)

$wygrane_t = 0

$wygrane_s = 0

$przegrane_t = 0

$przegrane_s = 0

$przegrane_l = 0

$remisy_t = 0

$remisy_s = 0

$remisy_l = 0

 

$ruch = "X" ;ktory gracz sie rusza (X bo zawsze x zaczyna)

$naj = 0 ;najwieksza ilosc jednakowych znakow w rzedzie potrzebne do al

$komputer = 0 ;czy jest ruch komputera

Dim $pole_data_od[22][22] ;odczytane dane z buttonow przy odtwarzaniu partii

Dim $zapisx[401] ;kordy x do pliku

Dim $zapisy[401] ;j/w tylko y

Dim $znaczek[401] ;znak ktory jest na tych kordach

Dim $pole[22][22] ;pole gry

Dim $pole_od[22][22] ;pole gry w gui z odczyte zapisanej parti

Dim $pole_data[22][22] ;dane w buttonie w polu gry

Dim $wini_x[401] ;odczytane x z ini

Dim $wini_y[401] ;j/w tylko y

Dim $znak_znak[401] ;odczytane z ini znaki x/o

$roz_x = @DesktopWidth ;zeby bylo troche krocej

$roz_y = @DesktopHeight;j/w

$z = 1 ; numer ruchu ustawiamy na 1

$gui_win = GUICreate("", 350, 100, $roz_x / 2 - 175, 0) ;okno wygranej

$label_w = GUICtrlCreateLabel("Brawo, udało Ci się wygrać! :)", 10, 10, 180, 21)

$reset_w = GUICtrlCreateButton("Jeszcze raz", 10, 40, 100, 20)

$param_w = GUICtrlCreateButton("Ustawienia", 120, 40, 100, 20)

$end_w = GUICtrlCreateButton("Zakończ", 230, 40, 100, 20)

$zapisz_w = GUICtrlCreateButton("Zapisz przebieg rozgrywki", 10, 70, 150, 20)

 

GUISetState(@SW_HIDE, $gui_win)

 

 

$gui_rem = GUICreate("", 350, 100, $roz_x / 2 - 175, 0) ;okno remisu

$label_r = GUICtrlCreateLabel("Zremisowałeś, ale nie było aż tak źle. :)", 10, 10, 330, 21)

$reset_r = GUICtrlCreateButton("Jeszcze raz", 10, 40, 100, 20)

$param_r = GUICtrlCreateButton("Ustawienia", 120, 40, 100, 20)

$end_r = GUICtrlCreateButton("Zakończ", 230, 40, 100, 20)

$zapisz_r = GUICtrlCreateButton("Zapisz przebieg rozgrywki", 10, 70, 150, 20)

GUISetState(@SW_HIDE, $gui_rem)

 

 

$gui_por = GUICreate("", 350, 100, $roz_x / 2 - 175, 0);okno przegranej

$label_p = GUICtrlCreateLabel("Niestety przegrałeś, może uda Ci się wygrać następnym razem. :)", 10, 10, 330, 21)

$reset_p = GUICtrlCreateButton("Jeszcze raz", 10, 40, 100, 20)

$param_p = GUICtrlCreateButton("Ustawienia", 120, 40, 100, 20)

$end_p = GUICtrlCreateButton("Zakończ", 230, 40, 100, 20)

$zapisz_p = GUICtrlCreateButton("Zapisz przebieg rozgrywki", 10, 70, 150, 20)

GUISetState(@SW_HIDE, $gui_por)

 

 

$gui_opcje = GUICreate("Opcje", 120, 350, $roz_x / 2 - 60, $roz_y / 2 - 150, $WS_CAPTION, BitOR($WS_EX_APPWINDOW, $WS_EX_TOOLWINDOW)); gui z opcjami

GUICtrlCreateTab(1, 1, 118, 348)

GUICtrlCreateTabItem("Opcje") ;zakladka z glownymi opcjami

GUICtrlCreateLabel("Rozmiar planszy", 10, 35, 100, 20, $SS_CENTER)

$size = GUICtrlCreateInput("5", 30, 55, 60, 20, $ES_READONLY)

$updown = GUICtrlCreateUpdown($size)

GUICtrlSetLimit($updown, 20, 5)

GUICtrlCreateGroup("Tryb gry", 5, 75, 110, 60)

$r1 = GUICtrlCreateRadio("Gracz vs. CPU", 10, 90)

$r2 = GUICtrlCreateRadio("Gracz vs. Gracz", 10, 110)

GUICtrlCreateGroup("Poziom trudności", 5, 140, 110, 80)

$r3 = GUICtrlCreateRadio("Łatwy", 10, 155)

$r4 = GUICtrlCreateRadio("Średni", 10, 175)

$r5 = GUICtrlCreateRadio("Trudny", 10, 195)

$button_opcje = GUICtrlCreateButton("Graj", 10, 225, 100, 20)

$button_odtworz = GUICtrlCreateButton("Odwtórz rozgrywkę", 10, 250, 100, 20)

$button_exit = GUICtrlCreateButton("Zakończ", 10, 275, 100, 20)

GUICtrlSetState($r1, $gui_checked)

GUICtrlSetState($r4, $gui_checked)

GUICtrlCreateTabItem("Profile") ;zakladka z profilami

$nowy_profil = GUICtrlCreateButton("Nowy profil", 10, 35, 100, 20)

$wczytaj_profil = GUICtrlCreateButton("Wczytaj profil", 10, 60, 100, 20)

$usun_profil = GUICtrlCreateButton("Usuń profil", 10, 85, 100, 20)

$wczytaj_treningowy = GUICtrlCreateButton("Wczytaj profil treningowy", 10, 110, 100, 40, $BS_MULTILINE)

GUICtrlCreateLabel("Aktulny profil:", 10, 155, 100, 15, $SS_CENTER)

$label_nazwa_profilu = GUICtrlCreateLabel("---------------", 10, 175, 100, 15, $SS_CENTER)

$button_exit_2 = GUICtrlCreateButton("Zakończ", 10, 190, 100, 20)

GUICtrlCreateTabItem("Kolory") ;zakladka z kolorami

 

$label0 = GUICtrlCreateLabel("", 105, 35, 11, 20) ;kolorujemy labele wedlog aktualnych (standardowych) kolorw zeby bylo wiadomo jaki jest wybrany

GUICtrlSetBkColor(-1, $color[0])

$label1 = GUICtrlCreateLabel("", 105, 60, 11, 20)

GUICtrlSetBkColor(-1, $color[1])

$label2 = GUICtrlCreateLabel("", 105, 85, 11, 20)

GUICtrlSetBkColor(-1, $color[2])

$label3 = GUICtrlCreateLabel("", 105, 110, 11, 20)

GUICtrlSetBkColor(-1, $color[3])

$label4 = GUICtrlCreateLabel("", 105, 135, 11, 20)

GUICtrlSetBkColor(-1, $color[4])

$label5 = GUICtrlCreateLabel("", 105, 160, 11, 20)

GUICtrlSetBkColor(-1, $color[5])

$label6 = GUICtrlCreateLabel("", 105, 185, 11, 20)

GUICtrlSetBkColor(-1, $color[6])

$color_tlo = GUICtrlCreateButton("Kolor tła", 4, 35, 100, 20) ;pare opcji ;p

$color_pole = GUICtrlCreateButton("Kolor pól", 4, 60, 100, 20)

$color_button = GUICtrlCreateButton("Kolor przycisków", 4, 85, 100, 20)

$color_wyg_x = GUICtrlCreateButton("Kolor gdy wygra X", 4, 110, 100, 20)

$color_wyg_o = GUICtrlCreateButton("Kolor gdy wygra O", 4, 135, 100, 20)

$color_text = GUICtrlCreateButton("Kolor tekstu", 4, 160, 100, 20)

$color_textxo = GUICtrlCreateButton("Kolor X i O", 4, 185, 100, 20)

$zapisz_styl = GUICtrlCreateButton("Zapisz styl", 4, 210, 100, 20)

$wczytaj_styl = GUICtrlCreateButton("Wczytaj styl", 4, 235, 100, 20)

$wczytaj_stand = GUICtrlCreateButton("Wczytaj standardowy styl", 4, 260, 100, 35, $BS_MULTILINE)

$ustaw_styl = GUICtrlCreateButton("Zastosuj", 4, 300, 100, 20)

$button_exit_3 = GUICtrlCreateButton("Zakończ", 4, 325, 100, 20) ;raczej wiadome do czego sluza

If $czy_otwarty = 1 Then

GUICtrlSetData($label_nazwa_profilu_2, $profil_nazwa)

GUICtrlSetData($label_nazwa_profilu, $profil_nazwa)

EndIf

GUISetState(@SW_SHOW)

 

;~ $wygrane_o = 0

;~ $wygrane_x = 0

;~ $remisy = 0

While 1

$nMsg = GUIGetMsg()

Switch $nMsg

Case $ustaw_styl

For $i = 0 To 6

If $color_tmp[$i] <> "" Then ;zastosowywyjemy zmiany - z tymczasowej prznosimy do prawidlowej (jakos tak nie wiem dokladnie)

$color[$i] = $color_tmp[$i]

EndIf

Next

MsgBox(64, "", "Kolory zostały ustawione")

Case $color_tlo;po kolei wybory koloru dla roznych kekcji gui

$color_tmp[0] = _ChooseColor(2, $color[0])

GUICtrlSetBkColor($label0, $color_tmp[0])

Case $color_pole

$color_tmp[1] = _ChooseColor(2, $color[1])

GUICtrlSetBkColor($label1, $color_tmp[1])

Case $color_button

$color_tmp[2] = _ChooseColor(2, $color[2])

GUICtrlSetBkColor($label2, $color_tmp[2])

Case $color_wyg_x

$color_tmp[3] = _ChooseColor(2, $color[3])

GUICtrlSetBkColor($label3, $color_tmp[3])

Case $color_wyg_o

$color_tmp[4] = _ChooseColor(2, $color[4])

GUICtrlSetBkColor($label4, $color_tmp[4])

Case $color_text

$color_tmp[5] = _ChooseColor(2, $color[5])

GUICtrlSetBkColor($label5, $color_tmp[5])

Case $color_textxo

$color_tmp[6] = _ChooseColor(2, $color[6])

GUICtrlSetBkColor($label6, $color_tmp[6])

Case $wczytaj_stand

$color[0] = 0x000000

$color[1] = 0xFFFFFF ;wczytanie standardowych kolorow

$color[2] = 0xFFFF00

$color[3] = 0x00ff00

$color[4] = 0xff0000

$color[5] = 0xFFFFFF

$color[6] = 0x000000

$color_tmp[0] = 0x000000 ;ustawiamy standardowe kolory tmp

$color_tmp[1] = 0xFFFFFF

$color_tmp[2] = 0xFFFF00

$color_tmp[3] = 0x00ff00

$color_tmp[4] = 0xff0000

$color_tmp[5] = 0xFFFFFF

$color_tmp[6] = 0x000000

GUICtrlSetBkColor($label0, $color[0]) ;ustawienie ich do labela

GUICtrlSetBkColor($label1, $color[1])

GUICtrlSetBkColor($label2, $color[2])

GUICtrlSetBkColor($label3, $color[3])

GUICtrlSetBkColor($label4, $color[4])

GUICtrlSetBkColor($label5, $color[5])

GUICtrlSetBkColor($label6, $color[6])

MsgBox(64, "", "Standaradowy styl został wczytany")

Case $zapisz_styl

$file = FileSaveDialog("Zapisz", @ScriptDir, "Gomok styles (*.goms)") ;zapisanie stylu

 

For $i = 0 To 6

IniWrite($file & ".goms", "style", "color" & $i, $color_tmp[$i])

Next

Case $wczytaj_styl

$file = FileOpenDialog("Wczytaj", @ScriptDir, "Gomok styles (*.goms)") ;wczytanie stylu

 

For $i = 0 To 6

$color[$i] = IniRead($file, "style", "color" & $i, $color[$i])

Next

GUICtrlSetBkColor($label0, $color[0]) ;ustawienie go do labeli

GUICtrlSetBkColor($label1, $color[1])

GUICtrlSetBkColor($label2, $color[2])

GUICtrlSetBkColor($label3, $color[3])

GUICtrlSetBkColor($label4, $color[4])

GUICtrlSetBkColor($label5, $color[5])

GUICtrlSetBkColor($label6, $color[6])

MsgBox(64, "", "Styl został wczytany")

Case $wczytaj_treningowy

$nazwa_profilu = "train"

$profil_nazwa = "---------------"

GUICtrlSetData($label_nazwa_profilu, "---------------")

$czy_otwarty = 1

$wygrane_t = 0

$wygrane_s = 0

$przegrane_t = 0

$przegrane_s = 0

$przegrane_l = 0

$remisy_t = 0

$remisy_s = 0

$remisy_l = 0

GUICtrlSetData($label_nazwa_profilu, "---------------")

GUICtrlSetData($label_w_l, "Wygrane: 0")

GUICtrlSetData($label_w_s, "Wygrane: " & $wygrane_s)

GUICtrlSetData($label_w_t, "Wygrane: " & $wygrane_t)

GUICtrlSetData($label_p_l, "Przegrane: " & $przegrane_l)

GUICtrlSetData($label_p_s, "Przegrane: " & $przegrane_s)

GUICtrlSetData($label_p_t, "Przegrane: " & $przegrane_t)

GUICtrlSetData($label_r_l, "Remisy: " & $remisy_l)

GUICtrlSetData($label_r_s, "Remisy: " & $remisy_s)

GUICtrlSetData($label_r_t, "Remisy: " & $remisy_t)

MsgBox(64, "", "Profil treningowy został wczytany")

Case $nowy_profil

GUISetState(@SW_HIDE, $gui_opcje)

profile_create()

Case $wczytaj_profil

GUISetState(@SW_HIDE, $gui_opcje)

profile_open()

Case $usun_profil

GUISetState(@SW_HIDE, $gui_opcje)

profile_delete()

Case $button_exit

Exit

Case $button_exit_2

Exit

Case $button_exit_3

Exit

Case $button_opcje

$kol = GUICtrlRead($size)

$wier = GUICtrlRead($size)

plansza($kol, $wier)

Case $button_odtworz

odczyt()

EndSwitch

WEnd

#cs

Nizej w funkcji param() jest prawie dokladnie to samo zrobilem 2 po za pierwszym razem kilka rzeczy wykonuje sie inaczej badz pozniej sa wykonywane lub odwrotnie

#Ce

param()

;~ GUICtrlCreateTabItem("Łatwy")

;~ $label_w_l = GUICtrlCreateLabel("Wygrane: "& $wygrane_l, 16 + $kol * 40 + 10, 145, 130, 15)

;~ $label_p_l = GUICtrlCreateLabel("Przegrane: "& $przegrane_l, 16 + $kol * 40 + 10, 160, 130, 15)

;~ $label_r_l = GUICtrlCreateLabel("Remisy: "& $remisy_l, 16 + $kol * 40 + 10, 175, 130, 15)

;~ GUICtrlCreateTabItem("Średni")

;~ $label_w_s = GUICtrlCreateLabel("Wygrane: "& $wygrane_s, 16 + $kol * 40 + 10, 145, 130, 15)

;~ $label_p_s = GUICtrlCreateLabel("Przegrane: "& $przegrane_s, 16 + $kol * 40 + 10, 160, 130, 15)

;~ $label_r_s = GUICtrlCreateLabel("Remisy: "& $remisy_s, 16 + $kol * 40 + 10, 175, 130, 15)

;~ GUICtrlCreateTabItem("Trudny")

;~ $label_w_t = GUICtrlCreateLabel("Wygrane: "& $wygrane_t, 16 + $kol * 40 + 10, 145, 130, 15)

;~ $label_p_t = GUICtrlCreateLabel("Przegrane: "& $przegrane_t, 16 + $kol * 40 + 10, 160, 130, 15)

;~ $label_r_t = GUICtrlCreateLabel("Remisy: "& $remisy_t, 16 + $kol * 40 + 10, 175, 130, 15)

;~ GUISetState(@SW_SHOW, $gui_gra)

Func param() ; to samo co powyzej

GUICtrlSetData($label_w_l, "Wygrane: " & $wygrane_l) ;ustawiamy wyniki w gui gry

GUICtrlSetData($label_w_s, "Wygrane: " & $wygrane_s)

GUICtrlSetData($label_w_t, "Wygrane: " & $wygrane_t)

GUICtrlSetData($label_p_l, "Przegrane: " & $przegrane_l)

GUICtrlSetData($label_p_s, "Przegrane: " & $przegrane_s)

GUICtrlSetData($label_p_t, "Przegrane: " & $przegrane_t)

GUICtrlSetData($label_r_l, "Remisy: " & $remisy_l)

GUICtrlSetData($label_r_s, "Remisy: " & $remisy_s)

GUICtrlSetData($label_r_t, "Remisy: " & $remisy_t)

 

 

$z = 1

$gui_opcje = GUICreate("Opcje", 120, 350, $roz_x / 2 - 60, $roz_y / 2 - 150, $WS_CAPTION, BitOR($WS_EX_APPWINDOW, $WS_EX_TOOLWINDOW)); gui z opcjami

GUICtrlCreateTab(1, 1, 118, 348)

GUICtrlCreateTabItem("Opcje")

GUICtrlCreateLabel("Rozmiar planszy", 10, 35, 100, 20, $SS_CENTER)

$size = GUICtrlCreateInput("5", 30, 55, 60, 20, $ES_READONLY)

$updown = GUICtrlCreateUpdown($size)

GUICtrlSetLimit($updown, 20, 5)

GUICtrlCreateGroup("Tryb gry", 5, 75, 110, 60)

$r1 = GUICtrlCreateRadio("Gracz vs. CPU", 10, 90)

$r2 = GUICtrlCreateRadio("Gracz vs. Gracz", 10, 110)

GUICtrlCreateGroup("Poziom trudności", 5, 140, 110, 80)

$r3 = GUICtrlCreateRadio("Łatwy", 10, 155)

$r4 = GUICtrlCreateRadio("Średni", 10, 175)

$r5 = GUICtrlCreateRadio("Trudny", 10, 195)

$button_opcje = GUICtrlCreateButton("Graj", 10, 225, 100, 20)

$button_odtworz = GUICtrlCreateButton("Odwtórz rozgrywkę", 10, 250, 100, 20)

$button_exit = GUICtrlCreateButton("Zakończ", 10, 275, 100, 20)

GUICtrlSetState($r1, $gui_checked)

GUICtrlSetState($r4, $gui_checked)

GUICtrlCreateTabItem("Profile")

$nowy_profil = GUICtrlCreateButton("Nowy profil", 10, 35, 100, 20)

$wczytaj_profil = GUICtrlCreateButton("Wczytaj profil", 10, 60, 100, 20)

$usun_profil = GUICtrlCreateButton("Usuń profil", 10, 85, 100, 20)

$wczytaj_treningowy = GUICtrlCreateButton("Wczytaj profil treningowy", 10, 110, 100, 40, $BS_MULTILINE)

GUICtrlCreateLabel("Aktulny profil:", 10, 155, 100, 15, $SS_CENTER)

$label_nazwa_profilu = GUICtrlCreateLabel("---------------", 10, 175, 100, 15, $SS_CENTER)

$button_exit_2 = GUICtrlCreateButton("Zakończ", 10, 190, 100, 20)

GUICtrlCreateTabItem("Kolory")

 

$label0 = GUICtrlCreateLabel("", 105, 35, 11, 20)

GUICtrlSetBkColor(-1, $color[0])

$label1 = GUICtrlCreateLabel("", 105, 60, 11, 20)

GUICtrlSetBkColor(-1, $color[1])

$label2 = GUICtrlCreateLabel("", 105, 85, 11, 20)

GUICtrlSetBkColor(-1, $color[2])

$label3 = GUICtrlCreateLabel("", 105, 110, 11, 20)

GUICtrlSetBkColor(-1, $color[3])

$label4 = GUICtrlCreateLabel("", 105, 135, 11, 20)

GUICtrlSetBkColor(-1, $color[4])

$label5 = GUICtrlCreateLabel("", 105, 160, 11, 20)

GUICtrlSetBkColor(-1, $color[5])

$label6 = GUICtrlCreateLabel("", 105, 185, 11, 20)

GUICtrlSetBkColor(-1, $color[6])

$color_tlo = GUICtrlCreateButton("Kolor tła", 4, 35, 100, 20)

$color_pole = GUICtrlCreateButton("Kolor pól", 4, 60, 100, 20)

$color_button = GUICtrlCreateButton("Kolor przycisków", 4, 85, 100, 20)

$color_wyg_x = GUICtrlCreateButton("Kolor gdy wygra X", 4, 110, 100, 20)

$color_wyg_o = GUICtrlCreateButton("Kolor gdy wygra O", 4, 135, 100, 20)

$color_text = GUICtrlCreateButton("Kolor tekstu", 4, 160, 100, 20)

$color_textxo = GUICtrlCreateButton("Kolor X i O", 4, 185, 100, 20)

$zapisz_styl = GUICtrlCreateButton("Zapisz styl", 4, 210, 100, 20)

$wczytaj_styl = GUICtrlCreateButton("Wczytaj styl", 4, 235, 100, 20)

$wczytaj_stand = GUICtrlCreateButton("Wczytaj standardowy styl", 4, 260, 100, 35, $BS_MULTILINE)

$ustaw_styl = GUICtrlCreateButton("Zastosuj", 4, 300, 100, 20)

$button_exit_3 = GUICtrlCreateButton("Zakończ", 4, 325, 100, 20)

If $czy_otwarty = 1 Then

GUICtrlSetData($label_nazwa_profilu_2, $profil_nazwa)

GUICtrlSetData($label_nazwa_profilu, $profil_nazwa)

EndIf

GUISetState(@SW_SHOW)

 

;~ $wygrane_o = 0

;~ $wygrane_x = 0

;~ $remisy = 0

While 1

$nMsg = GUIGetMsg()

Switch $nMsg

Case $ustaw_styl

For $i = 0 To 6

If $color_tmp[$i] <> "" Then

$color[$i] = $color_tmp[$i]

EndIf

Next

MsgBox(64, "", "Kolory zostały ustawione")

Case $color_tlo

$color_tmp[0] = _ChooseColor(2, $color[0])

GUICtrlSetBkColor($label0, $color_tmp[0])

Case $color_pole

$color_tmp[1] = _ChooseColor(2, $color[1])

GUICtrlSetBkColor($label1, $color_tmp[1])

Case $color_button

$color_tmp[2] = _ChooseColor(2, $color[2])

GUICtrlSetBkColor($label2, $color_tmp[2])

Case $color_wyg_x

$color_tmp[3] = _ChooseColor(2, $color[3])

GUICtrlSetBkColor($label3, $color_tmp[3])

Case $color_wyg_o

$color_tmp[4] = _ChooseColor(2, $color[4])

GUICtrlSetBkColor($label4, $color_tmp[4])

Case $color_text

$color_tmp[5] = _ChooseColor(2, $color[5])

GUICtrlSetBkColor($label5, $color_tmp[5])

Case $color_textxo

$color_tmp[6] = _ChooseColor(2, $color[6])

GUICtrlSetBkColor($label6, $color_tmp[6])

Case $wczytaj_stand

$color[0] = 0x000000

$color[1] = 0xFFFFFF

$color[2] = 0xFFFF00

$color[3] = 0x00ff00

$color[4] = 0xff0000

$color[5] = 0xFFFFFF

$color[6] = 0x000000

$color_tmp[0] = 0x000000 ;ustawiamy standardowe kolory tmp

$color_tmp[1] = 0xFFFFFF

$color_tmp[2] = 0xFFFF00

$color_tmp[3] = 0x00ff00

$color_tmp[4] = 0xff0000

$color_tmp[5] = 0xFFFFFF

$color_tmp[6] = 0x000000

GUICtrlSetBkColor($label0, $color[0])

GUICtrlSetBkColor($label1, $color[1])

GUICtrlSetBkColor($label2, $color[2])

GUICtrlSetBkColor($label3, $color[3])

GUICtrlSetBkColor($label4, $color[4])

GUICtrlSetBkColor($label5, $color[5])

GUICtrlSetBkColor($label6, $color[6])

MsgBox(64, "", "Standaradowy styl został wczytany")

Case $zapisz_styl

$file = FileSaveDialog("Zapisz", @ScriptDir, "Gomok styles (*.goms)")

 

For $i = 0 To 6

IniWrite($file & ".goms", "style", "color" & $i, $color_tmp[$i])

Next

Case $wczytaj_styl

$file = FileOpenDialog("Wczytaj", @ScriptDir, "Gomok styles (*.goms)")

 

For $i = 0 To 6

$color[$i] = IniRead($file, "style", "color" & $i, $color[$i])

Next

GUICtrlSetBkColor($label0, $color[0])

GUICtrlSetBkColor($label1, $color[1])

GUICtrlSetBkColor($label2, $color[2])

GUICtrlSetBkColor($label3, $color[3])

GUICtrlSetBkColor($label4, $color[4])

GUICtrlSetBkColor($label5, $color[5])

GUICtrlSetBkColor($label6, $color[6])

MsgBox(64, "", "Styl został wczytany")

Case $wczytaj_treningowy

$nazwa_profilu = "train"

$profil_nazwa = "---------------"

$czy_otwarty = 1

$wygrane_t = 0

$wygrane_s = 0

$przegrane_t = 0

$przegrane_s = 0

$przegrane_l = 0

$remisy_t = 0

$remisy_s = 0

$remisy_l = 0

GUICtrlSetData($label_nazwa_profilu, "---------------")

GUICtrlSetData($label_w_l, "Wygrane: 0")

GUICtrlSetData($label_w_s, "Wygrane: " & $wygrane_s)

GUICtrlSetData($label_w_t, "Wygrane: " & $wygrane_t)

GUICtrlSetData($label_p_l, "Przegrane: " & $przegrane_l)

GUICtrlSetData($label_p_s, "Przegrane: " & $przegrane_s)

GUICtrlSetData($label_p_t, "Przegrane: " & $przegrane_t)

GUICtrlSetData($label_r_l, "Remisy: " & $remisy_l)

GUICtrlSetData($label_r_s, "Remisy: " & $remisy_s)

GUICtrlSetData($label_r_t, "Remisy: " & $remisy_t)

MsgBox(64, "", "Profil treningowy został wczytany")

Case $nowy_profil

GUISetState(@SW_HIDE, $gui_opcje)

profile_create()

Case $wczytaj_profil

GUISetState(@SW_HIDE, $gui_opcje)

profile_open()

Case $usun_profil

GUISetState(@SW_HIDE, $gui_opcje)

profile_delete()

Case $button_exit

Exit

Case $button_exit_2

Exit

Case $button_exit_3

Exit

Case $button_opcje

$kol = GUICtrlRead($size)

$wier = GUICtrlRead($size)

plansza($kol, $wier)

Case $button_odtworz

odczyt()

EndSwitch

WEnd

EndFunc ;==>param

 

 

Func plansza($kol, $wier) ;tworznie planszy

GUISetState(@SW_HIDE, $gui_opcje)

$gui_gra = GUICreate("Gomok by Sopel®", 16 + $kol * 40 + 150, 16 + $wier * 40)

GUISetBkColor($color[0], $gui_gra)

For $i1 = 1 To $kol

For $i2 = 1 To $wier

$pole[$i1][$i2] = GUICtrlCreateButton("", 8 + ($i1 - 1) * 40, 8 + ($i2 - 1) * 40, 40, 40)

GUICtrlSetBkColor(-1, $color[1])

GUICtrlSetColor(-1, $color[6])

GUICtrlSetFont(-1, 20)

 

Next

Next

$reset = GUICtrlCreateButton("Resetuj plansze", 16 + $kol * 40 + 10, 10, 130, 20) ;wyczyszczenie planszy

GUICtrlSetBkColor($reset, $color[2])

$param = GUICtrlCreateButton("Ustawienia", 16 + $kol * 40 + 10, 35, 130, 20) ;opcje

GUICtrlSetBkColor($param, $color[2])

$end = GUICtrlCreateButton("Zakończ", 16 + $kol * 40 + 10, 60, 130, 20)

GUICtrlSetBkColor($end, $color[2])

$kogo_ruch = GUICtrlCreateLabel("Aktualnie rusza się gracz X", 16 + $kol * 40 + 10, 85, 130, 14)

GUICtrlSetColor($kogo_ruch, $color[5])

;~ $win_o = GUICtrlCreateLabel("Wygrane O: "&$wygrane_o, 16 + $kol * 40 + 10, 130, 130, 50)

;~ $win_x = GUICtrlCreateLabel("Wygrane X: "&$wygrane_x, 16 + $kol * 40 + 10, 160, 130, 50)

;~ $rem_rem = GUICtrlCreateLabel("Remisy: "&$remisy, 16 + $kol * 40 + 10, 190, 130, 50)

$aaa = GUICtrlCreateLabel("Aktulny profil:", 16 + $kol * 40 + 10, 185, 130, 15, $SS_CENTER)

GUICtrlSetColor($aaa, $color[5])

$label_nazwa_profilu_2 = GUICtrlCreateLabel("---------------", 16 + $kol * 40 + 10, 200, 130, 15, $SS_CENTER)

GUICtrlSetColor($label_nazwa_profilu_2, $color[5])

GUICtrlCreateTab(16 + $kol * 40 + 5, 105, 140, 75)

 

GUICtrlCreateTabItem("Łatwy") ;wyniki gracza podzielne na poziomy trudnosci

 

$label_w_l = GUICtrlCreateLabel("Wygrane: " & $wygrane_l, 16 + $kol * 40 + 10, 130, 130, 15)

$label_p_l = GUICtrlCreateLabel("Przegrane: " & $przegrane_l, 16 + $kol * 40 + 10, 145, 130, 15)

$label_r_l = GUICtrlCreateLabel("Remisy: " & $remisy_l, 16 + $kol * 40 + 10, 160, 130, 15)

GUICtrlCreateTabItem("Średni")

$label_w_s = GUICtrlCreateLabel("Wygrane: " & $wygrane_s, 16 + $kol * 40 + 10, 130, 130, 15)

$label_p_s = GUICtrlCreateLabel("Przegrane: " & $przegrane_s, 16 + $kol * 40 + 10, 145, 130, 15)

$label_r_s = GUICtrlCreateLabel("Remisy: " & $remisy_s, 16 + $kol * 40 + 10, 160, 130, 15)

GUICtrlCreateTabItem("Trudny")

$label_w_t = GUICtrlCreateLabel("Wygrane: " & $wygrane_t, 16 + $kol * 40 + 10, 130, 130, 15)

$label_p_t = GUICtrlCreateLabel("Przegrane: " & $przegrane_t, 16 + $kol * 40 + 10, 145, 130, 15)

$label_r_t = GUICtrlCreateLabel("Remisy: " & $remisy_t, 16 + $kol * 40 + 10, 160, 130, 15)

If $czy_otwarty = 1 Then ;jezeli jest otwarty jakis profil to zapisuje do niego wyniki

GUICtrlSetData($label_nazwa_profilu_2, $profil_nazwa)

GUICtrlSetData($label_nazwa_profilu, $profil_nazwa)

EndIf

GUISetState(@SW_SHOW, $gui_gra)

gra() ;przechodzimy do ruchu gracza

EndFunc ;==>plansza

;~ Func odczyt()

;~ $ini = FileOpenDialog("Przeglądaj", @ScriptDir, "X & O files (*.xno)")

;~ $rozmiar = IniRead($ini, "partia", "rozmiar", 20)

;~ $ilosc = IniRead($ini, "partia", "ilosc", 1)

;~ For $d = 1 To $ilosc - 1

 

;~ $wini_x[$d] = IniRead($ini, "partia", "x" & $d, 1)

;~ $wini_y[$d] = IniRead($ini, "partia", "y" & $d, 1)

;~ $znak_znak[$d] = IniRead($ini, "partia", "znak" & $d, 1)

;~ ;MsgBox(64, "asd", $wini_x[$d] & "\"&$wini_y[$d] & "\"&$znak_znak[$d])

;~ Next

Func plansza_odczyt($rozmiar, $ilosc) ;plansza do odtwarzania zapisanych partii ruch po ruchu

$czy = 0

$licz = 1

 

$kol_od = $rozmiar ;odczytaujemy rozmiar

$wier_od = $rozmiar

GUISetState(@SW_HIDE, $gui_opcje)

$gui_odczyt = GUICreate("Gomok by Sopel® - Odtwarzacz partii", 16 + $kol_od * 40 + 180, 16 + $wier_od * 40)

GUISetBkColor($color[0], $gui_odczyt)

 

For $i1 = 1 To $kol_od

For $i2 = 1 To $wier_od

$pole_od[$i1][$i2] = GUICtrlCreateButton("", 8 + ($i1 - 1) * 40, 8 + ($i2 - 1) * 40, 40, 40) ;tworzymy pola

GUICtrlSetBkColor(-1, $color[1])

GUICtrlSetFont(-1, 20)

GUICtrlSetColor(-1, $color[6])

Next

Next

$next = GUICtrlCreateButton("Następny ruch", 16 + $kol_od * 40 + 10, 10, 130, 20) ;gui

GUICtrlSetBkColor(-1, $color[2])

$cofnij = GUICtrlCreateButton("Cofnij ruch", 16 + $kol_od * 40 + 10, 40, 130, 20)

GUICtrlSetBkColor(-1, $color[2])

$param_od = GUICtrlCreateButton("Ustawienia", 16 + $kol_od * 40 + 10, 70, 130, 20)

GUICtrlSetBkColor(-1, $color[2])

$koniec = GUICtrlCreateButton("Zakończ", 16 + $kol_od * 40 + 10, 100, 130, 20)

GUICtrlSetBkColor(-1, $color[2])

$label_il = GUICtrlCreateLabel("Numer ruchu: 0", 16 + $kol_od * 40 + 10, 130, 130, 20)

GUICtrlSetColor(-1, $color[5])

GUISetState(@SW_SHOW, $gui_odczyt)

;ograniczenia w obie strony

If $licz - 1 = 0 Then

GUICtrlSetState($cofnij, $GUI_DISABLE)

EndIf

If $licz >= $ilosc Then

GUICtrlSetState($next, $GUI_DISABLE)

EndIf

While 1

$nMsg = GUIGetMsg()

Switch $nMsg

Case $GUI_EVENT_CLOSE

Exit

Case $next ;nastepny ruch

$warx = $wini_x[$licz]

$wary = $wini_y[$licz]

$zn = $znak_znak[$licz]

GUICtrlSetData($pole_od[$warx][$wary], $zn)

GUICtrlSetData($label_il, "Numer ruchu: " & $licz)

$licz += 1

If $licz >= $ilosc Then ;tutaj sprawdza tez czy jest wygrana po jakiejs ze stron jesli tak to zakolorowywyje pola

GUICtrlSetState($next, $GUI_DISABLE)

For $a = 1 To $kol_od

For $a1 = 1 To $wier_od

$pole_data_od[$a][$a1] = GUICtrlRead($pole_od[$a][$a1])

Next

Next

For $i = 1 To 2 ;sprawdzenie czy jest jakas akcja

If $i = 1 Then $znak = "X"

If $i = 2 Then $znak = "O"

If $znak = "X" Then $colorek = $color[3]

If $znak = "O" Then $colorek = $color[4]

 

For $spr1 = 1 To $kol_od ;sprawdzenie czy zapelnone

For $spr2 = 1 To $wier_od

$czy = 1

If $pole_data_od[$spr1][$spr2] = $znak And $pole_data_od[$spr1 + 1][$spr2] = $znak And $pole_data_od[$spr1 + 2][$spr2] = $znak And $pole_data_od[$spr1 + 3][$spr2] = $znak And $pole_data_od[$spr1 + 4][$spr2] = $znak Then ;przegrana/wygrana gracza (sprawdza jednoczesnie dla 2 znakow)

 

For $b = 0 To 4

GUICtrlSetBkColor($pole_od[$spr1 + $b][$spr2], $colorek) ;zamalowanie pol z piecioma znakami kolorem

Next

EndIf

If $pole_data_od[$spr1][$spr2] = $znak And $pole_data_od[$spr1 + 1][$spr2 + 1] = $znak And $pole_data_od[$spr1 + 2][$spr2 + 2] = $znak And $pole_data_od[$spr1 + 3][$spr2 + 3] = $znak And $pole_data_od[$spr1 + 4][$spr2 + 4] = $znak Then ;to samo jeszcze kilka razy w rozne strony

 

For $b = 0 To 4

GUICtrlSetBkColor($pole_od[$spr1 + $b][$spr2 + $b], $colorek)

Next

 

EndIf

If $pole_data_od[$spr1][$spr2] = $znak And $pole_data_od[$spr1 - 1][$spr2] = $znak And $pole_data_od[$spr1 - 2][$spr2] = $znak And $pole_data_od[$spr1 - 3][$spr2] = $znak And $pole_data_od[$spr1 - 4][$spr2] = $znak Then

 

For $b = 0 To 4

GUICtrlSetBkColor($pole_od[$spr1 - $b][$spr2], $colorek)

Next

 

EndIf

If $pole_data_od[$spr1][$spr2] = $znak And $pole_data_od[$spr1 - 1][$spr2 - 1] = $znak And $pole_data_od[$spr1 - 2][$spr2 - 2] = $znak And $pole_data_od[$spr1 - 3][$spr2 - 3] = $znak And $pole_data_od[$spr1 - 4][$spr2 - 4] = $znak Then

 

For $b = 0 To 4

GUICtrlSetBkColor($pole_od[$spr1 - $b][$spr2 - $b], $colorek)

Next

 

EndIf

If $pole_data_od[$spr1][$spr2] = $znak And $pole_data_od[$spr1][$spr2 + 1] = $znak And $pole_data_od[$spr1][$spr2 + 2] = $znak And $pole_data_od[$spr1][$spr2 + 3] = $znak And $pole_data_od[$spr1][$spr2 + 4] = $znak Then

 

For $b = 0 To 4

GUICtrlSetBkColor($pole_od[$spr1][$spr2 + $b], $colorek)

Next

 

EndIf

If $pole_data_od[$spr1][$spr2] = $znak And $pole_data_od[$spr1][$spr2 - 1] = $znak And $pole_data_od[$spr1][$spr2 - 2] = $znak And $pole_data_od[$spr1][$spr2 - 3] = $znak And $pole_data_od[$spr1][$spr2 - 4] = $znak Then

 

For $b = 0 To 4

GUICtrlSetBkColor($pole_od[$spr1][$spr2 - $b], $colorek)

Next

 

EndIf

If $pole_data_od[$spr1][$spr2] = $znak And $pole_data_od[$spr1 + 1][$spr2 - 1] = $znak And $pole_data_od[$spr1 + 2][$spr2 - 2] = $znak And $pole_data_od[$spr1 + 3][$spr2 - 3] = $znak And $pole_data_od[$spr1 + 4][$spr2 - 4] = $znak Then

 

For $b = 0 To 4

GUICtrlSetBkColor($pole_od[$spr1 + $b][$spr2 - $b], $colorek)

Next

 

EndIf

If $pole_data_od[$spr1][$spr2] = $znak And $pole_data_od[$spr1 - 1][$spr2 + 1] = $znak And $pole_data_od[$spr1 - 2][$spr2 + 2] = $znak And $pole_data_od[$spr1 - 3][$spr2 + 3] = $znak And $pole_data_od[$spr1 - 4][$spr2 + 4] = $znak Then

 

For $b = 0 To 4

GUICtrlSetBkColor($pole_od[$spr1 - $b][$spr2 + $b], $colorek)

Next

 

EndIf

Next

Next

Next

ElseIf $licz <> $ilosc Then ;dalszy ciag ograniczen

GUICtrlSetState($next, $GUI_ENABLE)

EndIf

If $licz - 1 = 0 Then

GUICtrlSetState($cofnij, $GUI_DISABLE)

ElseIf $licz - 1 <> 0 Then

GUICtrlSetState($cofnij, $GUI_ENABLE)

EndIf

Case $cofnij ;poprzedni

GUICtrlSetData($label_il, "Numer ruchu: " & $licz)

$licz -= 1

If $czy = 1 Then

$czy = 0

For $sp1 = 1 To $kol_od

For $sp2 = 1 To $wier_od

GUICtrlSetBkColor($pole_od[$sp1][$sp2], $color[1])

Next

Next

EndIf

If $licz - 1 = 0 Then

GUICtrlSetState($cofnij, $GUI_DISABLE)

ElseIf $licz - 1 <> 0 Then

GUICtrlSetState($cofnij, $GUI_ENABLE)

EndIf

If $licz - 1 >= $ilosc Then

GUICtrlSetState($next, $GUI_DISABLE)

ElseIf $licz - 1 <> $ilosc Then

GUICtrlSetState($next, $GUI_ENABLE)

EndIf

$warx = $wini_x[$licz]

$wary = $wini_y[$licz]

GUICtrlSetData($pole_od[$warx][$wary], "")

GUICtrlSetData($label_il, "Numer ruchu: " & $licz - 1)

Case $param_od

For $i = 1 To $rozmiar

For $i2 = 1 To $rozmiar

GUICtrlSetData($pole_od[$i1][$i2], "")

Next

Next

 

GUISetState(@SW_HIDE, $gui_odczyt)

param()

Case $koniec

Exit

EndSwitch

 

WEnd

EndFunc ;==>plansza_odczyt

 

Func gra() ;funkcja sprawdzajaca ruch gracza

 

 

While 1

$nMsg = GUIGetMsg()

For $i1 = 1 To $kol

For $i2 = 1 To $wier

Switch $nMsg

Case $pole[$i1][$i2]

If GUICtrlRead($pole[$i1][$i2]) = "" Then

postaw_x($i1, $i2) ;wywolujemy postawienie x'sa

EndIf

EndSwitch

Next

Next

 

Switch $nMsg

Case $GUI_EVENT_CLOSE

Exit

Case $reset ; po wyczyszczeniu planszy

win("reset")

Case $param ;powrot do opcji

GUISetState(@SW_HIDE, $gui_gra)

param()

Case $end

Exit

EndSwitch

WEnd

EndFunc ;==>gra

Func gra_p2() ;przy grze p v p ruch gracza o

While 1

$nMsg = GUIGetMsg()

For $i1 = 1 To $kol

For $i2 = 1 To $wier

Switch $nMsg

Case $pole[$i1][$i2]

If GUICtrlRead($pole[$i1][$i2]) = "" Then

postaw_o($i1, $i2) ; postawienie o

EndIf

EndSwitch

Next

Next

 

 

 

Switch $nMsg

Case $GUI_EVENT_CLOSE

Exit

Case $reset

 

win("reset")

Case $param

GUISetState(@SW_HIDE, $gui_gra)

param()

 

Case $end

Exit

EndSwitch

WEnd

 

EndFunc ;==>gra_p2

Func opcje() ;opcje dla okna po wygranej, przegranej, remisie

 

 

While 1

$nMsg = GUIGetMsg()

Switch $nMsg

 

 

Case $GUI_EVENT_CLOSE

Exit

Case $reset_p

GUISetState(@SW_HIDE, $gui_win)

GUISetState(@SW_HIDE, $gui_rem)

GUISetState(@SW_HIDE, $gui_por)

GUISetState(@SW_ENABLE, $gui_gra)

GUISetState(@SW_RESTORE, $gui_gra)

win("reset")

Case $reset_r

GUISetState(@SW_HIDE, $gui_win)

GUISetState(@SW_HIDE, $gui_rem)

GUISetState(@SW_HIDE, $gui_por)

GUISetState(@SW_ENABLE, $gui_gra)

GUISetState(@SW_RESTORE, $gui_gra)

win("reset")

Case $reset_w

GUISetState(@SW_HIDE, $gui_win)

GUISetState(@SW_HIDE, $gui_rem)

GUISetState(@SW_HIDE, $gui_por)

GUISetState(@SW_ENABLE, $gui_gra)

GUISetState(@SW_RESTORE, $gui_gra)

win("reset")

Case $param_p

GUISetState(@SW_HIDE, $gui_win)

GUISetState(@SW_HIDE, $gui_rem)

GUISetState(@SW_HIDE, $gui_por)

GUISetState(@SW_ENABLE, $gui_gra)

GUISetState(@SW_HIDE, $gui_gra)

param()

Case $param_w

GUISetState(@SW_HIDE, $gui_win)

GUISetState(@SW_HIDE, $gui_rem)

GUISetState(@SW_HIDE, $gui_por)

GUISetState(@SW_ENABLE, $gui_gra)

GUISetState(@SW_HIDE, $gui_gra)

param()

Case $param_r

GUISetState(@SW_HIDE, $gui_win)

GUISetState(@SW_HIDE, $gui_rem)

GUISetState(@SW_HIDE, $gui_por)

GUISetState(@SW_ENABLE, $gui_gra)

GUISetState(@SW_HIDE, $gui_gra)

param()

Case $zapisz_p ; zapisanie przebiegu gry do pliku

 

zapisz()

Case $zapisz_w

zapisz()

Case $zapisz_r

zapisz()

Case $end_p

Exit

Case $end_w

Exit

Case $end_r

Exit

 

EndSwitch

WEnd

EndFunc ;==>opcje

Func zapisz() ;funkcja zapisujaca przebiek partii

$ini_zapis = FileSaveDialog("Zapis", @ScriptDir, "Pliki Gomok (*.gom)")

If FileExists($ini_zapis) Then

 

 

 

$MsgBox1 = MsgBox(292, "Zapis", "Taki plik już istnieje... Czy chcesz zamienić plik?") ;sprawdzamy czy istnieje taki plik

Select

Case $MsgBox1 = 6 ;tak - usun

FileDelete($ini_zapis & ".gom")

Case $MsgBox1 = 7 ;nie - powrot do wyboru lokalizacji

zapisz()

EndSelect

EndIf

 

 

 

IniWrite($ini_zapis & ".gom", "partia", "rozmiar", $kol) ;zapisanie najwazniejszych wartocji, ilosc ruchow i rozmiar planszy

IniWrite($ini_zapis & ".gom", "partia", "ilosc", $z)

For $d = 1 To $z

 

IniWrite($ini_zapis & ".gom", "partia", "x" & $d, $zapisx[$d]) ;zapisanie poszczegolnych ruchow

IniWrite($ini_zapis & ".gom", "partia", "y" & $d, $zapisy[$d])

IniWrite($ini_zapis & ".gom", "partia", "znak" & $d, $znaczek[$d])

 

Next

MsgBox(64, "100%", "Ukończono zapisywanie pliku")

EndFunc ;==>zapisz

Func odczyt() ;odczytanie gry do funckji plansza_odczyt podobnie jak powyzej tylko odczytujemy

 

$ini = FileOpenDialog("Przeglądaj", @ScriptDir, "Pliki Gomok (*.gom)")

If $ini = "" Then

param()

EndIf

$rozmiar = IniRead($ini, "partia", "rozmiar", 20)

$ilosc = IniRead($ini, "partia", "ilosc", 1)

For $d = 1 To $ilosc - 1

 

$wini_x[$d] = IniRead($ini, "partia", "x" & $d, 1)

$wini_y[$d] = IniRead($ini, "partia", "y" & $d, 1)

$znak_znak[$d] = IniRead($ini, "partia", "znak" & $d, 1)

;MsgBox(64, "asd", $wini_x[$d] & "\"&$wini_y[$d] & "\"&$znak_znak[$d])

Next

plansza_odczyt($rozmiar, $ilosc)

;~ While 1

 

;~ $nMsg = GUIGetMsg()

;~ Switch $nMsg

;~ Case $button_exit

;~ Exit

;~ Case $button_opcje

;~ $kol = GUICtrlRead($size)

;~ $wier = GUICtrlRead($size)

;~ plansza()

;~ Case $button_odtworz

;~ odczyt()

;~ EndSwitch

;~ WEnd

EndFunc ;==>odczyt

Func postaw_x($kol, $wier) ; stawianie x

$zapisx[$z] = $kol

$zapisy[$z] = $wier

$znaczek[$z] = "X"

$z = $z + 1

GUICtrlSetData($pole[$kol][$wier], "X")

$komputer = 1

;MsgBox(64, "sd", $komputer)

check() ;funkcja sprawdzajaca

EndFunc ;==>postaw_x

Func postaw_o($kol, $wier) ;stawianie o w grze p v p

$zapisx[$z] = $kol

$zapisy[$z] = $wier

$znaczek[$z] = "O"

$z = $z + 1

GUICtrlSetData($pole[$kol][$wier], "O")

$komputer = 0

;MsgBox(64, "sd", $komputer)

check();funkcja sprawdzajaca

EndFunc ;==>postaw_o

Func check() ;sprawdzenie

For $sp1 = 1 To $kol ;zczytujemy wartosci pol

For $sp2 = 1 To $wier

$pole_data[$sp1][$sp2] = GUICtrlRead($pole[$sp1][$sp2])

Next

Next

For $i = 1 To 2 ;sprawdzenie czy jest jakas akcja

If $i = 1 Then $znak = "X"

If $i = 2 Then $znak = "O"

If $znak = "X" Then $colorek = $color[3]

If $znak = "O" Then $colorek = $color[4]

For $spr1 = 1 To $kol ;sprawdzenie czy zapelnone

For $spr2 = 1 To $wier

 

If $pole_data[$spr1][$spr2] = $znak And $pole_data[$spr1 + 1][$spr2] = $znak And $pole_data[$spr1 + 2][$spr2] = $znak And $pole_data[$spr1 + 3][$spr2] = $znak And $pole_data[$spr1 + 4][$spr2] = $znak Then ;przegrana/wygrana gracza (sprawdza jednoczesnie dla 2 znakow)

 

For $b = 0 To 4

GUICtrlSetBkColor($pole[$spr1 + $b][$spr2], $colorek) ;zamalowanie pol z piecioma znakami kolorem

Next

If $i = 1 Then win("player")

If $i = 2 Then win("komputer")

 

EndIf

If $pole_data[$spr1][$spr2] = $znak And $pole_data[$spr1 + 1][$spr2 + 1] = $znak And $pole_data[$spr1 + 2][$spr2 + 2] = $znak And $pole_data[$spr1 + 3][$spr2 + 3] = $znak And $pole_data[$spr1 + 4][$spr2 + 4] = $znak Then ;to samo jeszcze kilka razy w rozne strony

 

For $b = 0 To 4

GUICtrlSetBkColor($pole[$spr1 + $b][$spr2 + $b], $colorek)

Next

If $i = 1 Then win("player")

If $i = 2 Then win("komputer")

EndIf

If $pole_data[$spr1][$spr2] = $znak And $pole_data[$spr1 - 1][$spr2] = $znak And $pole_data[$spr1 - 2][$spr2] = $znak And $pole_data[$spr1 - 3][$spr2] = $znak And $pole_data[$spr1 - 4][$spr2] = $znak Then

 

For $b = 0 To 4

GUICtrlSetBkColor($pole[$spr1 - $b][$spr2], $colorek)

Next

If $i = 1 Then win("player")

If $i = 2 Then win("komputer")

EndIf

If $pole_data[$spr1][$spr2] = $znak And $pole_data[$spr1 - 1][$spr2 - 1] = $znak And $pole_data[$spr1 - 2][$spr2 - 2] = $znak And $pole_data[$spr1 - 3][$spr2 - 3] = $znak And $pole_data[$spr1 - 4][$spr2 - 4] = $znak Then

 

For $b = 0 To 4

GUICtrlSetBkColor($pole[$spr1 - $b][$spr2 - $b], $colorek)

Next

If $i = 1 Then win("player")

If $i = 2 Then win("komputer")

EndIf

If $pole_data[$spr1][$spr2] = $znak And $pole_data[$spr1][$spr2 + 1] = $znak And $pole_data[$spr1][$spr2 + 2] = $znak And $pole_data[$spr1][$spr2 + 3] = $znak And $pole_data[$spr1][$spr2 + 4] = $znak Then

 

For $b = 0 To 4

GUICtrlSetBkColor($pole[$spr1][$spr2 + $b], $colorek)

Next

If $i = 1 Then win("player")

If $i = 2 Then win("komputer")

EndIf

If $pole_data[$spr1][$spr2] = $znak And $pole_data[$spr1][$spr2 - 1] = $znak And $pole_data[$spr1][$spr2 - 2] = $znak And $pole_data[$spr1][$spr2 - 3] = $znak And $pole_data[$spr1][$spr2 - 4] = $znak Then

 

For $b = 0 To 4

GUICtrlSetBkColor($pole[$spr1][$spr2 - $b], $colorek)

Next

If $i = 1 Then win("player")

If $i = 2 Then win("komputer")

EndIf

If $pole_data[$spr1][$spr2] = $znak And $pole_data[$spr1 + 1][$spr2 - 1] = $znak And $pole_data[$spr1 + 2][$spr2 - 2] = $znak And $pole_data[$spr1 + 3][$spr2 - 3] = $znak And $pole_data[$spr1 + 4][$spr2 - 4] = $znak Then

 

For $b = 0 To 4

GUICtrlSetBkColor($pole[$spr1 + $b][$spr2 - $b], $colorek)

Next

If $i = 1 Then win("player")

If $i = 2 Then win("komputer")

EndIf

If $pole_data[$spr1][$spr2] = $znak And $pole_data[$spr1 - 1][$spr2 + 1] = $znak And $pole_data[$spr1 - 2][$spr2 + 2] = $znak And $pole_data[$spr1 - 3][$spr2 + 3] = $znak And $pole_data[$spr1 - 4][$spr2 + 4] = $znak Then

 

For $b = 0 To 4

GUICtrlSetBkColor($pole[$spr1 - $b][$spr2 + $b], $colorek)

Next

If $i = 1 Then win("player")

If $i = 2 Then win("komputer")

EndIf

Next

Next

Next

$czy_remis = 0 ; nadaje zmiennej wartosc 0

$znaki = 0

For $sprawdz1 = 1 To $kol

For $sprawdz2 = 1 To $wier

If $pole_data[$sprawdz1][$sprawdz2] = "" Then ;jezeli pole nie jset zapelnone to wtedy zwiekszamy o 1 $czy_remis

$czy_remis = 1

EndIf

Next

Next

For $z1 = 1 To $kol

For $z2 = 1 To $wier

If $pole_data[$z1][$z2] = "X" Or $pole_data[$z1][$z2] = "O" Then;jezeli pole jset zapelnone to wtedy zwiekszamy o 1 $znaki

$znaki += 1

EndIf

Next

Next

If $czy_remis = 0 Then ; jezeli wszystrko zapelnione daje remis

win("remis")

EndIf

If $komputer = 1 And GUICtrlRead($r2) = $gui_checked Then ;jezeli jest gar p v p i jest ruch o to

GUICtrlSetData($kogo_ruch, "Aktualnie jest ruch gracza O")

gra_p2() ;odwolanie do ruchu gracza o

EndIf

 

 

If $komputer = 1 Then

GUICtrlSetData($kogo_ruch, "Aktualnie jest ruch gracza O") ; jesli jest p v cpu to jest ruch kompa

komputer();odwolanie do ruchu kompa

EndIf

If Mod($znaki, 2) = 1 And $komputer = 0 Then; tu zastosowanie tej mziennej znaki, sprawdza czy komputer zrobil ruch (na wszelki wypadek)

$komputer = 2

EndIf

If $komputer = 0 Then ; ruch gracza x

GUICtrlSetData($kogo_ruch, "Aktualnie jest ruch gracza X")

gra() ; ruch gracza x

EndIf

If $komputer = 2 Then ; jezeli komputer nie zrobil ruchu (rzadko sie zdarza nie wiem czy wogole byl taki przypadek) to losuje pole

los()

EndIf

EndFunc ;==>check

Func win($kto) ; funkcja wyswietlajaca odpowienie okno po wygranej... itd

 

If $kto = "reset" Then

For $sp1 = 1 To $kol

For $sp2 = 1 To $wier

 

GUICtrlSetData($pole[$sp1][$sp2], "")

GUICtrlSetBkColor($pole[$sp1][$sp2], $color[1]) ;tlo wszystkich buttonow na bialo

GUICtrlSetFont($pole[$sp1][$sp2], 20) ;czcionka na 20

Next

Next

$z = 1

GUICtrlSetData($kogo_ruch, "Aktualnie jest ruch gracza X")

gra()

 

 

EndIf

If $kto = "player" Then

If GUICtrlRead($r2) = $gui_checked Then;w grze p v p wygral X

 

 

 

GUICtrlSetData($label_w, "Wygrał gracz X")

GUISetState(@SW_SHOW, $gui_win)

GUISetState(@SW_DISABLE, $gui_gra)

Else

If GUICtrlRead($r3) = $gui_checked Then ;dopisuje wygrane

$wygrane_l += 1

EndIf

If GUICtrlRead($r4) = $gui_checked Then

$wygrane_s += 1

EndIf

If GUICtrlRead($r5) = $gui_checked Then

$wygrane_t += 1

EndIf

GUICtrlSetData($label_w_l, "Wygrane: " & $wygrane_l) ;ustawia dane w gui

GUICtrlSetData($label_w_s, "Wygrane: " & $wygrane_s)

GUICtrlSetData($label_w_t, "Wygrane: " & $wygrane_t)

GUICtrlSetData($label_p_l, "Przegrane: " & $przegrane_l)

GUICtrlSetData($label_p_s, "Przegrane: " & $przegrane_s)

GUICtrlSetData($label_p_t, "Przegrane: " & $przegrane_t)

GUICtrlSetData($label_r_l, "Remisy: " & $remisy_l)

GUICtrlSetData($label_r_s, "Remisy: " & $remisy_s)

GUICtrlSetData($label_r_t, "Remisy: " & $remisy_t)

GUICtrlSetData($label_w, "Brawo, udało Ci się wygrać! :)")

GUISetState(@SW_SHOW, $gui_win)

GUISetState(@SW_DISABLE, $gui_gra)

If $czy_otwarty = 1 Then

 

zapisz_wynik() ; zapisuje wynik

 

EndIf

EndIf

;~ $wygrane_x += 1

;~ guictrlsetdata($wygrane_x, $wygrane_x)

 

opcje()

EndIf

If $kto = "komputer" Then ; jesli wygra komputer

 

 

If GUICtrlRead($r2) = $gui_checked Then

 

 

GUICtrlSetData($label_p, "Wygrał gracz O")

GUISetState(@SW_SHOW, $gui_por)

GUISetState(@SW_DISABLE, $gui_gra)

Else

If GUICtrlRead($r3) = $gui_checked Then ;to samo co powyzej i dajej to samo tez tylko dla remisu

$przegrane_l += 1

EndIf

If GUICtrlRead($r4) = $gui_checked Then

$przegrane_s += 1

EndIf

If GUICtrlRead($r5) = $gui_checked Then

$przegrane_t += 1

EndIf

GUICtrlSetData($label_w_l, "Wygrane: " & $wygrane_l)

GUICtrlSetData($label_w_s, "Wygrane: " & $wygrane_s)

GUICtrlSetData($label_w_t, "Wygrane: " & $wygrane_t)

GUICtrlSetData($label_p_l, "Przegrane: " & $przegrane_l)

GUICtrlSetData($label_p_s, "Przegrane: " & $przegrane_s)

GUICtrlSetData($label_p_t, "Przegrane: " & $przegrane_t)

GUICtrlSetData($label_r_l, "Remisy: " & $remisy_l)

GUICtrlSetData($label_r_s, "Remisy: " & $remisy_s)

GUICtrlSetData($label_r_t, "Remisy: " & $remisy_t)

GUICtrlSetData($label_w, "Niestety przegrałeś, może uda Ci się wygrać następnym razem. :)")

GUISetState(@SW_SHOW, $gui_por)

GUISetState(@SW_DISABLE, $gui_gra)

If $czy_otwarty = 1 Then

 

zapisz_wynik()

 

EndIf

EndIf

;~ $wygrane_o += 1

;~ guictrlsetdata($wygrane_o, $wygrane_o)

 

opcje()

EndIf

If $kto = "remis" Then

If GUICtrlRead($r2) = $gui_checked Then

 

GUICtrlSetData($label_r, "Remis")

GUISetState(@SW_SHOW, $gui_rem)

GUISetState(@SW_DISABLE, $gui_gra)

Else

If GUICtrlRead($r3) = $gui_checked Then

$remisy_l += 1

EndIf

If GUICtrlRead($r4) = $gui_checked Then

$remisy_s += 1

EndIf

If GUICtrlRead($r5) = $gui_checked Then

$remisy_t += 1

EndIf

GUICtrlSetData($label_w_l, "Wygrane: " & $wygrane_l)

GUICtrlSetData($label_w_s, "Wygrane: " & $wygrane_s)

GUICtrlSetData($label_w_t, "Wygrane: " & $wygrane_t)

GUICtrlSetData($label_p_l, "Przegrane: " & $przegrane_l)

GUICtrlSetData($label_p_s, "Przegrane: " & $przegrane_s)

GUICtrlSetData($label_p_t, "Przegrane: " & $przegrane_t)

GUICtrlSetData($label_r_l, "Remisy: " & $remisy_l)

GUICtrlSetData($label_r_s, "Remisy: " & $remisy_s)

GUICtrlSetData($label_r_t, "Remisy: " & $remisy_t)

GUICtrlSetData($label_w, "Zremisowałeś, ale nie było aż tak źle. :)")

GUISetState(@SW_SHOW, $gui_rem)

GUISetState(@SW_DISABLE, $gui_gra)

If $czy_otwarty = 1 Then

 

zapisz_wynik()

 

EndIf

EndIf

;~ $remisy += 1

;~ guictrlsetdata($rem_rem, $remisy)

opcje()

EndIf

For $sp1 = 1 To $kol

For $sp2 = 1 To $wier

 

GUICtrlSetData($pole[$sp1][$sp2], "")

 

Next

Next

$z = 1

GUICtrlSetData($kogo_ruch, "Aktualnie jest ruch gracza X")

gra()

EndFunc ;==>win

Func komputer() ;najbardziej skomplikowane - AL

$puste = 0 ;ustawiamy zmienne

$dir = 0 ;kierunek zablokowania

$obecna = 0 ;najwieksza ilosc znakow w jednej linii w danej chwili - jezeli znajdzie sie wieksza to jest zamieniana

$naj = 0;najwieksza ilosc znakow w jednej linii

$direction = 0 ; kierunek

$direction_tmp = 0 ;kierunek tmp

$kordy_x = 0 ;kordy od ktorych ma sprawdzac i wrzucic znak O

$kordy_y = 0

For $sp1 = 1 To $kol

For $sp2 = 1 To $wier

$pole_data[$sp1][$sp2] = GUICtrlRead($pole[$sp1][$sp2]) ; zczytanie weartosci

Next

Next ;najpierw sa sprawdzane mozliwosci zablokowania potem dodania potem wykonywane sa po kolei ruchy dla wygrania O i zablokowania // troche malo zrozumiale :D

For $i1 = 5 To $kol ; lewy gorny rog

For $i2 = 5 To $wier

$obecna = 0 ;obecna na 0

If $pole_data[$i1][$i2] = "X" Then ;sprawdzamy czy = x

$obecna += 1 ;jezli tak to dodajemy 1

$direction_tmp = 1 ;ustawiamy tez kierunek (1-8 ) od lewego gornego rogu wedlog ruchu wskazowek zegara)

For $i = 1 To 4

If $pole_data[$i1 - $i][$i2 - $i] = "X" Then;sprawdza czy kolejne znaki w danym kierunku to x jesli tak

$obecna += 1

ElseIf $pole_data[$i1 - $i][$i2 - $i] = "O" Then;jezeli nie mozna wy tym kiierunki z danego pola ulozyc 5 znakow to wychodzi z petli i zeruje direction i obecna i idzie dalej

$direction_tmp = 0

$obecna = 0

ExitLoop

EndIf

Next

EndIf

If $obecna > $naj Then ;jezeli jest to najlepsza opcja do postawenia to nadpisuje poprzednia najlepsza

$naj = $obecna

$direction = $direction_tmp

$kordy_x = $i1

$kordy_y = $i2

EndIf

Next

Next;dalej jest to samo tylko inne kierunki

 

For $i1 = 1 To $kol ; gora

For $i2 = 5 To $wier

 

$obecna = 0

If $pole_data[$i1][$i2] = "X" Then

$obecna += 1

$direction_tmp = 2

For $i = 1 To 4

If $pole_data[$i1][$i2 - $i] = "X" Then

$obecna += 1

ElseIf $pole_data[$i1][$i2 - $i] = "O" Then

$direction_tmp = 0

$obecna = 0

ExitLoop

EndIf

Next

EndIf

If $obecna > $naj Then

$naj = $obecna

$direction = $direction_tmp

$kordy_x = $i1

$kordy_y = $i2

EndIf

Next

Next

 

For $i1 = 1 To $kol - 4 ; prawy gorny rog

For $i2 = 5 To $wier

$obecna = 0

If $pole_data[$i1][$i2] = "X" Then

$obecna += 1

$direction_tmp = 3

For $i = 1 To 4

If $pole_data[$i1 + $i][$i2 - $i] = "X" Then

$obecna += 1

ElseIf $pole_data[$i1 + $i][$i2 - $i] = "O" Then

$direction_tmp = 0

$obecna = 0

ExitLoop

EndIf

Next

EndIf

If $obecna > $naj Then

$naj = $obecna

$direction = $direction_tmp

$kordy_x = $i1

$kordy_y = $i2

EndIf

Next

Next

 

For $i1 = 1 To $kol - 4 ; prawa

For $i2 = 1 To $wier

$obecna = 0

If $pole_data[$i1][$i2] = "X" Then

$obecna += 1

$direction_tmp = 4

For $i = 1 To 4

If $pole_data[$i1 + $i][$i2] = "X" Then

$obecna += 1

ElseIf $pole_data[$i1 + $i][$i2] = "O" Then

$direction_tmp = 0

$obecna = 0

ExitLoop

EndIf

Next

EndIf

If $obecna > $naj Then

$naj = $obecna

$direction = $direction_tmp

$kordy_x = $i1

$kordy_y = $i2

EndIf

Next

Next

 

For $i1 = 1 To $kol - 4; prawy dolny rog

For $i2 = 1 To $wier - 4

$obecna = 0

If $pole_data[$i1][$i2] = "X" Then

$obecna += 1

$direction_tmp = 5

For $i = 1 To 4

If $pole_data[$i1 + $i][$i2 + $i] = "X" Then

$obecna += 1

ElseIf $pole_data[$i1 + $i][$i2 + $i] = "O" Then

$direction_tmp = 0

$obecna = 0

ExitLoop

EndIf

Next

EndIf

If $obecna > $naj Then

$naj = $obecna

$direction = $direction_tmp

$kordy_x = $i1

$kordy_y = $i2

EndIf

Next

Next

 

For $i1 = 1 To $kol ; dol

For $i2 = 1 To $wier - 4

$obecna = 0

If $pole_data[$i1][$i2] = "X" Then

$obecna += 1

$direction_tmp = 6

For $i = 1 To 4

If $pole_data[$i1][$i2 + $i] = "X" Then

$obecna += 1

ElseIf $pole_data[$i1][$i2 + $i] = "O" Then

$direction_tmp = 0

$obecna = 0

ExitLoop

EndIf

Next

EndIf

If $obecna > $naj Then

$naj = $obecna

$direction = $direction_tmp

$kordy_x = $i1

$kordy_y = $i2

EndIf

Next

Next

 

For $i1 = 5 To $kol ; lewy dolny rog

For $i2 = 1 To $wier - 4

$obecna = 0

If $pole_data[$i1][$i2] = "X" Then

$obecna += 1

$direction_tmp = 7

For $i = 1 To 4

If $pole_data[$i1 - $i][$i2 + $i] = "X" Then

$obecna += 1

ElseIf $pole_data[$i1 - $i][$i2 + $i] = "O" Then

$direction_tmp = 0

$obecna = 0

ExitLoop

EndIf

Next

EndIf

If $obecna > $naj Then

$naj = $obecna

$direction = $direction_tmp

$kordy_x = $i1

$kordy_y = $i2

EndIf

Next

Next

 

For $i1 = 5 To $kol ; lewo

For $i2 = 1 To $wier

$obecna = 0

If $pole_data[$i1][$i2] = "X" Then

$obecna += 1

$direction_tmp = 8

 

For $i = 1 To 4

If $pole_data[$i1 - $i][$i2] = "X" Then

$obecna += 1

ElseIf $pole_data[$i1 - $i][$i2] = "O" Then

$direction_tmp = 0

$obecna = 0

ExitLoop

EndIf

Next

EndIf

If $obecna > $naj Then

$naj = $obecna

$direction = $direction_tmp

$kordy_x = $i1

$kordy_y = $i2

EndIf

Next

Next

; teraz stawianie

$obecna_b = 0

$naj_b = 0

$direction_b = 0

$direction_tmp_b = 0

$kordy_x_b = 0

$kordy_y_b = 0

For $sp1 = 1 To $kol

For $sp2 = 1 To $wier

$pole_data[$sp1][$sp2] = GUICtrlRead($pole[$sp1][$sp2])

Next

Next

For $i1 = 5 To $kol ; lewy gorny rog

For $i2 = 5 To $wier

$obecna_b = 0

If $pole_data[$i1][$i2] = "O" Then

$obecna_b += 1

$direction_tmp_b = 1

For $i = 1 To 4

If $pole_data[$i1 - $i][$i2 - $i] = "O" Then

$obecna_b += 1

ElseIf $pole_data[$i1 - $i][$i2 - $i] = "X" Then

$direction_tmp_b = 0

$obecna_b = 0

ExitLoop

EndIf

 

Next

EndIf

If $pole_data[$i1][$i2] = "" Then

$puste += 1

 

For $i = 1 To 4

If $pole_data[$i1 - $i][$i2 - $i] = "" Then

$puste += 1

Else

$puste = 0

ExitLoop

EndIf

Next

If $puste = 5 Then

$dir = 1

EndIf

EndIf

$puste = 0

If $obecna_b > $naj_b Then

$naj_b = $obecna_b

$direction_b = $direction_tmp_b

$kordy_x_b = $i1

$kordy_y_b = $i2

EndIf

Next

Next

 

For $i1 = 1 To $kol Step +1; gora

For $i2 = 5 To $wier Step +1

 

$obecna_b = 0

If $pole_data[$i1][$i2] = "O" Then

$obecna_b += 1

$direction_tmp_b = 2

For $i = 1 To 4

If $pole_data[$i1][$i2 - $i] = "O" Then

$obecna_b += 1

ElseIf $pole_data[$i1][$i2 - $i] = "X" Then

$direction_tmp_b = 0

$obecna_b = 0

ExitLoop

EndIf

Next

EndIf

If $pole_data[$i1][$i2] = "" Then

$puste += 1

 

For $i = 1 To 4

If $pole_data[$i1][$i2 - $i] = "" Then

$puste += 1

Else

$puste = 0

ExitLoop

EndIf

Next

If $puste = 5 Then

$dir = 2

EndIf

EndIf

$puste = 0

If $obecna_b > $naj_b Then

$naj_b = $obecna_b

$direction_b = $direction_tmp_b

$kordy_x_b = $i1

$kordy_y_b = $i2

EndIf

Next

Next

 

For $i1 = 1 To $kol - 4 ; prawy gorny rog

For $i2 = 5 To $wier

$obecna_b = 0

If $pole_data[$i1][$i2] = "O" Then

$obecna_b += 1

$direction_tmp_b = 3

For $i = 1 To 4

If $pole_data[$i1 + $i][$i2 - $i] = "O" Then

$obecna_b += 1

ElseIf $pole_data[$i1 + $i][$i2 - $i] = "X" Then

$direction_tmp_b = 0

$obecna_b = 0

ExitLoop

EndIf

Next

EndIf

If $pole_data[$i1][$i2] = "" Then

$puste += 1

 

For $i = 1 To 4

If $pole_data[$i1 + $i][$i2 - $i] = "" Then

$puste += 1

Else

$puste = 0

ExitLoop

EndIf

Next

If $puste = 5 Then

$dir = 3

EndIf

EndIf

$puste = 0

If $obecna_b > $naj_b Then

$naj_b = $obecna_b

$direction_b = $direction_tmp_b

$kordy_x_b = $i1

$kordy_y_b = $i2

EndIf

Next

Next

 

For $i1 = 1 To $kol - 4 ; prawa

For $i2 = 1 To $wier

$obecna_b = 0

If $pole_data[$i1][$i2] = "O" Then

$obecna_b += 1

$direction_tmp_b = 4

For $i = 1 To 4

If $pole_data[$i1 + $i][$i2] = "O" Then

$obecna_b += 1

ElseIf $pole_data[$i1 + $i][$i2] = "X" Then

$direction_tmp_b = 0

$obecna_b = 0

ExitLoop

EndIf

Next

EndIf

If $pole_data[$i1][$i2] = "" Then

$puste += 1

 

For $i = 1 To 4

If $pole_data[$i1 + $i][$i2] = "" Then

$puste += 1

Else

$puste = 0

ExitLoop

EndIf

Next

If $puste = 5 Then

$dir = 4

EndIf

EndIf

$puste = 0

If $obecna_b > $naj_b Then

$naj_b = $obecna_b

$direction_b = $direction_tmp_b

$kordy_x_b = $i1

$kordy_y_b = $i2

EndIf

Next

Next

 

For $i1 = 1 To $kol - 4; prawy dolny rog

For $i2 = 1 To $wier - 4

$obecna_b = 0

If $pole_data[$i1][$i2] = "O" Then

$obecna_b += 1

$direction_tmp_b = 5

For $i = 1 To 4

If $pole_data[$i1 + $i][$i2 + $i] = "O" Then

$obecna_b += 1

ElseIf $pole_data[$i1 + $i][$i2 + $i] = "X" Then

$direction_tmp_b = 0

$obecna_b = 0

ExitLoop

EndIf

Next

EndIf

If $pole_data[$i1][$i2] = "" Then

$puste += 1

 

For $i = 1 To 4

If $pole_data[$i1 + $i][$i2 + $i] = "" Then

$puste += 1

Else

$puste = 0

ExitLoop

EndIf

Next

If $puste = 5 Then

$dir = 5

EndIf

EndIf

$puste = 0

If $obecna_b > $naj_b Then

$naj_b = $obecna_b

$direction_b = $direction_tmp_b

$kordy_x_b = $i1

$kordy_y_b = $i2

EndIf

Next

Next

 

For $i1 = 1 To $kol ; dol

For $i2 = 1 To $wier - 4

$obecna_b = 0

If $pole_data[$i1][$i2] = "O" Then

$obecna_b += 1

$direction_tmp_b = 6

For $i = 1 To 4

If $pole_data[$i1][$i2 + $i] = "O" Then

$obecna_b += 1

ElseIf $pole_data[$i1][$i2 + $i] = "X" Then

$direction_tmp_b = 0

$obecna_b = 0

ExitLoop

EndIf

Next

EndIf

If $pole_data[$i1][$i2] = "" Then

$puste += 1

 

For $i = 1 To 4

If $pole_data[$i1][$i2 + $i] = "" Then

$puste += 1

Else

$puste = 0

ExitLoop

EndIf

Next

If $puste = 5 Then

$dir = 6

EndIf

EndIf

$puste = 0

If $obecna_b > $naj_b Then

$naj_b = $obecna_b

$direction_b = $direction_tmp_b

$kordy_x_b = $i1

$kordy_y_b = $i2

EndIf

Next

Next

 

For $i1 = 5 To $kol ; lewy dolny rog

For $i2 = 1 To $wier - 4

$obecna_b = 0

If $pole_data[$i1][$i2] = "O" Then

$obecna_b += 1

$direction_tmp_b = 7

For $i = 1 To 4

If $pole_data[$i1 - $i][$i2 + $i] = "O" Then

$obecna_b += 1

ElseIf $pole_data[$i1 - $i][$i2 + $i] = "X" Then

$direction_tmp_b = 0

$obecna_b = 0

ExitLoop

EndIf

Next

EndIf

If $pole_data[$i1][$i2] = "" Then

$puste += 1

 

For $i = 1 To 4

If $pole_data[$i1 - $i][$i2 + $i] = "" Then

$puste += 1

Else

$puste = 0

ExitLoop

EndIf

Next

If $puste = 5 Then

$dir = 7

EndIf

EndIf

$puste = 0

If $obecna_b > $naj_b Then

$naj_b = $obecna_b

$direction_b = $direction_tmp_b

$kordy_x_b = $i1

$kordy_y_b = $i2

EndIf

Next

Next

 

For $i1 = 5 To $kol ; lewo

For $i2 = 1 To $wier

$obecna_b = 0

If $pole_data[$i1][$i2] = "O" Then

$obecna_b += 1

$direction_tmp_b = 8

 

For $i = 1 To 4

If $pole_data[$i1 - $i][$i2] = "O" Then

$obecna_b += 1

ElseIf $pole_data[$i1 - $i][$i2] = "X" Then

$direction_tmp_b = 0

$obecna_b = 0

ExitLoop

EndIf

Next

EndIf

If $pole_data[$i1][$i2] = "" Then

$puste += 1

 

For $i = 1 To 4

If $pole_data[$i1 - $i][$i2] = "" Then

$puste += 1

Else

$puste = 0

ExitLoop

EndIf

Next

If $puste = 5 Then

$dir = 8

EndIf

EndIf

$puste = 0

If $obecna_b > $naj_b Then

$naj_b = $obecna_b

$direction_b = $direction_tmp_b

$kordy_x_b = $i1

$kordy_y_b = $i2

EndIf

Next

Next

;to koniec sprawdzania

; DO WYGRANEJ KOMPUERA

;MsgBox(64, "robie", $naj)

Sleep(250)

 

$k = 4 ; ta zmienna zawiera liczbe ktora sprawdza czy jest takie zmiejsce z tylko znakami w rzedzie uzywajac zmiennej $naj z powyzszego kodu AL

$k1 = 4

Do

For $i = 1 To 1 ;ustrawienia kolejnosci tych operacji dla poszczegolnych poziomow trudnosci

;dla trudnego opcjonalnie jest 4,3,2,1,

If GUICtrlRead($r3) = $gui_checked And $k1 = 1 Then ;latwy

$k = 1

$k1 -= 1

ExitLoop

EndIf

If GUICtrlRead($r3) = $gui_checked And $k1 = 2 Then

;~ $tmp_tmp = random(1, 3, 1)

;~ if $tmp_tmp = 2 then $tmp_tmp = 3

$k = 1

$k1 -= 1

ExitLoop

EndIf

If GUICtrlRead($r3) = $gui_checked And $k1 = 3 Then

$k = 3

If $k > 2 Then $k = 2

$k1 -= 1

ExitLoop

EndIf

If GUICtrlRead($r3) = $gui_checked And $k1 = 4 Then

$k = 4

$k1 -= 1

ExitLoop

EndIf ;koniec //latwy

 

If GUICtrlRead($r4) = $gui_checked And $k1 = 1 Then ;sredni

$k = 1

$k1 -= 1

ExitLoop

EndIf

If GUICtrlRead($r4) = $gui_checked And $k1 = 2 Then

$k = Random(1, 3, 1)

If $k = 1 Then $k = 2

 

$k1 -= 1

ExitLoop

EndIf

If GUICtrlRead($r4) = $gui_checked And $k1 = 3 Then

 

$k = 2

 

$k1 -= 1

ExitLoop

EndIf

If GUICtrlRead($r4) = $gui_checked And $k1 = 4 Then

$k = 4

$k1 -= 1

ExitLoop

EndIf ;koniec // sredni

 

Next

 

;msgbox(64, "asd", $kordy_x & " --- " & $kordy_y & " --- " & $kordy_x_b & " --- " & $kordy_y_b & " --- " & $direction & " --- " & $direction_b& " --- " & $naj& " --- " & $naj_ B)

 

;MsgBox(64, "robie", $naj)

If $naj_b = $k And $kordy_x <> 0 And $kordy_y <> 0 Then ;jezeli trafilismy najwieksza liczba takich samycuh znakow w jednym kierunku w zmienna $k to (z kordy_x ..itd to jest zabezpieczenie zeby poza tablice nie wychodzilo)

;MsgBox(64, "robie", "robie a12121")

If $direction_b = 1 Then ;gorny lewy rog

; MsgBox(64, "robie", "robie a777")

For $a = 1 To 4

; MsgBox(64, "robie", "robie a")

If $pole_data[$kordy_x_b - $a][$kordy_y_b - $a] = "" Then ;sprawdza po kolei pola

GUICtrlSetData($pole[$kordy_x_b - $a][$kordy_y_b - $a], "O") ;jesli znajdzie puste w odleglosci do 5 kratek to stawia o

$zapisx[$z] = $kordy_x_b - $a ;kordy do zapisu partii

$zapisy[$z] = $kordy_y_b - $a

$znaczek[$z] = "O" ;do zapisu partii

$z = $z + 1 ; ilosc ruchow

$komputer = 0 ;ustawia teraz ruch gracza

check() ;sprawdza

;powtem jest to samo tylko dla inncyh wartosci najpierw komputer sprawdza czy ma swoje 4 w rzedzie potem czy gracz tyle ma potem to smao z 3 itd itd

EndIf

Next

EndIf ;dir 1 koniec

If $direction_b = 2 Then ;gorny

For $a = 1 To 4

If $pole_data[$kordy_x_b][$kordy_y_b - $a] = "" Then

GUICtrlSetData($pole[$kordy_x_b][$kordy_y_b - $a], "O")

$zapisx[$z] = $kordy_x_b

$zapisy[$z] = $kordy_y_b - $a

$znaczek[$z] = "O"

$z = $z + 1

$komputer = 0

check()

EndIf

Next

EndIf ;dir 2 koniec

If $direction_b = 3 Then ;gorny prawy rog

For $a = 1 To 4

If $pole_data[$kordy_x_b + $a][$kordy_y_b - $a] = "" Then

GUICtrlSetData($pole[$kordy_x_b + $a][$kordy_y_b - $a], "O")

$zapisx[$z] = $kordy_x_b + $a

$zapisy[$z] = $kordy_y_b - $a

$znaczek[$z] = "O"

$z = $z + 1

$komputer = 0

check()

EndIf

Next

EndIf ;dir 3 koniec

If $direction_b = 4 Then ;4

For $a = 1 To 4

If $pole_data[$kordy_x_b + $a][$kordy_y_b] = "" Then

GUICtrlSetData($pole[$kordy_x_b + $a][$kordy_y_b], "O")

$zapisx[$z] = $kordy_x_b + $a

$zapisy[$z] = $kordy_y_b

$znaczek[$z] = "O"

$z = $z + 1

$komputer = 0

check()

EndIf

Next

EndIf ;dir 4 koniec

If $direction_b = 5 Then ;5

For $a = 1 To 4

If $pole_data[$kordy_x_b + $a][$kordy_y_b + $a] = "" Then

GUICtrlSetData($pole[$kordy_x_b + $a][$kordy_y_b + $a], "O")

$zapisx[$z] = $kordy_x_b + $a

$zapisy[$z] = $kordy_y_b + $a

$znaczek[$z] = "O"

$z = $z + 1

$komputer = 0

check()

EndIf

Next

EndIf ;dir 5 koniec

If $direction_b = 6 Then ;6

For $a = 1 To 4

If $pole_data[$kordy_x_b][$kordy_y_b + $a] = "" Then

GUICtrlSetData($pole[$kordy_x_b][$kordy_y_b + $a], "O")

$zapisx[$z] = $kordy_x_b

$zapisy[$z] = $kordy_y_b + $a

$znaczek[$z] = "O"

$z = $z + 1

$komputer = 0

check()

EndIf

Next

EndIf ;dir 6 koniec

If $direction_b = 7 Then ;7

For $a = 1 To 4

If $pole_data[$kordy_x_b - $a][$kordy_y_b + $a] = "" Then

GUICtrlSetData($pole[$kordy_x_b - $a][$kordy_y_b + $a], "O")

$zapisx[$z] = $kordy_x_b - $a

$zapisy[$z] = $kordy_y_b + $a

$znaczek[$z] = "O"

$z = $z + 1

$komputer = 0

check()

EndIf

Next

EndIf ;dir 7 koniec

If $direction_b = 8 Then ;8

For $a = 1 To 4

If $pole_data[$kordy_x_b - $a][$kordy_y_b] = "" Then

GUICtrlSetData($pole[$kordy_x_b - $a][$kordy_y_b], "O")

$zapisx[$z] = $kordy_x_b - $a

$zapisy[$z] = $kordy_y_b

$znaczek[$z] = "O"

$z = $z + 1

$komputer = 0

check()

EndIf

Next

EndIf ;dir 8 koniec

EndIf

If $naj = $k And $kordy_x <> 0 And $kordy_y <> 0 Then

; MsgBox(64, "robie", "robie a12121")

If $direction = 1 Then ;gorny lewy rog

; MsgBox(64, "robie", "robie a777")

For $a = 1 To 4

; MsgBox(64, "robie", "robie a")

If $pole_data[$kordy_x - $a][$kordy_y - $a] = "" Then

GUICtrlSetData($pole[$kordy_x - $a][$kordy_y - $a], "O")

$zapisx[$z] = $kordy_x - $a

$zapisy[$z] = $kordy_y - $a

$znaczek[$z] = "O"

$z = $z + 1

$komputer = 0

check()

EndIf

Next

EndIf ;dir 1 koniec

If $direction = 2 Then ;gorny

For $a = 1 To 4

If $pole_data[$kordy_x][$kordy_y - $a] = "" Then

GUICtrlSetData($pole[$kordy_x][$kordy_y - $a], "O")

$zapisx[$z] = $kordy_x

$zapisy[$z] = $kordy_y - $a

$znaczek[$z] = "O"

$z = $z + 1

$komputer = 0

check()

EndIf

Next

EndIf ;dir 2 koniec

If $direction = 3 Then ;gorny prawy rog

For $a = 1 To 4

If $pole_data[$kordy_x + $a][$kordy_y - $a] = "" Then

GUICtrlSetData($pole[$kordy_x + $a][$kordy_y - $a], "O")

$zapisx[$z] = $kordy_x + $a

$zapisy[$z] = $kordy_y - $a

$znaczek[$z] = "O"

$z = $z + 1

$komputer = 0

check()

EndIf

Next

EndIf ;dir 3 koniec

If $direction = 4 Then ;4

For $a = 1 To 4

If $pole_data[$kordy_x + $a][$kordy_y] = "" Then

GUICtrlSetData($pole[$kordy_x + $a][$kordy_y], "O")

$zapisx[$z] = $kordy_x + $a

$zapisy[$z] = $kordy_y

$znaczek[$z] = "O"

$z = $z + 1

$komputer = 0

check()

EndIf

Next

EndIf ;dir 4 koniec

If $direction = 5 Then ;5

For $a = 1 To 4

If $pole_data[$kordy_x + $a][$kordy_y + $a] = "" Then

GUICtrlSetData($pole[$kordy_x + $a][$kordy_y + $a], "O")

$zapisx[$z] = $kordy_x + $a

$zapisy[$z] = $kordy_y + $a

$znaczek[$z] = "O"

$z = $z + 1

$komputer = 0

check()

EndIf

Next

EndIf ;dir 5 koniec

If $direction = 6 Then ;6

For $a = 1 To 4

If $pole_data[$kordy_x][$kordy_y + $a] = "" Then

GUICtrlSetData($pole[$kordy_x][$kordy_y + $a], "O")

$zapisx[$z] = $kordy_x

$zapisy[$z] = $kordy_y + $a

$znaczek[$z] = "O"

$z = $z + 1

$komputer = 0

check()

EndIf

Next

EndIf ;dir 6 koniec

If $direction = 7 Then ;7

For $a = 1 To 4

If $pole_data[$kordy_x - $a][$kordy_y + $a] = "" Then

GUICtrlSetData($pole[$kordy_x - $a][$kordy_y + $a], "O")

$zapisx[$z] = $kordy_y + $a

$zapisy[$z] = $kordy_y_b - $a

$znaczek[$z] = "O"

$z = $z + 1

$komputer = 0

check()

EndIf

Next

EndIf ;dir 7 koniec

If $direction = 8 Then ;8

For $a = 1 To 4

If $pole_data[$kordy_x - $a][$kordy_y] = "" Then

GUICtrlSetData($pole[$kordy_x - $a][$kordy_y], "O")

$zapisx[$z] = $kordy_x - $a

$zapisy[$z] = $kordy_y

$znaczek[$z] = "O"

$z = $z + 1

$komputer = 0

check()

EndIf

Next

EndIf ;dir 8 koniec

EndIf

;$puste, $dir

$k = $k - 1

Until $k = 0

If $naj_b = 0 Then

If $puste = 5 And $kordy_x <> 0 And $kordy_y <> 0 Then

;MsgBox(64, "robie", "robie a12121")

If $dir = 1 Then ;gorny lewy rog

; MsgBox(64, "robie", "robie a777")

For $a = 1 To 4

; MsgBox(64, "robie", "robie a")

If $pole_data[$kordy_x_b - $a][$kordy_y_b - $a] = "" Then

GUICtrlSetData($pole[$kordy_x_b - $a][$kordy_y_b - $a], "O")

$zapisx[$z] = $kordy_x_b - $a

$zapisy[$z] = $kordy_y_b - $a

$znaczek[$z] = "O"

$z = $z + 1

$komputer = 0

check()

EndIf

Next

EndIf ;dir 1 koniec

If $dir = 2 Then ;gorny

For $a = 1 To 4

If $pole_data[$kordy_x_b][$kordy_y_b - $a] = "" Then

GUICtrlSetData($pole[$kordy_x_b][$kordy_y_b - $a], "O")

$zapisx[$z] = $kordy_x_b

$zapisy[$z] = $kordy_y_b - $a

$znaczek[$z] = "O"

$z = $z + 1

$komputer = 0

check()

EndIf

Next

EndIf ;dir 2 koniec

If $dir = 3 Then ;gorny prawy rog

For $a = 1 To 4

If $pole_data[$kordy_x_b + $a][$kordy_y_b - $a] = "" Then

GUICtrlSetData($pole[$kordy_x_b + $a][$kordy_y_b - $a], "O")

$zapisx[$z] = $kordy_x_b + $a

$zapisy[$z] = $kordy_y_b - $a

$znaczek[$z] = "O"

$z = $z + 1

$komputer = 0

check()

EndIf

Next

EndIf ;dir 3 koniec

If $dir = 4 Then ;4

For $a = 1 To 4

If $pole_data[$kordy_x_b + $a][$kordy_y_b] = "" Then

GUICtrlSetData($pole[$kordy_x_b + $a][$kordy_y_b], "O")

$zapisx[$z] = $kordy_x_b + $a

$zapisy[$z] = $kordy_y_b

$znaczek[$z] = "O"

$z = $z + 1

$komputer = 0

check()

EndIf

Next

EndIf ;dir 4 koniec

If $dir = 5 Then ;5

For $a = 1 To 4

If $pole_data[$kordy_x_b + $a][$kordy_y_b + $a] = "" Then

GUICtrlSetData($pole[$kordy_x_b + $a][$kordy_y_b + $a], "O")

$zapisx[$z] = $kordy_x_b + $a

$zapisy[$z] = $kordy_y_b + $a

$znaczek[$z] = "O"

$z = $z + 1

$komputer = 0

check()

EndIf

Next

EndIf ;dir 5 koniec

If $dir = 6 Then ;6

For $a = 1 To 4

If $pole_data[$kordy_x_b][$kordy_y_b + $a] = "" Then

GUICtrlSetData($pole[$kordy_x_b][$kordy_y_b + $a], "O")

$zapisx[$z] = $kordy_x_b

$zapisy[$z] = $kordy_y_b + $a

$znaczek[$z] = "O"

$z = $z + 1

$komputer = 0

check()

EndIf

Next

EndIf ;dir 6 koniec

If $dir = 7 Then ;7

For $a = 1 To 4

If $pole_data[$kordy_x_b - $a][$kordy_y_b + $a] = "" Then

GUICtrlSetData($pole[$kordy_x_b - $a][$kordy_y_b + $a], "O")

$zapisx[$z] = $kordy_x_b - $a

$zapisy[$z] = $kordy_y_b + $a

$znaczek[$z] = "O"

$z = $z + 1

$komputer = 0

check()

EndIf

Next

EndIf ;dir 7 koniec

If $dir = 8 Then ;8

For $a = 1 To 4

If $pole_data[$kordy_x_b - $a][$kordy_y_b] = "" Then

GUICtrlSetData($pole[$kordy_x_b - $a][$kordy_y_b], "O")

$zapisx[$z] = $kordy_x_b - $a

$zapisy[$z] = $kordy_y_b

$znaczek[$z] = "O"

$z = $z + 1

$komputer = 0

check()

EndIf

Next

EndIf ;dir 8 koniec

EndIf

EndIf

 

Do

$a1 = Random(1, $kol, 1)

$a2 = Random(1, $wier, 1)

 

Until $pole_data[$a1][$a2] = ""

;MsgBox(64, "ad", "random")

For $ograniczenie = 1 To 400 ;zeby sie nie zapetlil i kod sie nie zatrzymal //teoretycznie nie powinen ale mialem takie problemy

If $pole_data[$a1 + 1][$a2 + 1] = "O" Or $pole_data[$a1 + 1][$a2 + 1] = "X" Or $pole_data[$a1 - 1][$a2 - 1] = "O" Or $pole_data[$a1 - 1][$a2 - 1] = "O" Or $pole_data[$a1 + 1][$a2 - 1] = "O" Or $pole_data[$a1 + 1][$a2 - 1] = "O" Or $pole_data[$a1 - 1][$a2 + 1] = "O" Or $pole_data[$a1 - 1][$a2 + 1] = "O" Or $pole_data[$a1][$a2 + 1] = "O" Or $pole_data[$a1][$a2 + 1] = "O" Or $pole_data[$a1][$a2 - 1] = "O" Or $pole_data[$a1][$a2 - 1] = "O" Or $pole_data[$a1 - 1][$a2] = "O" Or $pole_data[$a1 - 1][$a2] = "O" Or $pole_data[$a1 + 1][$a2] = "O" Or $pole_data[$a1 + 1][$a2] = "O" Then

GUICtrlSetData($pole[$a1][$a2], "O"); stawia O losowa obok innego znaku

$zapisx[$z] = $a1;zapisuje dane ruchu

$zapisy[$z] = $a2

$znaczek[$z] = "O"

$z = $z + 1

$komputer = 0

check()

EndIf

Next

los()

EndFunc ;==>komputer

Func los() ; totalna losowa :) w szczegolnych przypadkach

 

Do

$a1 = Random(1, $kol, 1)

$a2 = Random(1, $wier, 1)

 

Until $pole_data[$a1][$a2] = ""

;MsgBox(64, "ad", "random")

GUICtrlSetData($pole[$a1][$a2], "O")

$zapisx[$z] = $a1

$zapisy[$z] = $a2

$znaczek[$z] = "O"

$z = $z + 1

$komputer = 0

check()

EndFunc ;==>los

Func profile_create() ; tworzenie profilu

$gui_profile_create = GUICreate("Nowy profil", 120, 100, $roz_x / 2, $roz_y / 2, $WS_CAPTION, BitOR($WS_EX_APPWINDOW, $WS_EX_TOOLWINDOW))

$nazwa_profilu = GUICtrlCreateInput("Nazwa profilu", 10, 10, 100, 20, $SS_CENTER)

GUICtrlSetLimit(-1, 15)

$button_create = GUICtrlCreateButton("Stwórz", 10, 40, 100, 20)

$button_powrot = GUICtrlCreateButton("Powrót", 10, 70, 100, 20)

GUISetState(@SW_SHOW, $gui_profile_create)

While 1

$czydalej = 1

$nMsg = GUIGetMsg()

Switch $nMsg

Case $button_create;tworzy profil

If GUICtrlRead($nazwa_profilu) = "" Or GUICtrlRead($nazwa_profilu) = "Nazwa profilu" Or StringLen(GUICtrlRead($nazwa_profilu)) < 4 Then

$czydalej = 0

MsgBox(48, "Błąd", "Niepoprawna nazwa pliku") ; jesli nie sa spelnone kryteria

 

Else

 

GUISetState(@SW_HIDE, $gui_profile_create)

zapisz_wynik_first($nazwa_profilu) ; zapisuje dane do pozniejszego otwarcia

 

EndIf

Case $button_powrot

GUISetState(@SW_HIDE, $gui_profile_create)

GUISetState(@SW_HIDE, $gui_profile_create)

param()

Case $GUI_EVENT_CLOSE

Exit

EndSwitch

WEnd

EndFunc ;==>profile_create

Func zapisz_wynik_first($nazwa_profilu)

DirCreate(@DocumentsCommonDir & "\Gomok")

$np = GUICtrlRead($nazwa_profilu)

 

;wiadomo

IniWrite(@DocumentsCommonDir & "\Gomok\" & $np & ".gomprof", "wyniki", "wygrane_t", 0)

IniWrite(@DocumentsCommonDir & "\Gomok\" & $np & ".gomprof", "wyniki", "przegrane_t", 0)

IniWrite(@DocumentsCommonDir & "\Gomok\" & $np & ".gomprof", "wyniki", "remisy_t", 0)

IniWrite(@DocumentsCommonDir & "\Gomok\" & $np & ".gomprof", "wyniki", "wygrane_s", 0)

IniWrite(@DocumentsCommonDir & "\Gomok\" & $np & ".gomprof", "wyniki", "przegrane_s", 0)

IniWrite(@DocumentsCommonDir & "\Gomok\" & $np & ".gomprof", "wyniki", "remisy_s", 0)

IniWrite(@DocumentsCommonDir & "\Gomok\" & $np & ".gomprof", "wyniki", "wygrane_l", 0)

IniWrite(@DocumentsCommonDir & "\Gomok\" & $np & ".gomprof", "wyniki", "przegrane_l", 0)

IniWrite(@DocumentsCommonDir & "\Gomok\" & $np & ".gomprof", "wyniki", "remisy_l", 0)

 

MsgBox(64, "Profil utworzony", "Profil został poprawnie utworzony")

 

param()

EndFunc ;==>zapisz_wynik_first

Func zapisz_wynik()

DirCreate(@DocumentsCommonDir & "\Gomok")

;zapisuje wynik zawsze po partii

 

 

IniWrite($profil, "wyniki", "wygrane_t", $wygrane_t)

IniWrite($profil, "wyniki", "przegrane_t", $przegrane_t)

IniWrite($profil, "wyniki", "remisy_t", $remisy_t)

IniWrite($profil, "wyniki", "wygrane_s", $wygrane_s)

IniWrite($profil, "wyniki", "przegrane_s", $przegrane_s)

IniWrite($profil, "wyniki", "remisy_s", $remisy_s)

IniWrite($profil, "wyniki", "wygrane_l", $wygrane_l)

IniWrite($profil, "wyniki", "przegrane_l", $przegrane_l)

IniWrite($profil, "wyniki", "remisy_l", $remisy_l)

 

 

opcje()

 

EndFunc ;==>zapisz_wynik

Func profile_open() ;otwarcie profilu

$czy_otwarty = 1

$gui_profile_open = GUICreate("Wczytaj profil", 150, 100, $roz_x / 2, $roz_y / 2, $WS_CAPTION, BitOR($WS_EX_APPWINDOW, $WS_EX_TOOLWINDOW))

$combo_wybor = FileOpenDialog("Wybierz profil", @DocumentsCommonDir & "\Gomok", "Gomok profile files (*.gomprof)") ;okno dialogowe

If $combo_wybor = "" Then param()

;~ $dodaj = FileFindFirstFile(@DocumentsCommonDir&"\Gomok\*.gomprof")

;~ if not @error then

;~ $combo_wybor &= $dodaj&"|"

;~ endif

 

;~ do

;~ $dodaj = FileFindNextFile(@DocumentsCommonDir&"\Gomok\*.gomprof")

;~ if $dodaj = "" then exitloop

;~ $combo_wybor &= $dodaj&"|"

 

 

;~ until $dodaj = ""

$profil = FileGetLongName($combo_wybor, 0) ;sciazka pliku

$profil_nazwa_dl = StringLen($profil) ;dl sciezki

$profil_nazwa_tmp = StringTrimRight($profil, 8) ;ucinamy rozszerzenie .gomprof

$profil_nazwa_tmp_2 = $profil_nazwa_tmp ;jakos tak ;d

$dlugosc_odcieta = 0

Do

 

$odciety_znak = StringRight($profil_nazwa_tmp_2, 1) ;zapisuje odciety znak

$profil_nazwa_tmp_2 = StringTrimRight($profil_nazwa_tmp_2, 1) ;ucina znak

$dlugosc_odcieta += 1 ;dodaje do ilosci ucietych znakow

 

Until $odciety_znak = "\" ;jezeli dojdzie do znaku "\" (czy wczesniejszego folderu)

;otrzymanie ze sciezki samej nazwy profilu

 

$profil_nazwa = StringRight($profil_nazwa_tmp, $dlugosc_odcieta - 1) ;wycina ze stringa sama nazwe // nizej to samo w profile_delete()

 

$nazwa_open = GUICtrlCreateInput($profil_nazwa, 10, 10, 100, 20, $ES_AUTOHSCROLL)

$button_replay = GUICtrlCreateButton("...", 110, 10, 30, 20)

$button_wczytaj = GUICtrlCreateButton("Wczytaj profil", 10, 40, 130, 20)

$button_powrot_2 = GUICtrlCreateButton("Powrót", 10, 70, 130, 20)

 

GUISetState(@SW_SHOW, $gui_profile_open)

While 1

$nMsg = GUIGetMsg()

Switch $nMsg

Case $button_replay

GUISetState(@SW_HIDE, $gui_profile_open)

profile_open()

Case $button_wczytaj

 

;po wczytaniu ustawia zmienne na 00 i zapisuje plik

$czy_otwarty = 1

$wygrane_t = 0

$wygrane_s = 0

$przegrane_t = 0

$przegrane_s = 0

$przegrane_l = 0

$remisy_t = 0

$remisy_s = 0

$remisy_l = 0

 

 

$wygrane_t = IniRead($profil, "wyniki", "wygrane_t", 0)

$przegrane_t = IniRead($profil, "wyniki", "przegrane_t", 0)

$remisy_t = IniRead($profil, "wyniki", "remisy_t", 0)

$wygrane_s = IniRead($profil, "wyniki", "wygrane_s", 0)

$przegrane_s = IniRead($profil, "wyniki", "przegrane_s", 0)

$remisy_s = IniRead($profil, "wyniki", "remisy_s", 0)

$wygrane_l = IniRead($profil, "wyniki", "wygrane_l", 0)

$przegrane_l = IniRead($profil, "wyniki", "przegrane_l", 0)

$remisy_l = IniRead($profil, "wyniki", "remisy_l", 0)

$wygrane_l = 0

;ustawia pola w gui na 0

GUICtrlSetData($label_w_l, "Wygrane: " & $wygrane_l)

GUICtrlSetData($label_w_s, "Wygrane: " & $wygrane_s)

GUICtrlSetData($label_w_t, "Wygrane: " & $wygrane_t)

GUICtrlSetData($label_p_l, "Przegrane: " & $przegrane_l)

GUICtrlSetData($label_p_s, "Przegrane: " & $przegrane_s)

GUICtrlSetData($label_p_t, "Przegrane: " & $przegrane_t)

GUICtrlSetData($label_r_l, "Remisy: " & $remisy_l)

GUICtrlSetData($label_r_s, "Remisy: " & $remisy_s)

GUICtrlSetData($label_r_t, "Remisy: " & $remisy_t)

MsgBox(64, "Profil", "profil został pomyślnie wczytany")

GUISetState(@SW_HIDE, $gui_profile_open)

param()

Case $button_powrot_2

GUISetState(@SW_HIDE, $gui_profile_open)

param()

Case $GUI_EVENT_CLOSE

Exit

EndSwitch

WEnd

EndFunc ;==>profile_open

Func profile_delete() ;usuwa profil

 

$gui_profile_delete = GUICreate("Usuń profil", 150, 100, $roz_x / 2, $roz_y / 2, $WS_CAPTION, BitOR($WS_EX_APPWINDOW, $WS_EX_TOOLWINDOW))

$sciezka_delete_plik = FileOpenDialog("Wybierz profil", @DocumentsCommonDir & "\Gomok", "Gomok profile files (*.gomprof)") ;wybow lokalizacji

If $sciezka_delete_plik = "" Then param()

;~ $combo_wybor = "Treningowy|"

;~ $dodaj = FileFindFirstFile("*.gomprof")

;~ $combo_wybor &= $dodaj & "|"

 

;~ Do

;~ $dodaj = FileFindNextFile("*.gomprof")

;~ $combo_wybor &= $dodaj & "|"

 

;~ Until @error = 1

$profil_delete = FileGetLongName($sciezka_delete_plik, 0)

$profil_nazwa_dl = StringLen($profil_delete)

$profil_nazwa_tmp = StringTrimRight($profil_delete, 8)

$nazwa_delete_plik = $profil_nazwa_tmp

$dlugosc_odcieta = 0

Do

 

$odciety_znak = StringRight($nazwa_delete_plik, 1)

$nazwa_delete_plik = StringTrimRight($nazwa_delete_plik, 1)

$dlugosc_odcieta += 1

 

Until $odciety_znak = "\"

;otrzymanie ze sciezki samej nazwy profilu

$nazwa_delete_plik = StringRight($profil_nazwa_tmp, $dlugosc_odcieta - 1)

$nazwa_delete = GUICtrlCreateInput($nazwa_delete_plik, 10, 10, 100, 20, $SS_CENTER)

$button_replay_2 = GUICtrlCreateButton("...", 110, 10, 30, 20)

$button_usun = GUICtrlCreateButton("Usuń profil", 10, 40, 130, 20)

$button_powrot_3 = GUICtrlCreateButton("Powrót", 10, 70, 130, 20)

 

GUISetState(@SW_SHOW, $gui_profile_delete)

While 1

$nMsg = GUIGetMsg()

Switch $nMsg

Case $button_replay_2

GUISetState(@SW_HIDE, $gui_profile_delete)

profile_delete()

Case $button_usun

$file = GUICtrlRead($nazwa_delete)

If $nazwa_delete_plik = $profil_nazwa Then

GUISetState(@SW_HIDE, $gui_profile_delete)

MsgBox(48, "Błąd", "Ten profil jest aktualnie wczytany.. nie możesz go usunąć.")

 

profile_delete()

EndIf

$msgbox2 = MsgBox(292, "", "Czy napewno chesz usunąć ten profil?") ;pyta sie

Select

Case $msgbox2 = 6 ;Yes

FileDelete($sciezka_delete_plik)

MsgBox(64, "Usuń", "Plik został pomyślnie usunięty") ;usunal :)

GUISetState(@SW_HIDE, $gui_profile_delete)

param()

Case $msgbox2 = 7 ;No

GUISetState(@SW_HIDE, $gui_profile_delete)

profile_delete()

EndSelect

 

 

Case $button_powrot_3

GUISetState(@SW_HIDE, $gui_profile_delete)

param()

Case $GUI_EVENT_CLOSE

Exit

EndSwitch

WEnd

EndFunc ;==>profile_delete

 

 

 

 

Od razu piszę, że to byłu moje początki nauki w autoit (2-3 miechy) i wiele rzeczy dopiero się uczyłem pisząc tą grę, więc nie piszcie mi, że jest niepożądny, zagmatwany itp.bo ja to wiem, ale na razie nie chce mi się tego poprawiać.

 

 

@edit

za dużo kodu i nie che go uporządkować -.-

@edit 2

jak ktoś chce z wcięciami to prosze http://wklej.org/id/624253/

 

 

Proszę moderatora o dodanie prefixu tematu "[Gra]"

Opublikowano

Super gra, bardzo wciągające, ale ile linijek kodu .. Nie do opisania.

  • 4 tygodnie później...
  • 2 miesiące temu...
Opublikowano
kurwa, nieda sie wygrac z cpu -.- ani przegrać

da się wygrać, da się przegrać.

 

hahahahha, ale gowno!

Nie ma to jak czepiać się tekstów w programie -.-

 

 

Napisz dokładniej o co chodzi i w jakich okolicznościach to się dzieje. Ja nie wierze, że wystąpiły takie błędy.

Opublikowano

jak ja gralem to tak szybciutko, myk myk i nagle bug, może zrób jakieś timery(do wkurwiana ludzi) aby się nie bugowało

player vs cpu łatwy(bo cpu by się jeszcze poplakal) 7x7

  • 6 miesięcy temu...
  • 2 lata później...
Opublikowano

A mi się gra podoba :D. Tylko że z pewnością dałoby się mniej kodu, a im więcej kodu, tym wolniejsza gra.

jw19e8.png

  • 1 rok później...

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...