Sh*t You Can Do with PowerShell: Apparently, Terminal-Based Artillery Warfare

Introduction: When Classes End, Trouble Begins

Anyone old enough to remember Scorched Earth?

The old DOS artillery game where two tiny combatants spent an unreasonable amount of time trying to calculate the exact angle needed to ruin somebody else’s afternoon?

The one where terrain got destroyed, shots missed spectacularly, and friendships were tested over bad aim and questionable judgment?

Yes.

That one.

Only this time, somebody looked at PowerShell and thought:

What if we did that again… but inside a terminal window?

What happens when you got a sysadmin that knows PowerShell scripting and classes are done?

Apparently, artillery.

Not real artillery, thankfully. Just the terminal-based variety, the kind that exists somewhere between nostalgia, technical curiosity, and the dangerous freedom that comes from finally finishing coursework and having enough energy left to make irresponsible decisions with administrative privileges.

Some people relax after classes.

Some watch Netflix.

Some rediscover the outdoors.

And then there are those who just effing stare at PowerShell, a tool designed for automation, compliance, and the quiet suffering of enterprise systems, and wonder:

Could this thing launch missiles?

The correct answer was probably “no.”

Naturally, that answer was ignored.

Because apparently PowerShell woke up and chose artillery.”

The Misuse of Enterprise Tools

PowerShell was never meant for this.

PowerShell was supposed to reset passwords, restart services, and occasionally help explain why something stopped working at exactly 4:58 PM on a Friday.

It was not supposed to become a game engine.

Yet somehow:

Get-ADUser

Restart-Service

Get-WinEvent

became:

Terminal-based warfare.

Two players.

One battlefield.

Questionable physics.

And enough explosives to turn a mountain into a planning problem.

Choose your suffering.

PowerShell Accidentally Learns Physics

At some point, a strange thing happens.

You stop scripting.

You start negotiating with gravity.

The projectile cannot simply move in a straight line like a well-behaved spreadsheet.

No.

It must arc.

It must suffer.

Like all meaningful things.

$velocityY -= $gravity

One line.

One small subtraction.

And suddenly PowerShell is reenacting Newton.

Then there is this:

$radians = $Angle * [Math]::PI / 180

$velocityX = [Math]::Cos($radians) * ($Power / 1.5)

$velocityY = [Math]::Sin($radians) * ($Power / 1.5)

Which is the technical way of saying:

Aim carefully. Regret arrives quickly.

Somewhere between scripting and accidental physics.

Geography With a Grievance

Flat terrain would have been merciful.

Mercy, however, was not invited.

The battlefield generates mountains, ridges, cliffs, and geological inconveniences using mathematical waves and random variation.

$wave1 = [Math]::Sin(($x / 7.0) + ($phase1 / 100.0)) * 3.0

$wave2 = [Math]::Sin(($x / 13.0) + ($phase2 / 100.0)) * 2.0

$wave3 = [Math]::Sin(($x / 3.5) + ($phase3 / 100.0)) * 1.0

Translation:

The terrain is actively judging you.

You will blame the hill.

The hill will not care.

The hill you trusted five minutes ago is now your enemy.

Unicode, Civilization, and Other Small Victories

Extended ASCII proved unreliable.

As many things eventually do.

So Unicode stepped in.

Terrain became:

$script:terrainChar = [char]0x2593

Resulting in beautiful terminal geology:

▓▓▓▓▓▓▓▓▓▓▓▓

▓▓▓▓ ▓▓▓

▓▓ A ▓

Which somehow made destruction look respectable.

Municipal planning meets indiscriminate shelling.

MIRV, or the Failure of Restraint

One projectile could have been enough.

But restraint is not always a technical person’s strongest attribute.

So there is MIRV.

One missile.

Then five.

Because moderation felt underwhelming.

Then suddenly:

$projectiles = @(

@{ X = $x; Y = $y; VX = $velocityX + (-4 * $direction) },

@{ X = $x; Y = $y; VX = $velocityX + (-2 * $direction) },

@{ X = $x; Y = $y; VX = $velocityX },

@{ X = $x; Y = $y; VX = $velocityX + ( 2 * $direction) },

@{ X = $x; Y = $y; VX = $velocityX + ( 4 * $direction) }

)

Which is less a weapon and more an argument against impulse control.

One projectile suddenly becoming five bad decisions.

Destruction as a Learning Experience

Terrain does not merely sit there.

It suffers consequences.

Crashes into reality.

Becomes cratered.

for ($dx = -1; $dx -le 1; $dx++) {

$damageDepth = 3 - [Math]::Abs($dx)

}

Which means cover is temporary.

Like stability in IT.

This meeting could have been an email.

The Things Technical People Do When Unsupervised

This project started as curiosity.

Then quietly became:

  • Physics
  • Animation
  • Terrain generation
  • Collision detection
  • Terminal graphics
  • Late-night bad decisions

All because somebody looked at PowerShell and thought:

Surely this can become artillery.

And somehow, inconveniently, it worked.

Final Thought

Sometimes learning comes from coursework.

Sometimes from certifications.

And sometimes from doing something mildly ridiculous just to see if it can be done.

Because once you build a game in PowerShell, automation suddenly feels ordinary.

Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *