Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Tutorial :: Pravljenje igara u Pascal-u... moze?

[es] :: Pascal / Delphi / Kylix :: Tutorial :: Pravljenje igara u Pascal-u... moze?
(TOP topic, by X Files)
Strane: < .. 1 2 3

[ Pregleda: 28851 | Odgovora: 53 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

vladaboy93
Vladimir Makaric
Novi Sad

Član broj: 137777
Poruke: 376
*.1.eunet.yu.

Sajt: vladimirmakaric.110mb.com


Profil

icon Re: Tutorial :: Pravljenje igara u Pascal-u... moze?29.05.2007. u 21:52 - pre 172 meseci
Nemoj odustati Srki mnogo nas je zainteresovano ukljucujuci i mene ali nas jeb... skola za***....
pa se nestigne meni se takodje skola zavrsava za 2 dana! ali sam slobodan tek za 2 nedelje
 
Odgovor na temu

Nemanja_666
Nemanja Tatic
Gradiska

Član broj: 116292
Poruke: 221
217.23.204.*



+19 Profil

icon Re: Tutorial :: Pravljenje igara u Pascal-u... moze?08.06.2007. u 10:51 - pre 172 meseci
Ja sam spreman za nastavak projekta. Vidio sam da je srki vec napisao editor u konzoli. Nisam pogledao kod, ali ubro cu. Sto se tice da neko uradi u vizuelnom okruzenju, ja sam mislio da ce i ova igra biti u konzoli, a poslije nje cemo se baciti na nesto ozbiljnije.

Pozz
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Tutorial :: Pravljenje igara u Pascal-u... moze?08.06.2007. u 16:54 - pre 172 meseci
Ovaj program je bas fin za prelazak iz konzole u graficko okruzenje. Posto vecina, ako ne i svi koji citaj ovo, vec znaju da rade sa VCL/LCL odlucio sam da pisem kompletan program za konzolu, a da neko od vas taj kod modifikuje kako bi radio u grafickom okruzenju. Osim "uglavljivanja" koda u graficko okruzenje, nije zabranjeno modifikovanje koda da bi radio brze, bolje, jace :D
 
Odgovor na temu

Nemanja_666
Nemanja Tatic
Gradiska

Član broj: 116292
Poruke: 221
217.23.204.*



+19 Profil

icon Re: Tutorial :: Pravljenje igara u Pascal-u... moze?08.06.2007. u 17:12 - pre 172 meseci
Prokrama (Igre) samo u konzoli nisam radio odavno, pa mi se sad vracaju stara sjecanja pa zato sam mislio da ovo odradimo u konzoli.
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Tutorial :: Pravljenje igara u Pascal-u... moze?08.06.2007. u 17:31 - pre 172 meseci
Slobodno uradi jos jednu verziju u konzoli, ali ne idemo dalje dok neko ne uradi verziju u grafickom okruzenju :)
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
77.46.177.*

ICQ: 246436949


+10 Profil

icon Re: Tutorial :: Pravljenje igara u Pascal-u... moze?21.06.2007. u 08:38 - pre 171 meseci
Odoh na godisnji odmor... svracacu na forum, ali verovatno necu imati racunar na kojem bih mogao da pisem programcice pa cak i ako iko odluci da uradi editor, necu moci da nastavim sa pisanjem.

BTW da li ste svi odustali ili jos nisu zavrsene obaveze u skolama?
 
Odgovor na temu

Nikolavlasotince
Nikola Stojiljkovic
Vlasotince/Beograd

Član broj: 139391
Poruke: 109
212.200.100.*



+1 Profil

icon Re: Tutorial :: Pravljenje igara u Pascal-u... moze?22.06.2007. u 12:12 - pre 171 meseci
Ja sam juce zavrsio sve obaveze i sada sam konacno SLOBODAN. :)

Pozzzzzzzz
 
Odgovor na temu

Elmer-Davez

Član broj: 153181
Poruke: 7
*.pyrotherm.co.yu.



Profil

icon Re: Tutorial :: Pravljenje igara u Pascal-u... moze?04.08.2007. u 18:49 - pre 170 meseci
Pre neki dan sam naleteo na ovu temu slucajno i malo me zaintersovala, pa sam uradio taj editor u grafickom okruzenju(nisam koristio lazarus nego delphi). Nadam se da ce sad srki nastaviti sa ovim.
Mozda je srki planirao da neko namesti editor tako da se odma vide sve sobe i strelice od vrata jedne sobe do vrata druge sobe, a tu bi verovatno morao neki pathfinding da se uradi, a ja to ne znam. Mozda postoji neki bug, jer ga nisam jos skroz testirao, pa ako naletite na neki javite mi.
Prikačeni fajlovi
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
77.46.176.*

ICQ: 246436949


+10 Profil

icon Re: Tutorial :: Pravljenje igara u Pascal-u... moze?08.08.2007. u 11:44 - pre 170 meseci
Sad sam u nekoj guzvici pa jedno vreme necu moci da pisem, ali cu sigurno nastaviti. Kao sto sam ranije rekao, sledi jednostavna igra koja ce koristiti fajl sa sobama.
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
212.200.34.*

ICQ: 246436949


+10 Profil

icon Re: Tutorial :: Pravljenje igara u Pascal-u... moze?30.08.2007. u 15:03 - pre 169 meseci
Posle duze pauze, nastavak teksta je zavrsen. Kao sto sam ranije rekao, napravicemo malu igru koja ce koristiti fajl sa informacijama o sobama i dozvoliti korisniku da se krece kroz njih. Cilj igre je da se od prve sobe stigne do poslednje.

Posto vec imamo napisan ceo kod za ucitavanje soba, jedino sto cemo morati da napisemo je kod koji ce na osnovu komandi da pokrece korisnika kroz sobe, i nesto malo koda da bi GUI lepo radio.

Forma koju cemo napraviti izgleda ovako:



Na formi se nalazi par komponenti koje bi trebalo vec da poznajete. ActionList, MainMenu, ImageList, OpenDialog, SaveDialog... ove komponente ce nam posluziti da napravimo lepsi GUI i dodamo minimalnu funkcionalnost koja se ocekuje od igre (pokretanje nove igre, snimanje i ucitavanje pozicije, i izlaz iz igre).

Memo kontrola ce sluziti za ispis opisa sobe, informacije o komandama, i svemu ostalom o cemu igra treba da nas obavesti.

Edit box i button kontrole ce igracu omoguciti da zadaje komande.

Da krenemo... potrebne su nam dve promenljive koje ce cuvati podatke o svim sobama i o trenutnoj sobi u kojoj se igrac nalazi:
Code:
var
  Rooms: TRooms;
  CurrentRoom: Integer;

Kada korisnik izabere novu igru to znaci da treba da ucitamo podatke o sobama i da trenutnu sobu postavimo na prvu... i to je to.
Kraj igre je kada je trenutna soba posledanj soba.
Snimanje i ucitavanje igre je takodje jednostavno... sve sto treba je da snimimo u kojoj se sobi igrac nalazi, i, kasnije, taj podatak da ucitamo iz fajla.

Jedino sto je malo teze od svega ostalog je sistem koji ce da uzima komande od korisnika i da izvrsava kod vezan za tu komandu. StringList je prilicno zgodan za ovakve stvari... tekst koji igrac unese se rastavi na razmacima i popuni se lista. Kada bi korisnik uneo:
Code:
komanda parametar1 parametar2

U listi bi imali 3 reda:
Code:
Index  Tekst
0        komanda
1        parametar1
2        parametar2

Dakle, komanda se nalazi na prvom mestu, a posle nje idu parametri.
Komande koje cemo implementirati u igri su sledece:
HELP
QUIT
LOOK
GO {NORTH | WEST | SOUTH | EAST}

HELP komanda ce da izlista sve komande i da da kratak opis svake.
QUIT prekida igru i zatvara je.
LOOK ispisuje opis sobe u kojoj se trenutno nalazi igrac.
GO komanda ima jedan parametar i to je smer u kojem igrac zeli da ide.

Za svaku komandu cemo napisati posebnu proceduru koja ce biti zaduzena za njeno izvrsavanje, koja ce imati sledeci oblik:
Code:
procedure Command(ACommand: TStringList; AStatus: TMemo);

Na taj nacin ce svaka komanda imati pristup listi parametara i memo kontroli u koju, ako je potrebno, ispisuje tekst.

Kompletan kod za izvrsavanje komandi igraca izgleda ovako:
Code:
procedure WaitingForCommand(AStatus: TMemo);
begin
  if AStatus.Lines[AStatus.Lines.Count - 1] <> 'Waiting for command: ' then
    AStatus.Append('Waiting for command: ');
end;

procedure UnknownCommand(ACommand: TStringList; AStatus: TMemo);
begin
  AStatus.Append('Unknown command ' + ACommand.DelimitedText + '. Type HELP for command list.');
  AStatus.Append('');
end;

procedure QuitCommand(ACommand: TStringList; AStatus: TMemo);
begin
  Application.MainForm.Close;
end;

procedure HelpCommand(ACommand: TStringList; AStatus: TMemo);
begin
  AStatus.Append('Command list');
  AStatus.Append('  HELP - Display this text');
  AStatus.Append('  QUIT - Quit game');
  AStatus.Append('  LOOK - Look around you');
  AStatus.Append('  GO {NORTH | WEST | SOUTH | EAST} - move to other room');
  AStatus.Append('');
end;

procedure LookCommand(ACommand: TStringList; AStatus: TMemo);
var
  I: Integer;
  Exits: String = '';
begin
  // Ispisuje opis sobe
  AStatus.Text := AStatus.Text + Rooms[CurrentRoom].Decription;

  // Trazi moguce izlaze ako nisi u poslednjoj sobi
  if CurrentRoom < Length(Rooms) -1 then
  begin
    for I := CNorth to CEast do
      if Rooms[CurrentRoom].Doors[I] > 0 then
        Exits := Exits + DirectionNames[I] + ', ';
    SetLength(Exits, Length(Exits) - 2);

    AStatus.Append('');
    AStatus.Append('Available exits: ' + Exits);
  end
  else
  begin
    AStatus.Append('');
    AStatus.Append('YOU DID IT!!!');
    AStatus.Append('You have found the exit!');
  end;
  AStatus.Append('');
end;

procedure GoCommand(ACommand: TStringList; AStatus: TMemo);
var
  Direction: Integer = 0;
  I: Integer;
begin
  // Drugi parametar je smer kretanja
  if ACommand.Count < 2 then
  begin
    AStatus.Append('Where do you want to go?');
    AStatus.Append('');
  end
  else
  begin
    // Pronadji smer
    for I := CNorth to CEast do
      if ACommand[1] = DirectionNames[I] then
        Direction := I;
    // Ako uneti smer ne postoji, izbaci gresku
    if Direction = 0 then
      UnknownCommand(ACommand, AStatus)
    else
    begin
      // Ako je nemoguce ici zadatim smerom, izbaci obavestenje
      if Rooms[CurrentRoom].Doors[Direction] = 0 then
      begin
        AStatus.Append('You cann''t go to the ' + LowerCase(ACommand[1]) + '.');
        AStatus.Append('');
      end
      else
      begin
        // Predji u novu sobu i pogledaj je
        CurrentRoom := Rooms[CurrentRoom].Doors[Direction] - 1;
        ExecuteCommand('LOOK', AStatus);
      end;
    end;
  end;
end;

procedure ExecuteCommand(ACommand: String; AStatus: TMemo);
var
  strCommand: TStringList;
begin
  ACommand := UpperCase(ACommand);
  strCommand := TStringList.Create;
  strCommand.Delimiter := ' ';
  strCommand.DelimitedText := ACommand;
  
  // Pokreni proceduru u zavisnosti od komande
  if strCommand[0] = 'HELP' then
    HelpCommand(strCommand, AStatus)
  else if strCommand[0] = 'QUIT' then
    QuitCommand(strCommand, AStatus)
  else if strCommand[0] = 'LOOK' then
    LookCommand(strCommand, AStatus)
  else if strCommand[0] = 'GO' then
    GoCommand(strCommand, AStatus)
  else
    UnknownCommand(strCommand, AStatus);

  if CurrentRoom < Length(Rooms) - 1 then
    WaitingForCommand(AStatus);
end;

Kao sto vidite komande kada se program kompajlira, nemoguce je menjati komande, dodatavi nove ili slicno. U mnogim slucajevima je ovo sasvim dovoljno, ali u slucajevima kada svaki nov nivo treba da ima nove komande, kada je potrebno da korisnik kreira sam svoje komande od vec postojecih komandi (macro), ovaj pristup nije dobar. U takvim situacijama je moguce napraviti listu komandi i uz svaku komandu vezati opis i proceduru koja treba da bude pozvana. Na taj nacin je moguce naknadno dodavati komande, procedure za komande drzati u samom kodu, dinamickoj biblioteci ili nekom skriptu, menjati naziv i opis komande...

Vas "domaci zadatak" je da napravite da igrac moze da napravi sam svoje komande (alias) koje ce pozivati neke od predefinisanih... npr:
igrac definise komandu POGLEDAJ koja poziva komandu LOOK
igrac definise komandu NA koja poziva komandu GO
.
.
.
Nacin na koji cete dozvoliti igracu da definise te nove komande zavisi od vas (da li ce biti dovoljno da korisnik samo napise POGLEDAJ = LOOK ili ce postojati nova forma koja ce omoguciti kreiranje novih komandi, ili ce biti nesto trece...). Snimanje i ucitavanje novih komandi ne mora da bude implementirano.

PS
Opisi soba su trenutno "Soba 1", "Soba 2", "Soba 3",... trebalo bi da se uskoro tu pojavi neki pravi opis
Prikačeni fajlovi
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
212.200.34.*

ICQ: 246436949


+10 Profil

icon Re: Tutorial :: Pravljenje igara u Pascal-u... moze?30.08.2007. u 21:57 - pre 169 meseci
Dok cekamo da neko napravi potrebne izmene u igri sa sobama, pogledajte sta sledi...



Snake, tj. zmijica. Igra ce da ima svoj editor (slika koju vidite) koji ce omoguciti lako kreiranje nivoa. Igra i editor ce koristiti LCL za prikaz svega. Ovo ce biti poslednja igra koja koristi LCL. Sledecih par projekata verovatno nece biti igre nego ce pokazivati kako se kreira prozor bez LCL, kako se crtaju neki osnovni objekti u OpenGL i slicno...
Prikačeni fajlovi
 
Odgovor na temu

Elmer-Davez

Član broj: 153181
Poruke: 7
*.inpoint.net.



Profil

icon Re: Tutorial :: Pravljenje igara u Pascal-u... moze?14.09.2007. u 18:07 - pre 168 meseci
Ja sam trenutno u Novom Sadu, gde jos uvek nemam pristup internetu(ovo sad saljem iz internet caffea), pa ne mogu da se prikljucim ovome, ali nadam se da cu uskoro uvesti adsl, pa cu se pozabaviti ovim novim, a i onim malo starijim problemom.

Aj pozzz
 
Odgovor na temu

Elmer-Davez

Član broj: 153181
Poruke: 7
*.041net.co.yu.



Profil

icon Re: Tutorial :: Pravljenje igara u Pascal-u... moze?14.10.2007. u 18:29 - pre 167 meseci
Evo me, najzad. Uradio sam i ono sa sobama i snake(i editor i igru), a naisao sam na par banalnih problema. Problemi su kod snake i glase:
-Kad pokrenem editor za snake ne pojavi mi se odma status bar, nego tek kad stisnem na "Editor" na mejn meniju. Ne znam da li je to do mog kompa ili do delphija ali javi mi da li se to i tebi desava na ovoj igrici koju sam okacio tu.
-Kako da uklonim ekstenziju u TFileListBox, tj. da mi ne pise ono .dat, a da prikaze samo fajlove koji su .dat

Inace, interesuje me koja je razlika izmedju lazarusa i delphija i da li mozes da koristis ovde delphi(ili bar da stavis exe svojih igara) posto ja nemam lazarus, pa ne mogu da kompajliram tvoje projekte da vidim kako izgledaju.

Pozzz
Prikačeni fajlovi
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
..c.cable.static.telemach.net.

ICQ: 246436949


+10 Profil

icon Re: Tutorial :: Pravljenje igara u Pascal-u... moze?27.10.2007. u 20:45 - pre 167 meseci
@Elmer-Davez
Citat:
Kad pokrenem editor za snake ne pojavi mi se odma status bar, nego tek kad stisnem na "Editor" na mejn meniju. Ne znam da li je to do mog kompa ili do delphija ali javi mi da li se to i tebi desava na ovoj igrici koju sam okacio tu.

Kad iskompajliram tvoj kod u Delphi 2007 tog problema vise nema, ali se polja ne icrtavaju kad kliknem na njima (nisam mnogo zagledao, ali ima veze sa DoubleBuffered := True)
Citat:
Kako da uklonim ekstenziju u TFileListBox, tj. da mi ne pise ono .dat, a da prikaze samo fajlove koji su .dat

Nisam bas najbolje razumeo pitanje jer ekstenzija moze da se vidi na 3 mesta... u listi gde su fajlovi, u polju gde mozes da ukucas naziv fajla i u combo box-u iz kojeg mozes da biras filter. Ako je problem sa listom u kojoj se nalaze fajlovi, to je zato sto ti je u explorer-u podeseno da se prikazuju ekstenzije, ako moras da upises *.dat u polju gde mozes uneti ime fajla, znaci da nisi izabrao filter koji ce ti prokazati samo *.dat fajlove, ako ti se u combo box-u vidi ektenzija, samo je izbrisi iz naziva filtera. To je sve sto mi trenutno pada na pamet.

Lazarus je besplatna alternativa Delphi-u. Treba jos dugo da se razvija da bi bio stabilan i koristan kao Delphi, ali se vec sada mogu napraviti neke aplikacije. Bitna razlika je to sto Lazarus moze da radi na razlicitim operativnim sistemima i da kompajlira programe za njih. To je moguce jer kao kompajler koristi FreePascal.
Lazarus mozes preuzeti ovde: http://sourceforge.net/project/showfiles.php?group_id=89339

@All
Za Snake Editor cemo napraviti malu formicu sa par jednostavnih procedura koje ce se pozivati kada korisnik klikne na odredjene njene odredjene delove. Forma ce izgledati ovako:



Osnovni meni, toolbar, akcije, status bar, slicice i dialozi su vam vec poznati od ranije i na tome se necemo zadrzavati. Kreirane su osnovne akcije (novo, otvori, snimi i izadji) i vezane su za stavke u meniju i toolbar-u. Status bar sluzi samo da objasni sta koji taster na misu znaci (kao mali help).

Na sredini forme se nalazi komponente tipa TImage. Ona ce sluziti za iscrtavanje i za "hvatanje" korisnickih akcija vezanih za crtanje.

Sad na programiranje... napravicemo da polje po kojem se igrac krece ne mora da bude fiksne sirine i visine (prvi nivo moze biti 10*10, drugi moze biti 30*30, itd...). Trebace nam tri promenljive. Jedna za polje po kojem ce igrac da se krece i jos dve za sirinu i visinu polja da ne bi morali svaki put da proveravamo velicinu polja. Bilo bi lepo i da imamo neke konstante koje ce obelezavati sta se na kom polju nalazi:
Code:
const
  C_Empty = 0;
  C_Wall = 1;

var
  Field: array of array of Byte;
  FieldWidth, FieldHeight: Integer;

Sad kad imamo gde da smestimo podatke, dodacemo i funkciju koja kreira prazno polje za igru:
Code:
procedure CreateField(AFieldWidth, AFieldHeight: Integer);
var
  X, Y: Integer;
begin
  SetLength(Field, AFieldWidth, AFieldHeight);
  FieldWidth := AFieldWidth;
  FieldHeight := AFieldHeight;
  
  for Y := 0 to FieldHeight - 1 do
    for X := 0 to FieldWidth - 1 do
      Field[X, Y] := C_Empty;
end;

Sve sto nam je jos potrebno, osim crtanja, je snimanje i ucitavanje polja. Posto polje moze biti razlicite sirine i visine, trebalo bi i te podatke upisati u fajl, pa kod za snimanje i ucitavanje izgleda ovako:
Code:
function SaveField(AFilename: TFilename): Boolean;
var
  S: TFileStream;
  X, Y: Integer;
begin
  Result := False;
  try
    S := TFileStream.Create(AFilename, fmCreate);
    S.Write(FieldWidth, SizeOf(FieldWidth));
    S.Write(FieldHeight, SizeOf(FieldHeight));
    for Y := 0 to FieldHeight - 1 do
      for X := 0 to FieldWidth - 1 do
        S.Write(Field[X, Y], SizeOf(Field[X, Y]));
    Result := True;
  finally
    S.Free;
  end;
end;

function LoadField(AFilename: TFilename): Boolean;
var
  S: TFileStream;
  X, Y: Integer;
begin
  Result := False;
  try
    S := TFileStream.Create(AFilename, fmOpenRead);
    S.Read(FieldWidth, SizeOf(FieldWidth));
    S.Read(FieldHeight, SizeOf(FieldHeight));
    CreateField(FieldWidth, FieldHeight);
    for Y := 0 to FieldHeight - 1 do
      for X := 0 to FieldWidth - 1 do
        S.Read(Field[X, Y], SizeOf(Field[X, Y]));
    Result := True;
  finally
    S.Free;
  end;
end;

Da se bacimo sad na iscrtavanje. Nazovimo TImage komponentu imgField. Funkcija za crtanje ce iscrtavati sve na imgField, a imgField ce se pobrinuti o iscrtavanju svega na formi kad god to bude bilo potrebno:
Code:
procedure TfrmMain.DrawField;
var
  X, Y: Integer;
  
begin
  for Y := 0 to FieldHeight - 1 do
    for X := 0 to FieldWidth - 1 do
    begin
      if Field[X, Y] = C_Empty then
        imgField.Canvas.Brush.Color := clWhite
      else
        imgField.Canvas.Brush.Color := clGray;
      imgField.Canvas.Rectangle(Trunc(X * CellWidth), Trunc(Y * CellHeight),
        Trunc((X + 1) * CellWidth), Trunc((Y + 1) * CellHeight));
    end;
end;

Primecujete dve promenljive koje ranije nismo spomenuli, CellWidth i CellHeight. One nemaju veze sa logikom igre nego sa iscrtavanjem. Prozor u kojem se sve iscrtava i dimenzije polja nisu fiksne vrednosti i one uticu na dimenzije pojedinacne celije u polju. To znaci da prilikom kreiranja novog polja, ucitavanja ili menjanja velicine prozora moramo izracunati nove dimenzije celija i iscrtati polje s novim vrednostima. Kod koji racuna dimenzije celije izgleda ovako:
Code:
CellWidth := imgField.Width / FieldWidth;
CellHeight := imgField.Height / FieldHeight;

Ostalo je jos samo da "saslusamo korisnika" i menjamo celije onako kako on zeli. Zato cemo hvatati MouseDown, MouseUp i MouseMove dogadjaje. Na MouseDown i MouseUp cemo postavljati jednu promenljivu koja ce oznacavati sta treba da se iscrta na odredjenoj celiji, a na MouseMove cemo raditi iscrtavanje tako da korisnik moze da pritisne taster i da pomera misa, i da se celije menjaju gde god se mis nalazi:
Code:
procedure TfrmMain.imgFieldMouseDown(Sender: TOBject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then
    CellValue := C_Wall
  else
    CellValue := C_Empty;

  imgFieldMouseMove(Sender, Shift, X, Y);
end;

procedure TfrmMain.imgFieldMouseUp(Sender: TOBject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  CellValue := -1;
end;

procedure TfrmMain.imgFieldMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if CellValue <> -1 then
  begin
    Field[GetCell(X, Y).X, GetCell(X, Y).Y] := CellValue;
    DrawField;
  end;
end;


To je to za sada. Posto sad nista ne cekamo jer je Elmer-Davez vec odradio sve, uskoro cu zavrsiti i igru koja ce koristiti podatke iz ovog editora i krecemo na SDL + OpenGL
Prikačeni fajlovi
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Tutorial :: Pravljenje igara u Pascal-u... moze?
(TOP topic, by X Files)
Strane: < .. 1 2 3

[ Pregleda: 28851 | Odgovora: 53 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.