Gra kółko i krzyżyk

0

Witam. Potrzebuję pomocy. Mam program napisany w Delphi (gra kółko i krzyżyk pomiędzy klientem a serwerem) nie mam pojęcia jak poprawić błędy, a znalazłem ich kilka. Oto one (możliwe, że jest ich więcej):

-po rozegranej partii nie czyści ekranu po stronie serwera.

-przy nie rozstrzygnięciu gry (X u serwera) u klienta pojawia się, ze jest jeszcze ruch przeciwnika (nie można dać nowej partii, trzeba rozłączyć grę).

-jeśli się gra jako O po stronie serwera (a nie X) to gra dobrze pokazuje, ze jest nie rozstrzygnieta.

-gdy gra sie jako X po stronie serwera i wygrał klient (O), to u klienta pokazuje, ze jest jeszcze ruch przeciwnika

-gra po obu stronach pokazuje, ze jest nie rozstrzygnięta lub ruch przeciwnika, gdy serwer jest O (a klient powinien wygrać)

-jak się naciska nowa gra to nieraz nie kasuje ani po jednej stronie ani po drugiej (zostaje wygrał gracz)

Jak widać błędy dotyczą działania gry. Będę wdzięczny za pomoc. Jeżeli ktoś potrafi to proszę poprawić kod. Wydaje mi się, że dla osoby, która zna dobrze Delphi zadanie to nie jest bardzo trudne. Z góry dziękuję za pomoc.

Kod klient:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, ScktComp, Buttons, ExtCtrls;

type
TForm1 = class(TForm)
klient: TClientSocket;
Edit1: TEdit;
Label1: TLabel;
Button1: TButton;
StatusBar: TStatusBar;
Edit2: TEdit;
Label2: TLabel;
Button2: TButton;
pole: TPanel;
a11: TSpeedButton;
a12: TSpeedButton;
a13: TSpeedButton;
a21: TSpeedButton;
a22: TSpeedButton;
a23: TSpeedButton;
a31: TSpeedButton;
a32: TSpeedButton;
a33: TSpeedButton;
odp: TLabel;
procedure Button1Click(Sender: TObject);
procedure klientConnect(Sender: TObject; Socket: TCustomWinSocket);
procedure klientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
procedure klientConnecting(Sender: TObject; Socket: TCustomWinSocket);
procedure klientRead(Sender: TObject; Socket: TCustomWinSocket);
procedure Button2Click(Sender: TObject);
procedure a11Click(Sender: TObject);
procedure a12Click(Sender: TObject);
procedure a13Click(Sender: TObject);
procedure a21Click(Sender: TObject);
procedure a22Click(Sender: TObject);
procedure a23Click(Sender: TObject);
procedure a31Click(Sender: TObject);
procedure a32Click(Sender: TObject);
procedure a33Click(Sender: TObject);
procedure zero();
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
gracz: string;

implementation

{$R *.dfm}

procedure TForm1.zero();
begin
a11.Caption := '';
a12.Caption := '';
a13.Caption := '';
a21.Caption := '';
a22.Caption := '';
a23.Caption := '';
a31.Caption := '';
a32.Caption := '';
a33.Caption := '';
odp.Caption := '';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if Button1.Caption = 'Polacz' then
begin
klient.Port := STRtoINTDEF(Edit2.Text,3500);
klient.Host := Edit1.Text;
klient.Active := True;
Button1.Caption := 'Rozlacz';
end
else
begin
Button1.Caption := 'Polacz';
klient.Active := FALSE;
end;

end;

procedure TForm1.klientConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
Button2.Enabled := True;
StatusBar.SimpleText := 'Polaczony.';
end;

procedure TForm1.klientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Button2.Enabled := false;
StatusBar.SimpleText := 'Rozlaczony.';
Button1.Caption := 'Polacz';
klient.Active := FALSE;
pole.Enabled := FALSE;
end;

procedure TForm1.klientConnecting(Sender: TObject;
Socket: TCustomWinSocket);
begin
StatusBar.SimpleText := 'Poczekaj na akceptacje.';
end;

procedure TForm1.klientRead(Sender: TObject; Socket: TCustomWinSocket);
var
buf: string;
begin
buf := Socket.ReceiveText;
if Pos(buf,'wygralX') > 0 then
begin
odp.Caption := 'Wygral gracz X';
button2.Enabled := TRUE;
pole.Enabled := FALSE;
end;
if Pos(buf,'wygralO') > 0 then
begin
odp.Caption := 'Wygral gracz O';
button2.Enabled := TRUE;
pole.Enabled := FALSE;
end;
if Pos(buf,'remis') > 0 then
begin
odp.Caption := 'Gra nie roztrzygnieta.';
button2.Enabled := TRUE;
pole.Enabled := FALSE;
end;
if Pos(buf,'XX') > 0 then
begin
StatusBar.SimpleText := 'Grasz jako X';
gracz := 'X';
pole.Enabled := TRUE;
odp.Caption := 'Twój ruch.';
end;
if Pos(buf,'OO') > 0 then
begin
StatusBar.SimpleText := 'Grasz jako O';
gracz := 'O';
pole.Enabled := TRUE;
odp.Caption := 'Twój ruch.';
end;
////////////////////////
if Pos(buf,'a11') > 0 then
begin
if gracz = 'X' then
a11.Caption := 'O'
else
a11.Caption := 'X';
pole.Enabled := TRUE;
odp.Caption := 'Twój ruch.';
end;
if Pos(buf,'a12') > 0 then
begin
if gracz = 'X' then
a12.Caption := 'O'
else
a12.Caption := 'X';
pole.Enabled := TRUE;
odp.Caption := 'Twój ruch.';
end;
if buf = 'a13' then
begin
if gracz = 'X' then
a13.Caption := 'O'
else
a13.Caption := 'X';
pole.Enabled := TRUE;
odp.Caption := 'Twój ruch.';
end;
if Pos(buf,'a21') > 0 then
begin
if gracz = 'X' then
a21.Caption := 'O'
else
a21.Caption := 'X';
pole.Enabled := TRUE;
odp.Caption := 'Twój ruch.';
end;
if Pos(buf,'a22') > 0 then
begin
if gracz = 'X' then
a22.Caption := 'O'
else
a22.Caption := 'X';
pole.Enabled := TRUE;
odp.Caption := 'Twój ruch.';
end;
if Pos(buf,'a23') > 0 then
begin
if gracz = 'X' then
a23.Caption := 'O'
else
a23.Caption := 'X';
pole.Enabled := TRUE;
odp.Caption := 'Twój ruch.';
end;
if Pos(buf,'a31') > 0 then
begin
if gracz = 'X' then
a31.Caption := 'O'
else
a31.Caption := 'X';
pole.Enabled := TRUE;
odp.Caption := 'Twój ruch.';
end;
if Pos(buf,'a32') > 0 then
begin
if gracz = 'X' then
a32.Caption := 'O'
else
a32.Caption := 'X';
pole.Enabled := TRUE;
odp.Caption := 'Twój ruch.';
end;
if Pos(buf,'a33') > 0 then
begin
if gracz = 'X' then
a33.Caption := 'O'
else
a33.Caption := 'X';
pole.Enabled := TRUE;
odp.Caption := 'Twój ruch.';
end;
buf := '';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
klient.Socket.SendText('gra');
zero();
button2.Enabled := FALSE;
StatusBar.SimpleText := 'Oczekuje na wybranie gracza';
end;

procedure TForm1.a11Click(Sender: TObject);
begin
if a11.Caption = '' then
begin
klient.Socket.SendText('a11');
pole.Enabled := FALSE;
a11.Caption := gracz;
odp.Caption := 'Ruch przeciwnika';
end;
end;

procedure TForm1.a12Click(Sender: TObject);
begin
if a12.Caption = '' then
begin
klient.Socket.SendText('a12');
pole.Enabled := FALSE;
a12.Caption := gracz;
odp.Caption := 'Ruch przeciwnika';
end;
end;

procedure TForm1.a13Click(Sender: TObject);
begin
if a13.Caption = '' then
begin
klient.Socket.SendText('a13');
pole.Enabled := FALSE;
a13.Caption := gracz;
odp.Caption := 'Ruch przeciwnika';
end;
end;

procedure TForm1.a21Click(Sender: TObject);
begin
if a21.Caption = '' then
begin
klient.Socket.SendText('a21');
pole.Enabled := FALSE;
a21.Caption := gracz;
odp.Caption := 'Ruch przeciwnika';
end;
end;

procedure TForm1.a22Click(Sender: TObject);
begin
if a22.Caption = '' then
begin
klient.Socket.SendText('a22');
pole.Enabled := FALSE;
a22.Caption := gracz;
odp.Caption := 'Ruch przeciwnika';
end;
end;

procedure TForm1.a23Click(Sender: TObject);
begin
if a23.Caption = '' then
begin
klient.Socket.SendText('a23');
pole.Enabled := FALSE;
a23.Caption := gracz;
odp.Caption := 'Ruch przeciwnika';
end;
end;

procedure TForm1.a31Click(Sender: TObject);
begin
if a31.Caption = '' then
begin
klient.Socket.SendText('a31');
pole.Enabled := FALSE;
a31.Caption := gracz;
odp.Caption := 'Ruch przeciwnika';
end;
end;

procedure TForm1.a32Click(Sender: TObject);
begin
if a32.Caption = '' then
begin
klient.Socket.SendText('a32');
pole.Enabled := FALSE;
a32.Caption := gracz;
odp.Caption := 'Ruch przeciwnika';
end;
end;

procedure TForm1.a33Click(Sender: TObject);
begin
if a33.Caption = '' then
begin
klient.Socket.SendText('a33');
pole.Enabled := FALSE;
a33.Caption := gracz;
odp.Caption := 'Ruch przeciwnika';
end;
end;

end.

Kod serwer:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, ScktComp, Buttons, ExtCtrls;

type
TForm1 = class(TForm)
serwer: TServerSocket;
StatusBar: TStatusBar;
Button3: TButton;
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
Button2: TButton;
pole: TPanel;
a11: TSpeedButton;
a12: TSpeedButton;
a13: TSpeedButton;
a21: TSpeedButton;
a22: TSpeedButton;
a23: TSpeedButton;
a31: TSpeedButton;
a32: TSpeedButton;
a33: TSpeedButton;
odp: TLabel;
procedure serwerAccept(Sender: TObject; Socket: TCustomWinSocket);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure serwerClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
procedure serwerClientConnect(Sender: TObject; Socket: TCustomWinSocket);
procedure serwerClientRead(Sender: TObject; Socket: TCustomWinSocket);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure a21Click(Sender: TObject);
procedure a11Click(Sender: TObject);
procedure a12Click(Sender: TObject);
procedure a13Click(Sender: TObject);
procedure a22Click(Sender: TObject);
procedure a23Click(Sender: TObject);
procedure a31Click(Sender: TObject);
procedure a32Click(Sender: TObject);
procedure a33Click(Sender: TObject);
procedure sprawdz(znak: string);
procedure zero();
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
gracz: string;

implementation

{$R *.dfm}
procedure TForm1.zero();
begin
a11.Caption := '';
a12.Caption := '';
a13.Caption := '';
a21.Caption := '';
a22.Caption := '';
a23.Caption := '';
a31.Caption := '';
a32.Caption := '';
a33.Caption := '';
odp.Caption := '';
end;

procedure TForm1.sprawdz(znak: string);
var
koniec: integer;
begin
koniec := 0;
if (a11.Caption = znak) and (a21.Caption = znak) and (a31.Caption = znak) and (koniec = 0) then
begin
odp.Caption := 'Wygral gracz '+znak;
pole.Enabled := FALSE;
koniec := 1;
serwer.Socket.Connections[serwer.Socket.ActiveConnections -1].SendText('wygral'+znak);
end;
if (a12.Caption = znak) and (a22.Caption = znak) and (a32.Caption = znak) and (koniec = 0) then
begin
odp.Caption := 'Wygral gracz '+znak;
pole.Enabled := FALSE;
koniec := 1;
serwer.Socket.Connections[serwer.Socket.ActiveConnections -1].SendText('wygral'+znak);
end;
if (a13.Caption = znak) and (a23.Caption = znak) and (a33.Caption = znak) and (koniec = 0) then
begin
odp.Caption := 'Wygral gracz '+znak;
pole.Enabled := FALSE;
koniec := 1;
serwer.Socket.Connections[serwer.Socket.ActiveConnections -1].SendText('wygral'+znak);
end;
if (a11.Caption = znak) and (a12.Caption = znak) and (a13.Caption = znak) and (koniec = 0) then
begin
odp.Caption := 'Wygral gracz '+znak;
pole.Enabled := FALSE;
koniec := 1;
serwer.Socket.Connections[serwer.Socket.ActiveConnections -1].SendText('wygral'+znak);
end;
if (a21.Caption = znak) and (a22.Caption = znak) and (a23.Caption = znak) and (koniec = 0) then
begin
odp.Caption := 'Wygral gracz '+znak;
pole.Enabled := FALSE;
koniec := 1;
serwer.Socket.Connections[serwer.Socket.ActiveConnections -1].SendText('wygral'+znak);
end;
if (a31.Caption = znak) and (a32.Caption = znak) and (a33.Caption = znak) and (koniec = 0) then
begin
odp.Caption := 'Wygral gracz '+znak;
pole.Enabled := FALSE;
koniec := 1;
serwer.Socket.Connections[serwer.Socket.ActiveConnections -1].SendText('wygral'+znak);
end;
if (a11.Caption = znak) and (a22.Caption = znak) and (a33.Caption = znak) and (koniec = 0) then
begin
odp.Caption := 'Wygral gracz '+znak;
pole.Enabled := FALSE;
koniec := 1;
serwer.Socket.Connections[serwer.Socket.ActiveConnections -1].SendText('wygral'+znak);
end;
if (a13.Caption = znak) and (a22.Caption = znak) and (a31.Caption = znak) and (koniec = 0) then
begin
odp.Caption := 'Wygral gracz '+znak;
pole.Enabled := FALSE;
koniec := 1;
serwer.Socket.Connections[serwer.Socket.ActiveConnections -1].SendText('wygral'+znak);
end;
if (a11.Caption <> ) and (a12.Caption <> ) and (a13.Caption <> ) and (a21.Caption <> ) and (a22.Caption <> ) and (a23.Caption <> ) and (a31.Caption <> ) and (a32.Caption <> ) and (a33.Caption <> '') and (koniec = 0) then
begin
odp.Caption := 'Gra nie roztrzygnieta.';
pole.Enabled := FALSE;
koniec := 1;
serwer.Socket.Connections[serwer.Socket.ActiveConnections -1].SendText('remis');
end;
end;

procedure TForm1.serwerAccept(Sender: TObject; Socket: TCustomWinSocket);
begin
if Application.MessageBox('Akceptujesz polaczenie?','Proba polaczenia',MB_YesNo) = ID_NO then
begin
serwer.Close;
StatusBar.SimpleText := 'Oczekuje ...';
end
else
begin
StatusBar.SimpleText := 'Połączenie z: ' + Socket.RemoteAddress;
end;
serwer.Open;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Serwer.Port := STRtoINTDEF(Edit1.text,3500);
if button3.Caption = 'Serwer [off]' then
begin
serwer.Active := TRUE;
button3.Caption := 'Serwer [on]';
StatusBar.SimpleText := 'Oczekuje ...';
end
else
begin
serwer.Active := FALSE;
button3.Caption := 'Serwer [off]';
StatusBar.SimpleText := '';
button2.Enabled := FALSE;
button1.Enabled := FALSE;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Serwer.Active := false;
end;

procedure TForm1.serwerClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
StatusBar.SimpleText := 'Oczekuje ...';
button2.Enabled := FALSE;
button1.Enabled := FALSE;
end;

procedure TForm1.serwerClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
StatusBar.SimpleText := 'Proba polaczenia z: ' + Socket.RemoteAddress;
end;

procedure TForm1.serwerClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
buf: string;
begin
buf := Socket.ReceiveText;
if Pos(buf,'gra') > 0 then
begin
StatusBar.SimpleText := 'Wybiez czy grasz O czy X';
button2.Enabled := TRUE;
button1.Enabled := TRUE;
end;
////////////////////////
if Pos(buf,'a11') > 0 then
begin
if gracz = 'X' then
a11.Caption := 'O'
else
a11.Caption := 'X';
pole.Enabled := TRUE;
odp.Caption := 'Twój ruch.';
end;
if Pos(buf,'a12') > 0 then
begin
if gracz = 'X' then
a12.Caption := 'O'
else
a12.Caption := 'X';
pole.Enabled := TRUE;
odp.Caption := 'Twój ruch.';
end;
if Pos(buf,'a13') > 0 then
begin
if gracz = 'X' then
a13.Caption := 'O'
else
a13.Caption := 'X';
pole.Enabled := TRUE;
odp.Caption := 'Twój ruch.';
end;
if Pos(buf,'a21') > 0 then
begin
if gracz = 'X' then
a21.Caption := 'O'
else
a21.Caption := 'X';
pole.Enabled := TRUE;
odp.Caption := 'Twój ruch.';
end;
if Pos(buf,'a22') > 0 then
begin
if gracz = 'X' then
a22.Caption := 'O'
else
a22.Caption := 'X';
pole.Enabled := TRUE;
odp.Caption := 'Twój ruch.';
end;
if Pos(buf,'a23') > 0 then
begin
if gracz = 'X' then
a23.Caption := 'O'
else
a23.Caption := 'X';
pole.Enabled := TRUE;
odp.Caption := 'Twój ruch.';
end;
if Pos(buf,'a31') > 0 then
begin
if gracz = 'X' then
a31.Caption := 'O'
else
a31.Caption := 'X';
pole.Enabled := TRUE;
odp.Caption := 'Twój ruch.';
end;
if Pos(buf,'a32') > 0 then
begin
if gracz = 'X' then
a32.Caption := 'O'
else
a32.Caption := 'X';
pole.Enabled := TRUE;
odp.Caption := 'Twój ruch.';
end;
if Pos(buf,'a33') > 0 then
begin
if gracz = 'X' then
a33.Caption := 'O'
else
a33.Caption := 'X';
pole.Enabled := TRUE;
odp.Caption := 'Twój ruch.';
end;
sprawdz('X');
sprawdz('O');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
serwer.Socket.Connections[serwer.Socket.ActiveConnections -1].SendText('OO');
button1.Enabled := FALSE;
button2.Enabled := FALSE;
Statusbar.SimpleText := 'Grasz jako X';
pole.Enabled := TRUE;
gracz := 'X';
zero();
odp.Caption := 'Ruch przeciwnika.';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
serwer.Socket.Connections[serwer.Socket.ActiveConnections -1].SendText('XX');
button1.Enabled := FALSE;
button2.Enabled := FALSE;
Statusbar.SimpleText := 'Grasz jako O';
pole.Enabled := TRUE;
gracz := 'O';
zero();
odp.Caption := 'Ruch przeciwnika.';
end;

procedure TForm1.a21Click(Sender: TObject);
begin
if a21.Caption = '' then
begin
a21.Caption := gracz;
pole.Enabled := False;
serwer.Socket.Connections[serwer.Socket.ActiveConnections -1].SendText('a21');
odp.Caption := 'Ruch przeciwnika.';
sprawdz('X');
sprawdz('O');
end;
end;

procedure TForm1.a11Click(Sender: TObject);
begin
if a11.Caption = '' then
begin
a11.Caption := gracz;
pole.Enabled := False;
serwer.Socket.Connections[serwer.Socket.ActiveConnections -1].SendText('a11');
odp.Caption := 'Ruch przeciwnika.';
sprawdz('X');
sprawdz('O');
end;
end;

procedure TForm1.a12Click(Sender: TObject);
begin
if a12.Caption = '' then
begin
a12.Caption := gracz;
pole.Enabled := False;
serwer.Socket.Connections[serwer.Socket.ActiveConnections -1].SendText('a12');
odp.Caption := 'Ruch przeciwnika.';
sprawdz('X');
sprawdz('O');
end;
end;

procedure TForm1.a13Click(Sender: TObject);
begin
if a13.Caption = '' then
begin
a13.Caption := gracz;
pole.Enabled := False;
serwer.Socket.Connections[serwer.Socket.ActiveConnections -1].SendText('a13');
odp.Caption := 'Ruch przeciwnika.';
sprawdz('X');
sprawdz('O');
end;
end;

procedure TForm1.a22Click(Sender: TObject);
begin
if a22.Caption = '' then
begin
a22.Caption := gracz;
pole.Enabled := False;
serwer.Socket.Connections[serwer.Socket.ActiveConnections -1].SendText('a22');
odp.Caption := 'Ruch przeciwnika.';
sprawdz('X');
sprawdz('O');
end;
end;

procedure TForm1.a23Click(Sender: TObject);
begin
if a23.Caption = '' then
begin
a23.Caption := gracz;
pole.Enabled := False;
serwer.Socket.Connections[serwer.Socket.ActiveConnections -1].SendText('a23');
odp.Caption := 'Ruch przeciwnika.';
sprawdz('X');
sprawdz('O');
end;
end;

procedure TForm1.a31Click(Sender: TObject);
begin
if a31.Caption = '' then
begin
a31.Caption := gracz;
pole.Enabled := False;
serwer.Socket.Connections[serwer.Socket.ActiveConnections -1].SendText('a31');
odp.Caption := 'Ruch przeciwnika.';
sprawdz('X');
sprawdz('O');
end;
end;

procedure TForm1.a32Click(Sender: TObject);
begin
if a32.Caption = '' then
begin
a32.Caption := gracz;
pole.Enabled := False;
serwer.Socket.Connections[serwer.Socket.ActiveConnections -1].SendText('a32');
odp.Caption := 'Ruch przeciwnika.';
sprawdz('X');
sprawdz('O');
end;
end;

procedure TForm1.a33Click(Sender: TObject);
begin
if a33.Caption = '' then
begin
a33.Caption := gracz;
pole.Enabled := False;
serwer.Socket.Connections[serwer.Socket.ActiveConnections -1].SendText('a33');
odp.Caption := 'Ruch przeciwnika.';
sprawdz('X');
sprawdz('O');
end;
end;

end.

0

Lepiej wrzuć gdzieś całe źródło to może ktoś przejrzy. Ja sie nie znam na Socketach, ale taki kod bez
odpowiednich tagów i tak ciężko się czyta. Poza tym po co statyczne Buttony. Nie prościej utworzyć
dynamicznie tablicę lub dziewięć SpeedButtonów dynamicznie i przypisać im jedną procedurę OnClick.

0

najlepiej zrob to dynamicznie , i najlepiej podepnij pod wszystkie btny jedno zdarzenie a nie tworzysz 30 zdarzen

0

Żeby sprawdzić ten kod najlepiej by było wklepać go do delphi i zobaczyć jakie błędy wywala. Nie sądzę jednak aby ktoś to zrobił.

0

Bo my tu nie tworzymy przedszkola. My traktujemy programistów jak dorosłych ludzi którzy chcą otrzymać pomoc a nie rozwiązanie. A wklepanie tego do delphi nie wystarczy bo trzeba by jeszcze dodać wszystkie komponenty a komu chce sie wrzucać ręcznie 30 buttonow ?

Odpowiadamy równie profesjonalnie jak bardzo profesjonalne jest pytanie. Tu brakuje:

0

Ok. Postaram się wrzucić gdzieś źródła. Faktycznie brakuje jednego komponentu, który też dodam. Dzięki za odpowiedzi.

0

Witam. Oto link do źródeł i brakującego komponentu:

http://rapidshare.com/files/227966251/kolko_krzyzyk.zip.html

Bardzo proszę o pomoc.

0

Czy naprawdę nikt nie jest w stanie mi pomóc?

0

Może ktoś potrafi poprawić chociaż 1 błąd?

0

jest gotowy kod gry po sieci .. poszukaj sobie na google

1 użytkowników online, w tym zalogowanych: 0, gości: 1