Meraba herkese
delphi 7-de sudoku oyunu (9x9) programlamak istiyorum
hangi hücrelerin hangi rakamları alacagini önceden kendim unit-e yaziyorum [sudokugrid1.cells[8,8]:=inttostr(2); sudokugrid1.cells[2,5]:=inttostr(9);]
programın calıştıgı zaman oyuncu tarafindan benim önceden verdiyim rakamların degişire bilmemesini ve yalnızca kendisi dahil ettiklerini edit, update, delete ede bilmesini yapa bilmiyorum. Ve oyuncunun hücrelere dahil etdiği rakamların renginin farklı olması gerekir
bu 2 konuda yardima ihtiyacim var bu sitede yazdım ama hala dogru bir cevap yok:
http://stackoverflow.com/questions/2208 ... 1_22092556
önceden teşşekkurler.
Tstringgrid -de hucre deyişimi
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: Tstringgrid -de hucre deyişimi
iki tane stringgrid koy ama birisi gizli olsun. Gizli olan stringgrid, görünür olanın maskesi olsun. Ne işe yarayacak ? Şöyle özetleyim.
(1) Eğer bir hücre click edilmişse, gizli olan stringgrid'deki hücreye göre; bu hücre projen tarafından doldurulmuşsa bu işlemi geri çevirebilirsin, kullanıcı girmişse edit işlemine müsaade edersin.
(2) Aynı şekilde canvas işlemleri ile eğer kullanıcı girmişse renklendirirsin, projen vermişse istediğin farklı şekilde renklendirirsin.
Özetle: maske olarak kullanacağın stringgrid'e başvurup ona göre davrandıracaksın.
(1) Eğer bir hücre click edilmişse, gizli olan stringgrid'deki hücreye göre; bu hücre projen tarafından doldurulmuşsa bu işlemi geri çevirebilirsin, kullanıcı girmişse edit işlemine müsaade edersin.
(2) Aynı şekilde canvas işlemleri ile eğer kullanıcı girmişse renklendirirsin, projen vermişse istediğin farklı şekilde renklendirirsin.
Özetle: maske olarak kullanacağın stringgrid'e başvurup ona göre davrandıracaksın.

Re: Tstringgrid -de hucre deyişimi
Bence verdiğin linkteki kod harika! Sen sadece hangi hücreler başlangıçta dolduruluyor onları tutmak için bir değişken tanımla. Mesela:everrest yazdı:Meraba herkese
delphi 7-de sudoku oyunu (9x9) programlamak istiyorum
hangi hücrelerin hangi rakamları alacagini önceden kendim unit-e yaziyorum [sudokugrid1.cells[8,8]:=inttostr(2); sudokugrid1.cells[2,5]:=inttostr(9);]
programın calıştıgı zaman oyuncu tarafindan benim önceden verdiyim rakamların degişire bilmemesini ve yalnızca kendisi dahil ettiklerini edit, update, delete ede bilmesini yapa bilmiyorum. Ve oyuncunun hücrelere dahil etdiği rakamların renginin farklı olması gerekir
bu 2 konuda yardima ihtiyacim var bu sitede yazdım ama hala dogru bir cevap yok:
http://stackoverflow.com/questions/2208 ... 1_22092556
önceden teşşekkurler.
Kod: Tümünü seç
Hucreler: array[0..8, 0..8] of Boolean;
Kod: Tümünü seç
sudokugrid1.cells[8,8]:=inttostr(2);
sudokugrid1.cells[2,5]:=inttostr(9);
Hucreler[8,8] := True;
Hucreler[2,5] := True;
Daha sonra verdiğin linkteki örneğe göre yazarsak:
Kod: Tümünü seç
procedure TForm5.StringGridCanEdit(Sender: TObject; Col, Row: Integer;
var CanEdit: Boolean);
begin
CanEdit := not Hucreler[Col, Row];
end;
Kullanıcının yazdığı hücrelerin font'unda değişiklik yapmak istiyorsan StringGrid'in OnDrawCell olayını kullanmalısın. Aşağıdaki örnekte kullanıcının değişiklik yapabileceği hücrelerin yazı rengi kırmızı yapılıyor:
Kod: Tümünü seç
procedure TForm5.sudokugrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
S: string;
begin
S := sudokugrid1.Cells[ACol, ARow];
if not Hucreler[ACol, ARow] then
begin
sudokugrid1.Canvas.Font.Color := clRed;
sudokugrid1.Canvas.TextOut(Rect.Left + 2, Rect.Top + 2, S);
end;
end;
There's no place like 127.0.0.1
Re: Tstringgrid -de hucre deyişimi
Sudoku ile ilgili hazır kod istersen internette birçok Delphi ve Pascal örnekleri var. Oktay KOCATURK'ün daha önceden yaptığı ve kaynak kodlarıyla yayınladığı uygulamayı aşağıdaki sayfada bulabilirsin:
http://www.torry.net/pages.php?id=352
http://www.torry.net/pages.php?id=352
There's no place like 127.0.0.1