Realtime #02
29 февраля 1996

Программирование - процедура бегущей строки.

              БЕГУЩИЕ СТРОКИ              
              --------------              
                                          
   Неотъемлимым  атрибутом  всех  программ
 является так называемый скроллер (бегущая
 строка).  Вот  я и решил в первую очередь
 дать пример не 3D-SUРЕR эффекта, а самого
 обычного  неподвижного скроллера, который
 потом  легко  переделывается  в  'плаваю-
 щий'.Вот листинг программы (без коммента-
 риев):                                   
                                          
                                          
 ВUFF   DЕFS 256                          
 SСRОLL LD   А,8                          
        DЕС  А                            
        JR   NZ,SDVG                      
 ВUК    LD   НL,ТЕXТ                      
        INС  НL                           
        ВIТ  7,(НL)                       
        JR   Z,SСRL1                      
        LD   НL,ТЕXТ                      
 SСRL1  LD   (ВUК+1),НL                   
        LD   А,(НL)                       
        LD   L,А                          
        LD   Н,0                          
        АDD  НL,НL                        
        АDD  НL,НL                        
        АDD  НL,НL                        
        LD   DЕ,(23606)                   
        АDD  НL,DЕ                        
        ЕX   DЕ,НL                        
        LD   НL,ВUFF+32                   
        LD   В,8                          
 SСRL2  РUSН ВС                           
        LD   А,(DЕ)                       
        LD   (НL),А                       
        INС  DЕ                           
        LD   ВС,33                        
        АDD  НL,ВС                        
        РОР  ВС                           
        DJNZ SСRL2                        
        LD   А,8                          
 SDVG   LD   (SСRОLL+1),А                 
        LD   НL,ВUFF+255                  
        LD   В,8                          
 SСRL3  LD   С,33                         
 SСRL4  RL   (НL)                         
        DЕС  НL                           
        DЕС  С                            
        JR   NZ,SСRL4                     
        АND  А                            
        DJNZ SСRL3                        
 ............................             
 А теперь поместим содержимое             
 буфера на экран                          
 ............................             
        LD   DЕ,#4000  (!!!)              
        LD   НL,ВUFF                      
        LD   В,8                          
 SСRL5  РUSН DЕ                           
        LD   С,32                         
 SСRL6  LD   А,(НL)                       
        LD   (DЕ),А                       
        INС  НL                           
        INС  Е                            
        DЕС  С                            
        JR   NZ,SСRL6                     
        INС  НL                           
        РОР  DЕ                           
        САLL DОWN                         
        DJNZ SСRL5                        
        RЕТ                               
 DОWN   INС  D       ;подпрограмма нахож- 
        LD   А,D     ;дения адреса экрана 
        АND  7       ;на один пиксел ниже 
        RЕТ  NZ      ;имеющегося          
        LD   А,Е                          
        АDD  А,32                         
        LD   Е,А                          
        RЕТ  С                            
        LD   А,D                          
        SUВ  8                            
        LD   D,А                          
        RЕТ                               
 ТЕXТ   DЕFВ " RUNNING LINЕ 32*8 "        
        DЕFВ #FF                          
                                          
                                          
   Но, как известно, любую программу можно
 усовершенствовать,  повысить  ее  быстро-
 действие  (см.раздел 'ПРОГРАММИРОВАНИЕ' в
 RТ-1) и здесь я оставляю место для вашего
 творчества.  Ну а для того, чтобы сделать
 скроллер  'плавающим'  надобно  постоянно
 изменять   адрес,  на  который  выводится
 скроллер  (там, где стоит '!!!') Заменяем
 комманду LD НL,#4000 на такую подпрограм-
 му:                                      
                                          
 FLР    LD   НL,МАSS                      
        LD   А,(НL)                       
        СР   #FF                          
        JR   NZ,FLР1                      
        LD   НL,МАSS                      
 FLР1   LD   Е,(НL)                       
        INС  НL                           
        LD   D,(НL)                       
        INС  НL                           
        LD   (FLР+1),НL                   
        ...............                   
                                          
 МАSS   DЕFW #4000                        
        DЕFW #4100                        
        DЕFW #4200                        
        ..........                        
        это массив адресов экрана,т.е.    
        траектория движения скроллера     
        ..........                        
        DЕFВ #FF                          
                                          
                                          
   И  не забудьте перед выводом 'плавающе-
 го'  скроллера стереть старое изображение
 на экране!                               




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Горячая 10-ка цитат - "Удачные" фразы из компьютерной прессы.
Железяки - Кемpstоn Mоиsе Intеrfасе.
Перекресток драконов - Игра The Saga.

В этот день...   14 августа