Skip to content

Instantly share code, notes, and snippets.

@andrelramos
Last active August 26, 2016 14:04
Show Gist options
  • Save andrelramos/a1bb23e04d05be6e0d30d8ae5adce9c5 to your computer and use it in GitHub Desktop.
Save andrelramos/a1bb23e04d05be6e0d30d8ae5adce9c5 to your computer and use it in GitHub Desktop.
Program Portal ;
uses graph;
Type
// Generic types
position = record
x: integer;
y: integer;
end;
attributes = record
hp: integer;
damage: integer;
end;
// Defining enemys
enemy = record
attr: attributes;
coordinates: position;
size: integer;
end;
vetEnemys = array[1..100] of enemy;
// Defining player
player = record
attr: attributes;
coordinates: position;
end;
procedure initGraphMode(var driver: integer; var modo: integer);
begin
driver := Detect;
initgraph(driver, modo, '');
if(graphResult <> grOk) then
begin
writeln('Erro ao inicializar o modo grafico.', GraphErrorMsg(graphResult));
exit;
end;
end;
procedure drawEnemys(enemys: vetEnemys; quantity: integer);
var
i: integer;
begin
for i := 1 to quantity do
begin
Circle(enemys[i].coordinates.x, enemys[i].coordinates.y, enemys[i].size);
writeln('Draw enemy in: x:',enemys[i].coordinates.x,' y: ',enemys[i].coordinates.y);
end;
end;
procedure updateTicker(var ticker: integer); // Handle the ticker value
// Ticker is the variable that control the game time
begin
ticker := ticker + 1;
writeln('Ticker: ', ticker);
delay(20);
end;
procedure updateEnemys(var enemys: vetEnemys; var quantity: integer; var ticker: integer);
var
cdt: position; // Coordinates
attr: attributes;
i: integer;
begin
i := 1;
while(i <= quantity) do
begin
if(ticker mod 200 = 0) then
begin
// Update attributes
cdt := enemys[i].coordinates;
attr := enemys[i].attr;
if(cdt.x = 0) and (cdt.y = 0) then // If coordinates are zero, the enemy doesn't was initialized
begin
cdt.x := 500;
cdt.y := 100;
attr.damage := random(20) + 10;
attr.hp := random(200) + 100;
enemys[i].size := random(25) + 10;
end
else
begin
cdt.x := cdt.x - 10;
end;
enemys[i].coordinates := cdt;
enemys[i].attr := attr;
i := i + 1;
end;
updateTicker(ticker);
drawEnemys(enemys, quantity);
end;
end;
var
driver, modo, ticker, quantity: integer;
enemys : vetEnemys;
Begin
initGraphMode(driver, modo);
quantity := 20;
While(true) do
begin
if(ticker mod 100 = 0) then
begin
updateEnemys(enemys, quantity, ticker);
end;
updateTicker(ticker);
end;
closegraph;
End.
@andrelramos
Copy link
Author

Arrumar problema com o DrawEnemys

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment