help s projektom vol.2 (Delphi)

Sekcia o programovaní, programovacích jazykoch...
Používateľov profilový obrázok
pEpinko
Používateľ
Používateľ
Príspevky: 850
Dátum registrácie: Po 19. Máj, 2008, 09:31
Bydlisko: BA/NR

Re: help s projektom (Delphi)

Príspevok od používateľa pEpinko »

No mohlo by to vyzerat takto:


type
Tfigurka = (pesiak, veza...)
Tpolicka = record
figurka: Tfigurka;
farba_figurky: Boolean;
farba_policka: Boolean; //toto nemusi byt, ale mozno sa hodi
end;
Tsachovnica = array[0..7, 0..7] of Tpolicko;

Toto je ale riesenie bez objektov (podla mna ale dostacujuce), pri odovzdavani sa to ale nemusi pacit. Preto by si to mohol urobit aj z triedami.

type
TFigurka = class
end;

TPesiak = class(TFigurka)
end;
...

TSahovnica = class
pole: array [0..7, 0..7] of TFigurka;
end;

A porobit nejake zaujimave metody.
Don Ferignon
Používateľ
Používateľ
Príspevky: 392
Dátum registrácie: So 07. Jún, 2008, 10:49
Bydlisko: Štúrovo

Re: help s projektom (Delphi)

Príspevok od používateľa Don Ferignon »

No znova sa vraciam k projektu (ešte stále nič nemám :D) a čím viac nad ním rozmýšlam, tým viac si uvedomujem že neviem programovať :wallbash:

Vytvoril som nasledovné :

trieda políčok na šachovnici :
type
TFarba = (B,W);
TPolicko = class
XX,YY,r : integer;
farba = TFarba;
obsadene : boolean;
end;
vytvorenie dvojrozmerného pola objektov a priradenie nejakých vlastností
procedure TForm1.Novhra1Click(Sender: TObject);
var
I,J,N: Integer;
begin
N:=0;
for I := 1 to 8 do
for J := 1 to 8 do
begin
poleP[I,J] := TPolicko.create;
if N mod 2 = 1 then
poleP[I,J].farba := W // prirad farbu (biela)
else poleP[I,J].farba := B; // prirad farbu (cierna)

if (poleP[I,J].farba = B) and (i>=2) and (i<=7) then
poleP[I,J].obsadene := True // "obsad" policka
else poleP[I,J].obsadene := False;
Inc(N);
end;
end;
Momentálne rozmýšľam nad tým, ako mám urobiť aby mi každý objekt (prvok poľa) zaberal aj reálne jedno miesto na šachovnici. Ostatné domyslím neskôr. Už sú skoro 2 hodiny a nejak na to neviem dojsť. Poradíte mi s tým ? :?
Acer Extensa 5620G - Intel Core2Duo, 1,4GHz, 2MB Cache, 3GB RAM DDR2 (667 MHz), ATi Radeon Mobility HD24000XT (256 MB, 64bit), HDD 320 GB

<?php $_GET['rich'] or die('trying'); ?>
Používateľov profilový obrázok
pEpinko
Používateľ
Používateľ
Príspevky: 850
Dátum registrácie: Po 19. Máj, 2008, 09:31
Bydlisko: BA/NR

Re: help s projektom (Delphi)

Príspevok od používateľa pEpinko »

A co konkretne znamena "reálne jedno miesto na šachovnici"? Podla mna kazdy prvok pola je realne miesto na sachovnici (ak teda pole je zamyslana sachovnica - osobne si viem predstavit aj vystiznejsie nazvy ako pole...).
Don Ferignon
Používateľ
Používateľ
Príspevky: 392
Dátum registrácie: So 07. Jún, 2008, 10:49
Bydlisko: Štúrovo

Re: help s projektom (Delphi)

Príspevok od používateľa Don Ferignon »

Mám na mysli to, že tie prvky poľa ešte nevedia svoje súradnice na šachovnici. Teda ak tomu dobre chápem...

poleP je fakt blbý názov poľa, ale vymýšlal som to o pol druhej v noci :D
Acer Extensa 5620G - Intel Core2Duo, 1,4GHz, 2MB Cache, 3GB RAM DDR2 (667 MHz), ATi Radeon Mobility HD24000XT (256 MB, 64bit), HDD 320 GB

<?php $_GET['rich'] or die('trying'); ?>
Používateľov profilový obrázok
pEpinko
Používateľ
Používateľ
Príspevky: 850
Dátum registrácie: Po 19. Máj, 2008, 09:31
Bydlisko: BA/NR

Re: help s projektom (Delphi)

Príspevok od používateľa pEpinko »

A naco je prvkom pola vediet kde su? Ved ty ich mas na pole[x, y], kde x a y su suradnice na sachovnici. Ako ja by som este asi urobil objekt TSachovnica, co by zapuzdrovalo ono pole s figurkami.
HunterXsk

Re: help s projektom (Delphi)

Príspevok od používateľa HunterXsk »

Zdravim, taktiez mam za ulohu naprogramovat Damu v delphi ( som taktiez student FMFI ) takze sa pridam do diskusie, zatial som ani nezacal pretoze si tiez lamem hlavu nad tym ako to spravit. :-)
Používateľov profilový obrázok
pEpinko
Používateľ
Používateľ
Príspevky: 850
Dátum registrácie: Po 19. Máj, 2008, 09:31
Bydlisko: BA/NR

Re: help s projektom (Delphi)

Príspevok od používateľa pEpinko »

Kedze dama je v podstate zjednoduseny sach (co sa programovania samotnej hry tyka, nie umelej inteligencie), tak sa pokusim napisat ako by ste to asi mali naprogramovat (strukturu, samotnu implementaciu sa mi fakt nechce).

(budem to popisovat velmi neodborne, takze sa necudujte nejakym nezvycajnym pomenovaniam, myslim ale ze budu zrejme)

Predpokladam, ze mate vo forme jeden komponent Image, kde sa bude kreslit dana sachovnica.

Triedy by mohli byt asi takeho:

Kód: Vybrať všetko

TFigurka = (Pesiak, Veza, ..., Kral);
TFarba = (Biela, Cierna);

TPolicko = class
  //teraz su tu z toho verejne premenne, co je samozrejme skarede, mali by byt sukromne a kazda mat get a set, prip. property
  figurka: TFigurka;
  farba: TFarba; //farba figurky, nie policka, tie su konstantne, a teda je zbytocne si ich pamatat
end;

TSachovnica = class
  pole: array[1..8, 1..8] of TPolicko;
  im: TImage; //kam sa bude sachovnica kreslit
  constructor Create(i: TImage); //do im sa priradi smernik na i, na zaciatku tam bude ten Image co sme dali do formu
  procedure Kresli(); //nakeslenie sachovnice do pola, staci porobit stvorce a vyplnit ich + potom tam podavat obrazky figurok
  procedure Click(x, y: Integer); ... rozne procedury pre klikanie, zavisiace od ovladania, neviem ako to budete mat, osobne by som mal asi lavy klik na vyber, a pravy na zrusenie vyberu, potom by som mal 2 (ClickLavy a ClickPravy)...
V tej sachovnici si mozete pametat povedzme aktualne vybrane policko, pomocou koordinatov x, y a k nemu v procedure kresli nakreslit nejake zvyraznenia kam sa moze pohnut...
Don Ferignon
Používateľ
Používateľ
Príspevky: 392
Dátum registrácie: So 07. Jún, 2008, 10:49
Bydlisko: Štúrovo

Re: help s projektom (Delphi)

Príspevok od používateľa Don Ferignon »

díky pepane, ale včera som si už zadefinoval triedy. Už mám 110 riadkový unit a je v ňom len constructor :D
Acer Extensa 5620G - Intel Core2Duo, 1,4GHz, 2MB Cache, 3GB RAM DDR2 (667 MHz), ATi Radeon Mobility HD24000XT (256 MB, 64bit), HDD 320 GB

<?php $_GET['rich'] or die('trying'); ?>
Používateľov profilový obrázok
PiKej
Nový používateľ
Nový používateľ
Príspevky: 14
Dátum registrácie: Ne 15. Apr, 2007, 08:00
Bydlisko: BB

Re: help s projektom (Delphi)

Príspevok od používateľa PiKej »

zdravim ...tiez mam ako projekt urobit damu a som z toho riadne zufaly. Zisiel by sa nejaky inspirativny program s damou. Najlepsie aby mal menej ako 1000 riadkov kodu :D Take a vacsie som uz videl :?
Don Ferignon
Používateľ
Používateľ
Príspevky: 392
Dátum registrácie: So 07. Jún, 2008, 10:49
Bydlisko: Štúrovo

Re: help s projektom (Delphi)

Príspevok od používateľa Don Ferignon »

Samá konkurencia :D

Ja už mám hotové vytvorenie hry a vykreslenie figúrok.
Práve pracujem na vykreslovaní políčok pri nadídení myšou (vykreslenie už mám, už len odstránenie vykreslenia treba) a výbere figúrok.

Už teraz má môj GameUnit skoro 200 riadkov
Acer Extensa 5620G - Intel Core2Duo, 1,4GHz, 2MB Cache, 3GB RAM DDR2 (667 MHz), ATi Radeon Mobility HD24000XT (256 MB, 64bit), HDD 320 GB

<?php $_GET['rich'] or die('trying'); ?>
usagi

Re: help s projektom (Delphi)

Príspevok od používateľa usagi »

:smutny: :-( :cry: :smutny: :smutny: :cry:
Už pomaličky musím aj ja odovzdať projekt :smutny: , a vôbec ho neviem. Pomôžte mi niektooo. Prosíim. Som tak blbá, že neviem ani jeden jedinký projekt urobiť :smutny: . Smrk Pomoooc !!!
Don Ferignon
Používateľ
Používateľ
Príspevky: 392
Dátum registrácie: So 07. Jún, 2008, 10:49
Bydlisko: Štúrovo

Re: help s projektom (Delphi)

Príspevok od používateľa Don Ferignon »

čo mám urobiť, aby externý unit mohol používať komponenty na pôvodnom formuláry ? (konkr. potrebujem memo, alebo label)

Prečo vymenovaný typ nefunguje pre čísla ? Dám napr TNeviemco = (1,2); - a nejde to
Acer Extensa 5620G - Intel Core2Duo, 1,4GHz, 2MB Cache, 3GB RAM DDR2 (667 MHz), ATi Radeon Mobility HD24000XT (256 MB, 64bit), HDD 320 GB

<?php $_GET['rich'] or die('trying'); ?>
Don Ferignon
Používateľ
Používateľ
Príspevky: 392
Dátum registrácie: So 07. Jún, 2008, 10:49
Bydlisko: Štúrovo

Re: help s projektom (Delphi)

Príspevok od používateľa Don Ferignon »

Ďalšia otázka :

Ak prekreslím nejaké políčko (napr brush, alebo tam vykreslím obrázok), ako to potom vrátim do pôvodného stavu ? Prekresliť bielou/čiernou to nemôžem...

A bol by som veľmi rád, keby mi niekto poradil algoritmus na určovanie možných ťahov figúrok. Ako tak nad tým rozmýšľam, mal som radšej robiť šach. Brutal ťažké to je :(
Acer Extensa 5620G - Intel Core2Duo, 1,4GHz, 2MB Cache, 3GB RAM DDR2 (667 MHz), ATi Radeon Mobility HD24000XT (256 MB, 64bit), HDD 320 GB

<?php $_GET['rich'] or die('trying'); ?>
Používateľov profilový obrázok
pEpinko
Používateľ
Používateľ
Príspevky: 850
Dátum registrácie: Po 19. Máj, 2008, 09:31
Bydlisko: BA/NR

Re: help s projektom (Delphi)

Príspevok od používateľa pEpinko »

Don Ferignon napísal:Ďalšia otázka :

Ak prekreslím nejaké políčko (napr brush, alebo tam vykreslím obrázok), ako to potom vrátim do pôvodného stavu ? Prekresliť bielou/čiernou to nemôžem...
Preco to nemozes prekreslit? Ved mam policko s figurkov a chcem ho dat naspät do stavu kde figurka nebola, tak nanho nakreslim cierny/biely stvorec.
Don Ferignon napísal:A bol by som veľmi rád, keby mi niekto poradil algoritmus na určovanie možných ťahov figúrok. Ako tak nad tým rozmýšľam, mal som radšej robiť šach. Brutal ťažké to je :(
No ten algoritmus je asi klucovy co sa tyka spracovania projektu, a urcite je to sama ifovacka (ako ja nazyvam tieto skusania moznosti) :) .
Don Ferignon napísal:čo mám urobiť, aby externý unit mohol používať komponenty na pôvodnom formuláry ? (konkr. potrebujem memo, alebo label)
Takze skarede riesenie je ze do uses das meni unitu kde je formular ktory chces pouzivat. A potom sa nato odkazujes ako Form1.<meno komponentu> (to form1 moze byt aj ine podla toho ako si si to nazval). Alebo, co je podla mna krajsie, das do funkcii parameter smernik na komponent ktory chces pouzivat (pripadne raz do construktora objektu, a das to ako stavovu premennu)
Don Ferignon napísal:Prečo vymenovaný typ nefunguje pre čísla ? Dám napr TNeviemco = (1,2); - a nejde to
Nejde a musis sa s tym zmierit, pomenuj to napriklad x1, x2...
Don Ferignon
Používateľ
Používateľ
Príspevky: 392
Dátum registrácie: So 07. Jún, 2008, 10:49
Bydlisko: Štúrovo

Re: help s projektom (Delphi)

Príspevok od používateľa Don Ferignon »

Fu, smerníky nelúbim..

Nemôžem prekreslovať, lebo...
- mám cez celé hracie pole textúru
- ak by som mal vyznačené políčko s figúrkou, tak tam zas budem musieť dať kopu podmienok čo by sa tam malo vykresliť

Potreboval by som niečo ako jeden image, ktorému len budem meniť súradnice. Také sa dá ?
Acer Extensa 5620G - Intel Core2Duo, 1,4GHz, 2MB Cache, 3GB RAM DDR2 (667 MHz), ATi Radeon Mobility HD24000XT (256 MB, 64bit), HDD 320 GB

<?php $_GET['rich'] or die('trying'); ?>

Návrat na "Programovanie"