[Delphi] Pytanie nooba - błąd krytyczny po kompilacji

0

Witam, od jakiegoś czasu staram się wrócić do programowania, tym razem w Borland Delphi 7, z którym kiedyś miałem styczność przez dość krótki czas, jednak już przygodę z językami programowania zacząłem prawie 17 lat temu, zwłaszcza Pascal/Assembler i C++. Ciężko mi ugryźć to całe środowisko windowsowe, dla człowieka przyzwyczajonego do czarnego DOS'a jest to jak nauka wszystkiego od nowa..

Próbuję zrobić mały projekt - prostą grę, jednak do tego potrzebuję "quasi-trybu graficznego", którego większość kodu (w zamieszczonym pliku) oczywiście z wielką satysfakcją zerżnąłem z dema w katalogu Delphi. Sam za nic bym do tego nie doszedł.. Przejdę do meritum - pojawia mi się irytujący błąd po skompilowaniu programu. Błąd krytyczny wyskakuje mi w momencie przypisania:

changeRect := spriteRect;

Przedtem mi się to nie pojawiało aż do ponownego uruchomienia Delphi. Dla rozeznania w sytuacji zamieszczam kod źródłowy w pliku .pas. Wiele rzeczy jest na razie uciętych, program nie jest nawet zaczęty tak na dobre, ponieważ na razie muszę ogarnąć cały ten tryb graficzny i zabawa z teksturami kiepsko mi idzie, co zresztą widać w pliku, który dodałem.

Zauważyłem, że wielu z Was ogarnia temat, proszę o pomoc w tej dziedzinie. Takie irytujące rzeczy mnie stopują i zniechęcam się do programowania. Uznajcie mnie za żółtodzioba, ale nie traktujcie jak lamera. Proszę o wytłumaczenie w czym leży błąd, będę wdzięczny i wyślę parę MB fajnych dup w nagrodę.. lub bro...

0

Wiesz próbowałem skompilować tą gierkę ale nie ma pliku dfm (72linia) i fakt iż nie jest używana definicja counter (linia 111)

0

Tak jak proqix pisze, źródlo jest niekompletne. Także jeśli możesz
to wrzuć je jeszcze raz, ale razem z formatką oraz plikami grafiki.
Wtedy być może analizująć kod - uda się nam ustalić, co jest źle.

0

sory ;) widzicie już z jakim nowicjuszem macie do czynienia :). mam nadzieję, że to wszystko..

0

tutaj wersja z paroma grafikami dla testu..

0
procedure TForm1.FormCreate(Sender: TObject);
begin
FGameOver := false;
  //Application.OnIdle := IdleLoop;
  if (Application.MessageBox('W sumie to tylko test', 'Test', MB_OKCANCEL) = IDOK) then
     begin
        FGameOver := false;
     end
     else
        Application.Terminate;
end;

jak dasz tak to będzie działać ale nie powiem ci dla czego bo nie wiem (zrobiłem to w 5 minut)

//edit
Chyba chodzi o to że nie zdefiniowałeś tego
FGameOver
zanim włączył się timer1

0

Dalej nie działa, nie sądzę żeby to akurat było przyczyną. Tutaj jakieś wywołanie jest nie takie jakie być powinno, możliwe że jakaś zmienna nie jest pusta zaraz po przypisaniu... Jak można wyzerować rekord lub obiekt (w tablicy) nie stosując pętli i przypisując zerowe wartości?

0

Drogi kolego.
Problem twi w linii

workCanvas.Draw(0, 0, gameunits[1].spriteImg.Picture.Bitmap);

w pliku test_grafy_ok2.pas
Używasz tutaj zmiennej z tablicy gameunits która wcześniej nie została uzupełniona bo wykomentowałeś fragment odpowiedzialny za stworzenie obiektu do poruszania.

Drugi duzy błąd to umieszczenie konstruktorów w zdarzeniu onActivate.
Wszystkie TImage które tam umieściłeś nie skonstruują się przed rozpoczęciem timera dlatego wywalia błąd bo pamięć na obrazki nie jest zarezerwowana.
Przenieś wszystko z onActivate do onCreate.

Kolejny błąd to ładowanie obrazków do zmiennych.
Użyj ort! względnych
'grid.bmp'
a nie bezwzględnych
'G:\Projekty\NOWA GRA\grid.bmp'
Nie każdy ma tak zorganizowane foldery jak Ty i nie będzie im to działać.
Jeśli użyjesz ort! względnej wystarczy przekopiować pliki obrazów do katalogu z projektem.

Pozdrawiam i życzę powodzenia
Michał

0

ooo i o to chodzilo :). Dzieki za pomoc <thumbs_up>. Masz bro

0

Witam ponownie, prace poszły już dalej ale nadal mam dość trywialne problemy z grafiką. Próbuję rozwiązać parę kwestii a naczytałem się już na ten temat tyle że ho ho a może i więcej.. Prosiłbym zatem o pomoc, poniżej umieszczam kod z plikami zewnętrznymi. Proszę nie kraść :D. Gra zawiera prosty jak pie***enie algorytm poszukiwania drogi, ma to być gierka typu defense, ale nie to w tym momencie istotne.

Baaaardzo wstępne stadium więc wiele rzeczy jest niedokończonych - proszę to wziąć pod uwagę. Co jest istotne:

  • tło w plikach .bmp, naczytałem się jak to usunąć, jednak nic nie daje pożądanego rezultatu. Co w tym przypadku zadziała? Czytałem o maskach, ale to chyba wykracza poza TCanvas, więc nie jestem pewien, czy w to wchodzić.
  • jeżeli użytkownik kliknie gdzieś na mapie, tam powinna się pojawić tekstura oznaczająca, że postawiono budynek. Tak się akurat składa, że ten budynek skrywa się gdzieś za tłem i dopiero zakrycie i ponowne odkrycie głównego okna uwidacznia tę osadzoną wieżę. Co zrobić z tym fantem? O czym zapomniałem?

Tutaj link do pliku .rar:
<a href = "http://hotfile.com/dl/94418340/23b4d5f/tgame.rar.html>Download (2,34MB)</a>

Te 2 pytania czekają na odpowiedź, będę dozgonnie wdzięczny za pomoc! Aha - wszystko znajduje się w Timerze jak coś.

Pozdrawiam,
AmB.

0

Widzę, że zablokowana jest możliwość dodawania linków (przynajmniej niezalogowanym).

Tutaj link do ściągnięcia:
http://hotfile.com/dl/94418340/23b4d5f/tgame.rar.html

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