ďťż

Ładny brzuch

W pascalu można wejść w jakiś bliżej mi nie znany tryb graficzny (nie używając żadnego USES; grafika 320x200 @255kol.), mianowicie chodzi mi o kod assemblera:
ASM   mov ax, 13h   int 10h END;Jak w tym trybie coś narysować albo napisać? Ja znalazłem takie coś:
Mem[$A000:x+320*y]:=c;Ups, może ze spacjami będzie lepiej...
M e m [ $ A 0 0 0 : x + 3 2 0 * y ] : = c;Ale to polecenie zakolowuje tylko jeden piksel o położeniu x,y na kolor c (0<x<321 0<y<201 -1<c<255). Jak chcecie zobaczyć jaki kolor jest dla jakiego c to napiszcie:
FOR i:=0 TO 255 DO   Mem[$A000:i+1]:=i;A ja chciałbym jakoś lepiej wykorzystać ten tryb. Narazie napisałem już w nim jeden program (fajnie się rysuje literki - piksel po pikselu... - że też mi się chciało), ale chciałbym jakoś to usprawnić. Są jakieś procedury rysujące w tym trybie?

EDYTOWANO (EMOTIKONKI RULEZ...)
___________________________________________________________________________
GG# 2370024 | Po wyciągnięciu zawleczki granat przestaje być twoim przyjacielem...



cytat:BlackMesa napisał:
A ja chciałbym jakoś lepiej wykorzystać ten tryb. Narazie napisałem już w nim jeden program (fajnie się rysuje literki - piksel po pikselu... - że też mi się chciało), ale chciałbym jakoś to usprawnić. Są jakieś procedury rysujące w tym trybie?

To co napisałeś, jest po prostu przełączeniem się na tryb graficzny 320x200x256.
W tym trybie jeden bajt pamięci ekranu odpowiada jednemu pikselowi.
Stosując poniższą instrukcję
M e m [ $ A 0 0 0 : x + 3 2 0 * y ] : = c ;
po prostu rysujesz, wpisując kolory bezpośrednio do pamięci ekranu.
Z tego co pamiętam to nie ma specjalnych procedur do rysowania w tym trybie - trzeba je napisać samemu :)

A z ciekawości - dlaczego nie korzystasz z standardowych trybów dostępnych z poziomu Pascala ?

Łołłł. Lepiej pokombinuj z czymś innym, w tym co teraz robisz to się napiszesz i napiszesz. Wyniki nie są powalające na kolana, czyni nie warto.

:cheesy:

Udanych prób :!:!:!:!

________________________________________________
._-= EVERYTHING THAT HAS BEGINNING HAS AN END =-_.

http://4programmers....le.html?id=1204 - AFS 1.9.0.5

Mam immunitet wszystkiego na DYS.

cytat:OXI powiedział:
A z ciekawości - dlaczego nie korzystasz z standardowych trybów dostępnych z poziomu Pascala ?Bo lubię eksperymentować. Piszę sobie właśnie własny unit do Pascala (wykorzystujący ten tryb). Pozatym ten sposób nie wymaga podawania ścieżki do jakiś plików ze sterownikami (albo czymśtam - nie pamiętam, coś się podawało przed InitGraph; )

___________________________________________________________________________
GG# 2370024 | Po wyciągnięciu zawleczki granat przestaje być twoim przyjacielem...



cytat:BlackMesa napisał:

cytat:OXI powiedział:
A z ciekawości - dlaczego nie korzystasz z standardowych trybów dostępnych z poziomu Pascala ?

Bo lubię eksperymentować. Piszę sobie właśnie własny unit do Pascala (wykorzystujący ten tryb).

OK, rozumiem.
Życzę powodzenia w pracach nad tym unitem :ok:

Widze, że ktoś tu polubił tajemnice pascala....
:cheesy:

________________________________________________
._-= EVERYTHING THAT HAS BEGINNING HAS AN END =-_.

http://4programmers....le.html?id=1204 - AFS 1.9.0.5

Mam immunitet wszystkiego na DYS.

I w końcu ktoś o Pascalu :) Naprawdę przydałoby się to o czym piszecie tu w gazetce! Szczerze, to w nie mam bladego pojęcia o tym wszystkim i właśnie dlatego chcę się tego nauczyć

cytat:Th0mas napisał:
Szczerze, to w nie mam bladego pojęcia o tym wszystkim i właśnie dlatego chcę się tego nauczyć

Polecam książki o Pascalu napisane przez Andrzeja Marciniaka i wydane przez BUM. Dobrze napisane - ja właśnie z nich nauczyłem się kiedyś Pascala :)

| GG:5365367 | ICQ:245363570 |

Jeśli chodzi o kurs pascala od podstaw, to Oxi ma rację - od tego są książki. Ale w gazetce możnaby poświęcić troszkę miejsca na ciekawostki z Pascala. Ja na przykład niedawno dowiedziałem się jak w programie wykorzystać mysz (to naprawdę proste, ale w szkole tego nie uczą), albo jak zapisać a^b. Z tym drugim zawsze robiliśmy to tak:
FUNCTION Potega (a,b :Integer) :Integer; VAR   lic :Integer;   c :Integer; BEGIN   c:=1;   FOR lic:=1 TO b DO      a:=a*c; END
Ale niedawno dowiedziałem się że wystarczy:
Exp(a*Ln(b))
Wynika to z prostego wzorku matematycznego: a^b=e^(a*ln B) W szkole stosowaliśmy tą pierwszą metodę!

GG# 2370024 | Po wyciągnięciu zawleczki granat przestaje być twoim przyjacielem...

cytat:BlackMesa napisał:
Ale niedawno dowiedziałem się że wystarczy:
Exp(a*Ln(b))
Wynika to z prostego wzorku matematycznego: a^b=e^(a*ln B) W szkole stosowaliśmy tą pierwszą metodę!

Znam ten wzór - ale rzeczywiście podczas nauki programowania pokazują to zwykle na pętli. Wydaje mi się, że to nie tyle z niewiedzy co raczej z chęci zademonstrowania działania pętli i samego języka. Chociaż niekoniecznie jest tak w każdym przypadku.

Co do wzoru który podałeś wyżej to wkradł się mały błąd - powinno być a^b = e^(b*ln a)

| GG:5365367 | ICQ:245363570 |

Jakoś łatwiej mi wydać 10 zł co 2 miechy, niż 60 zł na raz na głupią książkę, tylko o jednym temacie.:cheesy:

Zrobisz co będiesz chciał :)
Ale dla mnie książki dużo lepiej się nadają do nauki programowania niż kursy, które można znaleźć w internecie. A jeśli będziesz się opierał tylko na kursie w KĄE czy jakiejś innej gazetce to czekają cię dłuuuuuugie lata nauki podstaw.

| GG:5365367 | ICQ:245363570 |

To jest znany tryb 13h :)
W necie jest o tym pełno (Dobrze poszukaj).

:)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •