Aktualności: C64 Power - online od stycznia 2000 !

Autor Wątek: Basic grafika  (Przeczytany 698 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Siewca Propagandy

  • Gość
Basic grafika
« dnia: 14 Lipca 2006, 01:27 »
 Witam!  
  Mam  problem  z  grafiką  w  Basicu.  Szukałem  na  necie  stosownych  kursów,  ale  niczego  nie  znalazłem.  
  Otóż  chcę  zrobić  płynne  przesuwanie  się  różnokolorowych  linii  z  góry  na  dół.  Problem  tkwi  w  tym,  że  jak  już  odpalam  program  to  najpierw  całe  pole,  po  którym  linie  mają  się  przemieszczać  jest  zamazywane  jednym  kolorem,  potem  drugim  i  tak  do  wyczerpania  ustawionych  kolorów.  Chcę  żeby  było  tak,że  naraz  przesuwają  się  np.  3  linie  różnego  koloru  naraz  jedna  pod  drugą  i  żeby  się  zapętliły.  Daję  kod.  
   
  screen  13  
  for  a  =  1  to  256  step  5  `a  to  kolor  linii  
  for  c  =  95  to  105  `c  to  miejsce,  po  którym  mają  się  przesuwać  linie  
  line  (1,c)-(320,c),a  
  sleep  77  
  next  a  
  next  c  
   
  Chodzi  mi  o  taki  efekt  scrolingu  jaki  można  ujżeć  np.  na  samym  początku  Giana  sisters  w  crack  intrze  :).



Offline Raf

  • Master of disaster
  • Administrator
  • Level 7
  • **********
  • Wiadomości: 7336
  • Wolność, własność, sprawiedliwość
Basic grafika
« Odpowiedź #1 dnia: 14 Lipca 2006, 12:15 »
 to  sie  pisze  w  asemblerze  na  przerwaniach  rastrowych  ,  basci  jest  za  wolno  interpetowany  aby  uzyskac  taki  efekt
"Cokolwiek powiesz albo napiszesz, znajdzie się ktoś, kto słyszy lub czyta coś zupełnie innego i jeszcze bezczelnie wmawia Ci to"

Offline OSH

  • Level 5
  • *****
  • Wiadomości: 503
Basic grafika
« Odpowiedź #2 dnia: 17 Lipca 2006, 12:29 »
 Poza  tym,  kod,  który  podałeś,  nie  jest  z  BASIC-a  2.0  zaimplementiowanego  w  C-64.  W  czym  Ty  to  pisałeś??  

zyga

  • Gość
Basic grafika
« Odpowiedź #3 dnia: 17 Lipca 2006, 13:02 »
 Simons`  Basic  ?

Offline Skull

  • Level 6
  • ******
  • Wiadomości: 2034
Basic grafika
« Odpowiedź #4 dnia: 20 Lipca 2006, 15:00 »
 Kod  jest  w  zasadzie  poprawny    \'\'  ,  (no  może  poztym  że  źle  zapętliłeś  -  pomieszałeś  zewnętrzną  z  wewnętrzną)  
  ale  niestety  tu  wchodzą  \'ograniczenia\'  commodore  (zresztą  innych  ośmiobitowców  też).  
  Commodore  ma  16  kolorów  -  a  twój  program  korzysta  z  55  :).  
  Co  do  grafiki  -  ekran  jest  podzielony  na  kwadraciki  8x8  punktów,  w  których  mogą  być  tylko  dwa  kolory  i  to  jeszcze  jeden  z  nich  to  tło  tego  kwadraciku!  Więc  przesuwając  jedną  linię,  to  jeszcze  można  to  jakoś  pogodzić  -  gorzej  wiecej.  
  Żeby  uzyskać  zamierzony  przez  Ciebie  efekt  musisz  tak  jak  wspomniał  rafvte  oprzeć  to  na  assemblerze.  Wtedy  bedzie  to  wyglądało  tak,  że  podczas  wyrysowywania  ekranu  w  odpowiedniej  linii  będzie  się  zmieniał  kolor  tła  i  w  nastepnej  znowu  itd.  
  Niestety  nie  da  sie  tego  zrobić  w  basicu,  bo  samo  rozpoznanie  rozkazu  (np  line  (x,y)-(x,y),c)  zabiera  pare  linii  wyswietlania  ekranu  (mówiąc  w  dużym  skrócie)  i  nie  trafiłbyś  w  linię  którą  byś  chciał.    
  Rozkazy  assemblera  zajmują  tylko  cząstke  takiej  linii  np.  1/10  -  i  problem  z  trafieniem,  już  jest  mniejszy.  
  pzdr