sasm: fix typo error; examples: add fire demo
This commit is contained in:
parent
87ec71bd6d
commit
8f4d017668
5 changed files with 492 additions and 1 deletions
76
examples/fire.pas
Normal file
76
examples/fire.pas
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
{$H1}
|
||||
{$S2}
|
||||
program fire;
|
||||
const MAXX = 30;
|
||||
MAXY = 50;
|
||||
var firebuf: array [0..MAXY, 0..MAXX] of integer;
|
||||
|
||||
firepalette: array [0..15] of integer =
|
||||
( $FFA, $FF8, $FF4, $FF0, $FE0, $FD0, $FA0, $F90,
|
||||
$F00, $E00, $D00, $A00, $800, $600, $300, $000);
|
||||
x,y:integer;
|
||||
|
||||
procedure createPalette;
|
||||
var i:integer;
|
||||
begin
|
||||
for i := 15 downto 0 do
|
||||
setpalette(15 - i, firepalette[i]);
|
||||
end;
|
||||
|
||||
procedure fireItUp;
|
||||
var x,y:integer;
|
||||
begin
|
||||
y := MAXY - 1;
|
||||
for x := 1 to MAXX - 1 do
|
||||
firebuf[y, x] := random and 127;
|
||||
end;
|
||||
|
||||
procedure updateFire;
|
||||
var i,x,y:integer;
|
||||
begin
|
||||
for y := 0 to MAXY - 2 do
|
||||
for x := 1 to MAXX - 1 do
|
||||
begin
|
||||
i :=
|
||||
((firebuf[y + 1, x - 1]
|
||||
+ firebuf[y + 1, x]
|
||||
+ firebuf[y + 1, x + 1]
|
||||
+ firebuf[y + 2, x])
|
||||
) shr 2;
|
||||
if i > 0 then
|
||||
i := i - 1;
|
||||
firebuf[y, x] := i;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure drawFire;
|
||||
var x, y, col:integer;
|
||||
begin
|
||||
for y := 0 to MAXY - 1 do
|
||||
begin
|
||||
x := 0;
|
||||
for col in firebuf[y] do
|
||||
begin
|
||||
putpixel(300 + x, 150 + y, col shr 3);
|
||||
x := x + 1;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
begin
|
||||
randomize;
|
||||
initgraphics;
|
||||
createPalette;
|
||||
while not conavail do
|
||||
begin
|
||||
fireItUp;
|
||||
updateFire;
|
||||
drawFire;
|
||||
end;
|
||||
|
||||
for y := 0 to MAXY do
|
||||
begin
|
||||
x := firebuf[y, 10];
|
||||
drawline(0, y, x, y, 1);
|
||||
end;
|
||||
end.
|
||||
Loading…
Add table
Add a link
Reference in a new issue