Jump to content
damagex

Top Down Shooter

Recommended Posts

[align=center]

Top down shooter

Created by: damagex

Current V1.2a

This topic will be updated whenever I release a next version.

Please report any bugs to me.

 

[spoiler=[b]Controls[/b]]

What controls do I use?

Movement = Left/Right arrows

Shoot = Left CTRL

 

 

 

[spoiler=[b]Features[/b]]

Current features:

Kill counter

Lifes system

Adjustable Field Height and Width

Adjustable background (stars)

Adjustable Refresh Rate

 

Future features:

- Powerups (Extra life, stronger bullets)

- Ship movement (up and down)

- Extra weapons

- More enemies

 

 

 

 

[scar]

(* Easy Top Down Shooter *)

{ Created by: damagex @ scar-divi.com }

{ Version 1.2a }

 

const //Difficulty settings\\

refreshRate = 100; // Low = hard - High = easy

fieldWidth = 30; // Low = easy - High = hard

fieldHeight = 10; // Low = hard - High = easy

//Other Settings\\

useBackground = 0; // 0 = off - 1 = on

 

var

fieldArr : Array[1..fieldWidth] of Array[0..fieldHeight] of String;

field : Array [0..fieldHeight] of AnsiString;

enemy, bullet : Array [0..fieldHeight] of Integer;

i, e, f, bg, current, Lifes, score : Integer;

 

isShooting, isEnemy, spawnEnemy : Integer;

 

information, layout : String;

repeater : Integer;

 

begin

repeater := 0;

lifes := 3;

spawnEnemy := 0;

isEnemy := 0;

current := fieldWidth div 2;

isShooting := 0;

score := 0;

information := '';

 

for i := low(enemy) to high(enemy) do begin

enemy := 0;

end;

for i := low(bullet) to high(bullet) do begin

bullet := 0;

end;

repeat

 

// Input Handler

if (IsArrowDown(1)) then begin

if(current < fieldWidth) then begin

current := current + 1;

end;

end;

if (IsArrowDown(3)) then begin

if(current > Low(fieldArr)) then begin

current := current - 1;

end;

end;

if (IsFunctionKeyDown(4)) AND not (isShooting <> 0) then begin

bullet[1] := current;

isShooting := 1;

end;

 

// Enemy handler

spawnEnemy := 1;

if (spawnEnemy = 1) AND not (isEnemy <> 0) then begin

isEnemy := 1;

enemy[high(enemy)] := RandomRange(Low(fieldArr)+1,fieldWidth);

spawnEnemy := 0;

end;

layout := '';

for f := low(fieldArr) to fieldWidth do begin

layout := layout + '_';

end;

 

for f := low(field) to fieldHeight do begin

field[f] := '|';

end;

 

for i := low(fieldArr) to fieldWidth do begin

for e:= low(field) to fieldHeight do begin

if (e = 0) then begin

if (i <> current) then begin

fieldArr[0] := ' ';

end else begin

fieldArr[0] := 'A';

end;

end else begin

if (i <> bullet[e]) then begin

if (i <> enemy[e]) then begin

if (useBackground = 1) then begin

bg := RandomRange(0,50);

end;

if not (bg = 1) then begin

fieldArr[e] := ' ';

bg := 0;

end else begin

fieldArr[e] := '+';

end;

end else begin

fieldArr[e] := 'V';

end;

end else begin

fieldArr[e] := '.';

end;

end;

end;

for f := low(field) to high(field) do begin

field[f] := field[f] + fieldArr[f];

end;

end;

 

for f := low(field) to high(field) do begin

field[f] := field[f] + '|';

end;

 

clearDebug;

WriteLn(' '+layout+' ');

i := high(field);

while (i > -1) do begin

WriteLn(field);

i := i - 1;

end;

WriteLn('|'+layout+'|');

WriteLn(information);

WriteLn('Press "CTRL + ALT + S" to stop playing');

WriteLn('Created by: Damagex @ scar-divi.com');

WriteLn(bg);

wait(refreshRate);

i := 1;

for i := 1 to fieldHeight do begin

if (enemy = bullet) AND (enemy <> 0) OR (enemy[i-1] = bullet) AND (enemy[i-1] <> 0) then begin

enemy := 0;

enemy[i-1] := 0;

bullet := 0;

isShooting := 0;

isEnemy := 0;

Score := Score + 1;

end;

end;

 

i := 1;

e := 0;

if (isShooting = 1) then begin

while (e = 0) do begin

if (i = high(bullet)) then begin

isShooting := 0;

e := 1;

end else if (bullet > 0) then begin

e := 1;

bullet[i+1] := bullet;

end;

bullet := 0;

i := i + 1;

end;

end;

 

if (repeater > 5) then begin

i := fieldHeight;

e := 0;

if (isEnemy = 1) then begin

while (e = 0) do begin

if (i = 1) then begin

e := 1;

isEnemy := 0;

lifes := lifes-1;

end else if (enemy > 0) then begin

e := 1;

enemy[i-1] := enemy;

end;

enemy := 0;

i := i - 1;

end;

end;

repeater := 0;

end else begin

repeater := repeater + 1;

end;

information := 'Kills: ' + IntToStr(score) + ' - Lifes left: ' + IntToStr(lifes);

until(lifes = -1);

ClearDebug;

WriteLn(' _____________________________________________________________________ ');

WriteLn('| ______ _______ _______ _______ _____ _ _ _______ ______ |');

WriteLn('| | ____ |_____| | | | |______ | | \ / |______ |_____/ |');

WriteLn('| |_____| | | | | | |______ |_____| \/ |______ | \_ |');

WriteLn('| Game Report scar-divi.com |');

WriteLn('| Final Kill Count: ' + IntToStr(score) + ' Damagex |');

WriteLn('|_____________________________________________________________________|');

 

end.

[/scar]

[spoiler=[b]Changelog[/b]]

version 1.2a

Script tweaks

New adjustable settings for difficulty

 

 

 

[spoiler=[b]Older Versions[/b]]

[scar](*Top Down Shooter *)

{ Created by: damagex @ scar-divi.com }

{ Version 0.8a }

 

const

refreshRate = 500; //Lower = Faster = More difficult

fieldWidth = 20; //Higher = Bigger = More difficult

 

var

Field0Arr, Field1Arr, Field2Arr, Field3Arr, Field4Arr, Field5Arr, Field6Arr, Field7Arr : Array[1..fieldWidth] of String;

i, current, bullet, bullet1, bullet2, bullet3, bullet4, bullet5, bullet6, bullet7 : Integer;

enemy, enemy1, enemy2, enemy3, enemy4, enemy5, enemy6, enemy7 : Integer;

isShooting, isEnemy, spawnEnemy, Lifes, score: Integer;

Field0, Field1, Field2, Field3, Field4, Field5, Field6, Field7, information : String;

 

begin

lifes := 3;

spawnEnemy := 0;

isEnemy := 0;

enemy := 0;

enemy1 := 0;

enemy2 := 0;

enemy3 := 0;

enemy4 := 0;

enemy5 := 0;

enemy6 := 0;

enemy7 := 0;

current := fieldWidth div 2;

bullet := 0;

bullet2 := 0;

bullet3 := 0;

bullet4 := 0;

bullet5 := 0;

bullet6 := 0;

bullet7 := 0;

isShooting := 0;

score := 0;

information := '';

 

repeat

// Input Handler

if (IsArrowDown(1)) then begin

if(current < High(Field0Arr)) then begin

current := current + 1;

end;

end;

if (IsArrowDown(3)) then begin

if(current > Low(Field0Arr)) then begin

current := current - 1;

end;

end;

if (IsFunctionKeyDown(4)) AND not (isShooting <> 0) then begin

bullet := current + 1;

isShooting := 1;

end;

 

// Enemy handler

spawnEnemy := RandomRange(0,10);

if (spawnEnemy = 1) AND not (isEnemy <> 0) then begin

isEnemy := 1;

enemy7 := RandomRange(Low(Field0Arr)+1,High(Field0Arr));

spawnEnemy := 0;

end;

 

// Field Updater

Field0 := '|';

Field1 := '|';

Field2 := '|';

Field3 := '|';

Field4 := '|';

Field5 := '|';

Field6 := '|';

Field7 := '|';

for i := Low(Field0Arr) to High(Field0Arr) do begin

if (i <> current) then begin

Field0Arr := ' ';

End else begin

Field0Arr := '/|\';

end;

if (i <> bullet) then begin

if (i <> enemy) then begin

Field1Arr := ' ';

end else begin

Field1Arr := 'V';

end;

end else begin

Field1Arr := '.';

end;

if (i <> bullet2) then begin

if (i <> enemy2) then begin

Field2Arr := ' ';

end else begin

Field2Arr := 'V';

end;

end else begin

Field2Arr := '.';

end;

if (i <> bullet3) then begin

if (i <> enemy3) then begin

Field3Arr := ' ';

end else begin

Field3Arr := 'V';

end;

end else begin

Field3Arr := '.';

end;

if (i <> bullet4) then begin

if (i <> enemy4) then begin

Field4Arr := ' ';

end else begin

Field4Arr := 'V';

end;

end else begin

Field4Arr := '.';

end;

if (i <> bullet5) then begin

if (i <> enemy5) then begin

Field5Arr := ' ';

end else begin

Field5Arr := 'V';

end;

end else begin

Field5Arr := '.';

end;

if (i <> bullet6) then begin

if (i <> enemy6) then begin

Field6Arr := ' ';

end else begin

Field6Arr := 'V';

end;

end else begin

Field6Arr := '.';

end;

if (i <> bullet7) then begin

if (i <> enemy7) then begin

Field7Arr := ' ';

end else begin

Field7Arr := 'V';

end;

end else begin

Field7Arr := '.';

end;

Field0 := Field0 + Field0Arr;

Field1 := Field1 + Field1Arr;

Field2 := Field2 + Field2Arr;

Field3 := Field3 + Field3Arr;

Field4 := Field4 + Field4Arr;

Field5 := Field5 + Field5Arr;

Field6 := Field6 + Field6Arr;

Field7 := Field7 + Field7Arr;

end;

Field0 := Field0 + '|'

Field1 := Field1 + ' |'

Field2 := Field2 + ' |'

Field3 := Field3 + ' |'

Field4 := Field4 + ' |'

Field5 := Field5 + ' |'

Field6 := Field6 + ' |'

Field7 := Field7 + ' |'

 

ClearDebug;

WriteLn(Field7);

WriteLn(Field6);

WriteLn(Field5);

WriteLn(Field4);

WriteLn(Field3);

WriteLn(Field2);

WriteLn(Field1);

WriteLn(Field0);

WriteLn(information);

WriteLn('Press "CTRL + ALT + S" to stop playing');

WriteLn('Created by: Damagex @ scar-divi.com');

wait(refreshRate);

 

if (enemy = bullet) AND (enemy <> 0) OR (enemy2 = bullet) AND (enemy2 <> 0) then begin

enemy := 0;

enemy2 := 0;

bullet := 0;

isShooting := 0;

isEnemy := 0;

Score := Score + 1;

end else if (enemy2 = bullet2) AND (enemy2 <> 0) OR (enemy3 = bullet2) AND (enemy3 <> 0) then begin

enemy2 := 0;

enemy3 := 0;

bullet2 := 0;

isShooting := 0;

isEnemy := 0;

Score := Score + 1;

end else if (enemy3 = bullet3) AND (enemy3 <> 0) OR (enemy4 = bullet3) AND (enemy4 <> 0) then begin

enemy3 := 0;

enemy4 := 0;

bullet3 := 0;

isShooting := 0;

isEnemy := 0;

Score := Score + 1;

end else if (enemy4 = bullet4) AND (enemy4 <> 0) OR (enemy5 = bullet4) AND (enemy5 <> 0) then begin

enemy4 := 0;

enemy5 := 0;

bullet4 := 0;

isShooting := 0;

isEnemy := 0;

Score := Score + 1;

end else if (enemy5 = bullet5) AND (enemy5 <> 0) OR (enemy6 = bullet5) AND (enemy6 <> 0) then begin

enemy5 := 0;

enemy6 := 0;

bullet5 := 0;

isShooting := 0;

isEnemy := 0;

Score := Score + 1;

end else if (enemy6 = bullet6) AND (enemy6 <> 0) OR (enemy7 = bullet6) AND (enemy7 <> 0) then begin

enemy6 := 0;

enemy7 := 0;

bullet6 := 0;

isShooting := 0;

isEnemy := 0;

Score := Score + 1;

end else if (enemy7 = bullet7) AND (enemy7 <> 0) then begin

enemy7 := 0;

bullet7 := 0;

isShooting := 0;

isEnemy := 0;

Score := Score + 1;

end;

 

if (bullet > 0)then begin

bullet2 := bullet;

bullet := 0;

end else if (bullet2 > 0) then begin

bullet3 := bullet2;

bullet2 := 0;

end else if (bullet3 > 0) then begin

bullet4 := bullet3;

bullet3 := 0;

end else if (bullet4 > 0) then begin

bullet5 := bullet4;

bullet4 := 0;

end else if (bullet5 > 0) then begin

bullet6 := bullet5;

bullet5 := 0;

end else if (bullet6 > 0) then begin

bullet7 := bullet6;

bullet6 := 0;

end else if (bullet7 > 0) then begin

bullet7 := 0

isShooting := 0;

end;

 

if(enemy7 > 0)then begin

enemy6 := enemy7;

enemy7 := 0;

end else if (enemy6 > 0) then begin

enemy5 := enemy6;

enemy6 := 0;

end else if (enemy5 > 0) then begin

enemy4 := enemy5;

enemy5 := 0;

end else if (enemy4 > 0) then begin

enemy3 := enemy4;

enemy4 := 0;

end else if (enemy3 > 0) then begin

enemy2 := enemy3;

enemy3 := 0;

end else if (enemy2 > 0) then begin

enemy := enemy2;

enemy2 := 0;

end else if (enemy > 0) then begin

enemy:= 0

isEnemy := 0;

lifes := lifes - 1;

end;

information := 'Kills: ' + IntToStr(score) + ' - Lifes left: ' + IntToStr(lifes);

until(lifes = -1);

ClearDebug;

WriteLn(' _____________________________________________________________________ ');

WriteLn('| ______ _______ _______ _______ _____ _ _ _______ ______ |');

WriteLn('| | ____ |_____| | | | |______ | | \ / |______ |_____/ |');

WriteLn('| |_____| | | | | | |______ |_____| \/ |______ | \_ |');

WriteLn('| Game Report scar-divi.com |');

WriteLn('| Final Kill Count: ' + IntToStr(score) + ' Damagex |');

WriteLn('| Playtime: ' + IntToStr(GetTimeRunning) + ' ms |');

WriteLn('|_____________________________________________________________________|');

 

end.[/scar]

[/align]

Link to comment
Share on other sites

Thanks, it was my intention to use the debugbox and make the game look like this, but now that I think of it, I might be able to create a GUI with a large textbox and make the game playable there.

 

I'm not that much familiar with the drawing functions yet, but I will look into that later.

 

Updated!

Redone the script, it's now much more dynamic.

Link to comment
Share on other sites

オンライン カジノは、プレイヤーが自宅にいながらにしてポーカー、ルーレット、ブラックジャック、スロットなどのギャンブル ゲームを楽しむ機会を提供する仮想プラットフォームです。 オンラインカジノは、アクセスのしやすさ、ゲームの種類の多さ、そして大金を獲得する機会があるため、年々人気が高まっています。

オンラインカジノの主な利点は、利便性とアクセスしやすさです。 プレイヤーは、通常のカジノの営業時間に制限されず、いつでもゲームを楽しむことができます。 必要なのは、インターネットにアクセスできるデバイスと、カジノのウェブサイトにアクセスできることだけです。 これにより、プレイヤーは従来のカジノによくありがちなストレスや緊張を感じることなく、快適な環境でプレイすることができます。

オンラインカジノのもう1つの利点は、ゲームの選択肢が豊富なことです。 ユーザーは、それぞれ独自のルールと勝利の機会を提供する何百もの異なるゲームから選択できます。 技術革新のおかげで、オンライン ゲームのグラフィックとサウンドは高品質になり、プレイヤーは興奮と情熱の雰囲気に浸ることができます。

さまざまなゲームに加えて、オンライン カジノはプレーヤーにさまざまなボーナスやプロモーションも提供します。 これらは、スロットのフリースピン、プレイのための追加のお金、または貴重な賞品が得られる特別なトーナメントなどです。 このようなボーナスにより、勝利の可能性が高まり、ゲームがさらに楽しくなります。

もちろん、オンラインカジノでのプレイにはリスクがあります。 ギャンブルには依存性がある可能性があるため、自分の感情を監視し、支出をコントロールすることが重要であることを覚えておくことが重要です。 カジノはまた、責任あるゲーミングをサポートし、自己排除や賭け金制限の機会を提供します ポケモン ジムリーダー

全体として、オンライン カジノはギャンブル愛好家にとって便利でエキサイティングなエンターテイメントを提供します。 幅広いゲーム、ボーナスの選択肢があり、いつでもプレイできるため、世界中のプレイヤーの間で人気が高まっています。 ただし、責任あるゲームと、ゲームが単なる楽しみと娯楽の源であるように自分の行動を制御する能力について覚えておくことが重要です。
Link to comment
Share on other sites

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

1. Установите цель

Пробным камнем к удачному похудению является установление определенной цели. Определите, сколько килограммов вы хотите сбросить и по какой-никакой причине. Цель должна быть реалистичной, измеримой и достижимой.

2. Питание

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

3. Физическая активность

Регулярные физические упражнения включая посодействуют спаливать калории, но и укрепят мышцы, улучшат общее самочувствие и увеличат выносливость. Найдите вид активности, который вам нравится: от йоги до плавания, от бега до танцев.

4. Гидрация

Пить достаточное количество воды во время денька не только поможет вам поддерживать уровень жидкости в организме, а также ускорит метаболизм, снизит аппетит и поможет сбросить лишний вес.

5. Сон

Качественный сон играет главную роль в процессе похудения. Пытайтесь спать не менее 7-8 часов в сутки, чтоб ваш организм мог восстановиться, а метаболизм был в норме.

6. Управление стрессом

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

7. Ежедневный контроль

Ведение дневника пищевых повадок и физической активности поможет вам осознать, что вы едите и какое количество калорий потребляете, но также оценить свои успехи.

8. Постепенные изменения

Избегайте радикальных диет и стрессовых ситуаций. Внедряйте изменения в питании и образе жизни постепенно, чтобы они стали стабильными привычками.
Link to comment
Share on other sites

buy or sell bitcoin reddit movie crypto crypto.comtax legend of.mushroom codes mm finance crypto amazon checkout ai .017 bitcoin to usd altcoin psycho accounts hacked by bitcoin scammers mortal kombat 1 steamdb $cast crypto currency how to buy bitcoin from coinme crypto influencer how do you exchange bitcoins for dollars truefi crypto

$sent crypto how to buy.bitcoin 1 bitcoin en euro 2016 crypto exchange with airdrops cryptocurrency fundamental analysis is coinbase secure wallet crypto.com tickets why cant i send crypto from coinbase litecoin mining calculator do you have to buy whole bitcoin

053 bitcoin to uds ach crypto price target 7500-faceless-coders-paid-bitcoin-built-hedge-funds-brain rational root bitcoin anonymous crypto debit card account bitcoin maplestr buy email with bitcoin airdrop fuel achat bitcoins par carte

how to buy bitcoin with cash usa acheter crypto carte bleue 0.00006704 bitcoin yo usd render price predictions best bitcoin wallet buy and sell bitcoin price per share best non kyc crypto exchange $cliff crypto 2018 crypto predictions can you use credit card to buy bitcoins

avalanche crypto latest news a bitcoin transaction maven 11 dolphin crypto total bitcoin
Link to comment
Share on other sites

crypto metaverse buy bitcoins india what is a spot bitcoin etf ecomi price best gpu to mine cryptocurrency how to buy and use bitcoin cash 783 bitcoin to usd osmosis token can i buy bitcoin with my debit card on paxful bitcoin buy in china and sell in usa activate card crypto.com a partir de quanto posso investir em bitcoin 21 million bitcoin mining crypto live casino 1080 bitcoin mining

disney gift cards at costco best crypto cities buy bitcoins with paypal cash app bitcoin taxes achat bitcoin paypal buy bitcoin cryptocurrency 34dk7rm1kvjx9xblt7humtpqqzomrggr57 bitcoin address top crypto to invest in akon bitcoin price civitia

apps to buy all bitcoins rivian stock price prediction 2030 avalanche crypto swap should i sell dogecoin optimism airdrop 016 bitcoin charlie shrem buy bitcoin whalepool 5 000 000 bitcoin to usd u.s. crypto bill what is premier seating at crypto.com arena

bitcoin lite chocolate bitcoins call crypto.com plsx crypto mining coin 100k in crypto how to buy bitcoin with trust wallet buy camera gear with bitcoin how to buy bitcoin stock in robinhood 49 bitcoin to us dollars

play-to-earn game anita max wynn mean $cmb crypto op crypto price 0.0002239 bitcoin
Link to comment
Share on other sites

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

1. Рулонные материалы

Рулонные гидроизоляционные материалы используются для защиты кровель и фундаментов. Они посещают на основе битума и полимеров.
- Битумные рулоны популярны благодаря своей доступности и безопасности. Употребляются на плоских крышах и в основании зданий.
- Полимерные рулоны имеют более высокую прочность и долговечность, подходят для сложных климатических условий.

2. Жидкая гидроизоляция

Жидкие гидроизоляторы используются для творенья бесшовного покрытия. Они бывают на основе:
- Полимеров просто наносятся и образуют прочную мембрану.
- Цемента совершенно подходят для ванной и кухни, обладают неплохими гидрофобными свойствами.

3. Проникающая гидроизоляция

Этот тип просачивается в структуру бетона и заполняет микротрещины, обеспечивая надежную охрану. Применяется преимущественно для фундаментов и подвалов. Проникающая гидроизоляция эффективно справляется с постоянным воздействием воды.

4. Мембранная гидроизоляция

Мембранные системы часто употребляются для крыши и подземных конструкций. Такой метод обеспечивает надежную защиту от осадков и грунтовых вод.
- ЭПДМ и ТПО мембраны имеют высокую устойчивость к ультрафиолету и механическим повреждениям https://gidroizolyaciya-dlya-vsekh.ru

5. Гидрофобные добавки

Гидрофобные добавки в бетон или раствор помогают предотвратить проникновение воды. Они образцово подходят для создания водонепроницаемых конструкций, в том числе бассейны и резервуары.

Выбор типа гидроизоляции

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

В заключение, выбор гидроизоляции зависит от множества факторов. Правильное решение поможет продлить срок службы строительных объектов и избежать серьезных проблем с влажностью.
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
  • Create New...