[Pascal] modul graph a maly problem z polozeniem

0

Witam,

Napisałem sobie taki przepiękny kodzik, samemu go zrobiłem i sie z tego powodu ciesze ! .

Oto on

Uses crt,graph;

var x,y,ster,tryb:integer;
opcja:char;

begin
detectgraph(ster,tryb);
initgraph(ster,tryb,'e:/tp/bgi');

x:=10; y:=10;
repeat
cleardevice;

SetFillStyle(2,9);
bar(x+50,y+50,x,y);
SetFillStyle(2,green);
bar(x+50,y+10,x,y);
bar(x+50,y+50,x,y+40);
SetFillStyle(6,red);
bar(x+5,y+20,x+45,y+30);
SetFillStyle(2,brown);
bar(x+90,y+20,x+30,y+30);

opcja:=char(readkey);
if opcja='w' then y:=y-10;
if opcja='s' then y:=y+10;
if opcja='a' then x:=x-10;
if opcja='d' then x:=x+10;
until opcja='q';
end.

Potrzebuję pomocy a raczej informacji...
Jest tryb graficzny.. powiedzcie mi jak tutaj jest rozmiar ekranu traktowany... to znaczy tych punktow wspolrzednych ile jest.. od czego to zalezy.. od rozdzielczosci ?

Bo wstawie ograniczenia zeby nie dalo sie wyjechac (wyleciec) poza ekran ale co bedzie jak przeniose to na komputer z rozdzielczoscia 800 * 600 a potem ten sam program dam na 1200 * xxxx
Co sie wtedy stanie ?
Jak bede projektowac to pod 800 * xxx to po preniesieniu na 1200 * xxxx wszystkie ograniczniki beda male a do jerzdzenia pozostaje kupa nieuzywanego ekranu ?

Pomozcie z tym, bo moze da sie zadeklarowac ze 640 *xxx na stale i koniec w takiej rozdzielczosci startuje, czy ktos ma 1200 ustawiona czy 800 to walnie zawsze do 640 ?

pozdrawiam...

0

W temacie jest przedrostek delphi, a mnie się wydaje że to raczej jest pascal, no ale mogę się mylić. Gdzieś w FAQ jest jak zmienić rozdzielczość ekranu. Ewentualnie można na początku sprawdzić jaka jest rozdzielczość i dopasować rozmiary obiektów do jej wartości.

0

Przepraszam wszystkich, to przez to ze wszystkie tematy jakie tu pisalem tyczyly sei delphi [rotfl] Oczywiscie chodzi mi tutaj o TP Turbo Pascal

Moderatorze - jak mozesz to zamian przedrostek delphi na TP

0

Zamiast używać DetectGraph możesz przypisać wartości zmiennym ster i tryb zawierających kolejno sterownik i tryb graficzny. Z reguły korzysta się z trybu VGA, który ma dostępne 3 tryby:
VGALo = 0 - 640 x 200, 16 kolorów
VGAMed = 1 - 640 x 350, 16 kolorów
VGAHi = 2 - 640 x 480, 16 kolorów
Czyli przykładowo:

ster:=VGA;
tryb:=VGAHi;

Jeśli chcesz wycisnąć więcej, musisz załadować inny sterownik grafiki, np. VESA, SVGA256. Np:

GraphDriver := InstallUserDriver('SVGA256',@tryb);
    GraphDriver := Detect;                { use autodetection }
    InitGraph(GraphDriver, GraphMode, PathToDriver);
0

Super jest miodzio,

Ale w 640 * 480 jakie sa wymiary ekranu (gora / dol ) od 1 do ile ? ma szerokosc ? a wysokosc ?

Bo dam tak jezeli x:< tu rozmiar maxymalny przy tej graficce.. tego nie wiem... then x:= rozmiar maxymalny nie wiem -10 i dalej program wykonuje dodanie do tego i nie ma zadnego rezultatu graficznego :

0

x=0..639, y=0..479
W każdym trybie graficznym możesz skorzystać z funkcji GetMaxX i GetMaxY.

0

Dobra,
Dzięki,
opracowalem ograniczenia + gratis strzelanie :)

Mogl by mi ktos powiedziec jak dodac tam wroga w postaci kwadratow lecacych ?
Chodzi o to ze maja one leciec nawet gdy user nic nie naciska, ogolnie petle jaka mam widziecie powyzej...

Jak tylko to osiagnac.. nie gotowa ort!, ogolnie jak zeby w tle to cale czas sie przesuwalo...

0

Instrukcje odpowiedzialne za ruch wrogów umieść w tej samej pętli, co odczyt klawisza tylko zrób:

if KeyPressed then ObslugaKlawisza;

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