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

[Q] Jak napisać grę - szachy?


M4Sell

Rekomendowane odpowiedzi

Opublikowano

Chodzi mi o grę szachy, ale jest 1 ważny szczegół : P

Aby były tylko 2 konie vs 2 konie ; D

I aby poruszały się zwykłymi swoimi ruchami ; P

70489962284954469327.png


Opublikowano

hfaua rozjebał system xD

 

Po pierwsze - tablice dwuwymiarowe

W jednej musi być na pewno pozycja pionków która będzie 'niewidzialna', używana tylko w pamięci, a druga może być do kontrolek na GUI żeby zachować porządek.

Przyda też się "Enum" dla zachowania porządku w grze :D

 

Możesz zrobić ileśtam GUICtrlCreatePic w GUI, a potem pod wszystkie GUICtrlSetOnEvent, przypisać do jednej funkcji, użyć @GUI_CtrlHandle albo @GUI_CtrlId do sprawdzenia jaka kontrolka i przesunąć tam obrazek oraz w tablicy z pionkami 'przesunąć pionka'.

 

Napisałbym więcej, ale nie mam czasu :D

846331404756772371599.jpeg
Opublikowano

A warna dostałem... :(

 

Żebym drugiego nie dostał, to pisze, że możesz poszukać gdzieś, bo dawałem warcaby jakieś kiedyś chyba :) Konkurs jakiś czy coś... ;] Musisz sprawdzać ruchy myszki, zmieniać na jej podstawie położenie koni, sprawdzać czy taki ruch jest dozwolony i rysować wszystko na ekranie. Do tego przy każdym ruchu sprawdzać, czy ktoś nie dał konia na pole na którym jest koń innego gracza, albo jego samego. W pierwszym przypadku bije go i sprawdza czy wygrał <czyli, czy tamten jeszcze ma jakieś pionki>, a w drugim nie wykonuje ruchu :)

Opublikowano

Ogólnie musisz użyć tablic 2-wymiarowych, w których będziesz wpisywał ID figury Proponuję do tego obrazki na OnEvent, wybierasz figurę, on się podświetla, potem klikasz pole, a program sprawdza, czy figura o danym ID może się ruszyć w takim kierunku i sprawdzi, czy żadna figura nie stoi na drodze - dosyć proste, ale dużo kodu. Jutro mogę Ci coś nabazgrać jak nie wpadniesz sam na to jak dokładanie to ma wyglądać.

Law of Revelation: The hidden flaw never remains hidden.

Opublikowano

Całego za Ciebie nie zrobię, ale dam szkic, który zrobiłem wczoraj:

https://skydrive.live.com/redir?resid=1B9EC8947ED5A279!14237&authkey=!APZ_nNb0VLkPLE8

 

Opt("GuiOnEventMode", 1)
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Global $Locations[2][2]=[[3,4],[5,2]]
$Form1 = GUICreate("Wefhy's Chess", 600, 600, 100, 100, Default, $WS_EX_LAYERED)
GUISetOnEvent(-3, "_Exit")
For $temp1=1 to 8
For $temp2=1 to 8
If Mod($temp1+$temp2, 2) Then
ConsoleWrite("Created: " &GUICtrlCreatePic("Black.jpg", _GetPix($temp1), _GetPix($temp2), 64, 64)&" black" & @CRLF)
GUICtrlSetOnEvent(-1, "x")
Else
ConsoleWrite("Created: " &GUICtrlCreatePic("White.jpg", _GetPix($temp1), _GetPix($temp2), 64, 64)&" white" & @CRLF)
GUICtrlSetOnEvent(-1, "x")
EndIf
Next
Next
$1=GUICtrlCreatePic("Koń.bmp", _GetPix($Locations[0][0]), _GetPix($Locations[0][1]), 64, 64)
$2=GUICtrlCreatePic("Koń.bmp", _GetPix($Locations[1][0]), _GetPix($Locations[1][1]), 64, 64)
GUISetState(@SW_SHOW)
While 1
Sleep(50)
WEnd
Func _GetPix($pole)
Return $pole*65-64
EndFunc
Func x()
GUICtrlDelete(@GUI_CtrlId)
ConsoleWrite("ID: "&@GUI_CtrlId&@CRLF)
EndFunc
Func _Select()
;GUICtrlCreatePic("Selected.bmp", _GetPix($Locations[0]), _GetPix($Locations[1]), 64, 64)
EndFunc
Func _Exit()
Exit
EndFunc

 

 

W zmiennej locations zapisujesz położenia figur, musisz jeszcze dodać zmienną tablicową odpowiadającą ID wszystkich kolejnych pół(to jak sprawdzić ID pola pokazałem robiąc GUICtrlDelete), potem przy sprawdzaniu ID pola, które zostało kliknięte jesteś w stanie określić jego współrzędne, to czy jest tam jakaś figura itp.

 

W pliku masz rar z grafikami, nie czepiajcie się, że złe, ale "tworzyć z niczego" nie potrafię, umiem tylko łączyć gotowe grafiki.

Law of Revelation: The hidden flaw never remains hidden.

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...