Интересно

Где найти работу программисту?

16.12.2016

За последние несколько лет ситуация на российском рын
Все о программировании.

02.08.2016

Информация о методических материалах о программирова
Программирование

31.07.2016

Современное общество стремиться компьютеризировать и
Полезная информация по программированию

15.07.2016

В современном мире технологии стали очень развитыми.

Друзья

s3.jpg
s1.jpg
s2.jpg


Заведем два массива 1 и 2 - один массив будет содержать текущий кадр пламени,а во второй мы будем заносить результаты вычислений. Создадим палитру пламени от 250 до 100 это будет сплошной белый цвет - пламя в очаге. Далее белый, плавно проходя через желтый, перейдет в красный и черный. Эту палитру можете посмотреть если определен Debug.

В чем состоит основа алгоритма - для каждой точки из массива 1, мы делаем следующее : берем сумму всех окружающих ее точек и делим на их количество. Для хорошего качества точек берем 8. Что же получается? Если очаг пламени организовать внизу, т.е. внизу на каждом шаге случайно ставить точки с большим значением, усредненные суммы дадут нужное затухание. Т.к. мы ставим в очаге точки случайно , то появляются красивые языки.

Последовательность действий:

  • Массив 1 содержит текущий кадр пламени.
  • Создаем в массиве 1 внизу случайные очаги ( просто ставим точки)
  • Каждый элемент массива 2 получаем как усреденную сумму, соответствующих элементов окружающий данный в массиве 1
  • Массив 2 копируем на экран
  • Переносим массив 2 в массив 1
  • Переход на начало

Для программы требуется модуль demovga.pas

{.$DEFINE DEBUG} 
Program Fire; 
 
Uses DemoVga,Crt; 
 
Type 
   PFireMem = ^TFireMem; 
   TFireMem = Array[0..201,0..319] Of Byte; 
Var 
   FireMem        : PFireMem; 
   I,J            : Integer; 
   R,G,B,dR,dG,dB : Real; 
 
Procedure PlotFireHead; 
Var 
  I : Integer; 
Begin 
 For I := 0 To 319 Do 
  If Random( 2) = 1 Then Begin 
   FireMem^[ 199] [ I] := 255; 
   FireMem^[ 198] [ I] := 255; 
  End; 
End; 
 
Procedure FireLoop; Assembler; 
Asm 
   Push    DS 
   Les           DI,DBuffer 
   Lds           SI,FireMem 
   Add           SI,320*2 
   Mov           CX,64000 
@@F: 
   Xor           AX,AX 
   Add           AL,[SI-321] 
   Adc           AH,0 
   Add           AL,[SI-320] 
   Adc           AH,0 
   Add           AL,[SI-319] 
   Adc           AH,0 
   Add           AL,[SI-1] 
   Adc           AH,0 
   Add           AL,[SI+1] 
   Adc           AH,0 
   Add           AL,[SI+319] 
   Adc           AH,0 
   Add           AL,[SI+320] 
   Adc           AH,0 
   Add           AL,[SI+321] 
   Adc           AH,0 
   Shr           AX,3 
   Or           AL,AL 
   Jz           @@1 
   Dec           AL 
@@1: 
   Stosb 
   Inc           SI 
   Loop    @@F 
   Pop           DS 
End; 
 
Begin 
 InitDemoPart; 
 GetMem( FireMem, 65000); 
 R := 0; G := 0; B := 0; 
 dR := 0.63; dG := 0.91; dB := 1.5; 
 For I := 1 To 100 Do Begin 
  SetRGBColor( I, Round( R), Round( G), Round( B)); 
  R := R + dR; 
  If I > 30 Then G := G + dG; 
  If I > 60 Then B := B + dB; 
 End; 
 For I := 100 To 250 Do SetRGBColor( I, 60, 60, 60); 
{$IFDEF DEBUG} 
 For I := 1 To 100 Do 
  For J := 1 To 100 Do 
   Mem[$A000: J * 320 + I] := I; 
 ReadKey; 
{$ENDIF} 
 FillChar( FireMem^, 65000, 0); 
 Repeat 
  PlotFireHead; 
  FireLoop; 
  Move( DBuffer^, FireMem^, 64000); 
  Move( DBuffer^, Ptr( $A000, 0)^, 64000-320*4); 
 Until KeyPressed; 
 ReadKey; 
 FreeMem( FireMem, 65000); 
 RestoreDemo; End; 

Добавить комментарий


Защитный код
Обновить

Вебдизайнерам


Создать сайт может даже новичок
Наш мир постоянно меняется, и большинство изменений являются результатом компьютерных технологий и Интернет. Почти во всех областях, в настоящее время, адаптации к этим изменениям происходят за счет перехода к последним тенденциям для того, чтобы идти в ногу со своими конкурентами. В области маркети...

Продвижение


Мастер web дизайна
Web дизайн, как составляющая продвижения сайта Все существующие на сегодняшний день сайты можно разделить на два типа. Первый тип сайтов создается энтузиастами и не несет в себе коммерческой составляющей. Как правило, подобные сайты посвящены какому-либо виду человеческой деятельности, либо конкрет...

IT-Архитекторам


Самоучитель программирования html, java
Помощник начинающих - самоучитель программирования html В настоящее время в мировой сети Интернет насчитывается около семнадцати миллиардов активных Интернет-сайтов, и их количество продолжает стремительно расти. Создать сайт может не только программист, но и любой человек, мало-мальски разбирающий...