AHK: Visualizing ELSE/IF with Arrays

So Hopper’s Amazing Decipherer Script 1.0 was about 472 lines because it included ELSE IF clauses for every letter in the alphabet.

HADS 2.0 cuts it down to 77 lines because arrays, as it turns out, are incredibly useful when paired with loops.

Making a Rotated Alphabet

Deciphering a Caesar cipher requires that the alphabet be moved up by a certain number. Like so.

ROTchart

Notice that this is basically a 2-step process. Turn the letters of the alphabet into numbers 1-26. Then add the rotational value to each of them to find their new positions, in the code below that’s assigned to a variable called indexVar. In ROT1, A =1 and the rotational value is 1, so A = 1+1 = 2.

But what happens when you hit Z? Z=26 and the rotation is 1, so Z =  26+1 = 27.

So, you want to tell the computer IF the number goes above 27, then you want to reset it to 1 and continue.

A Slow Motion Loop

Continue reading “AHK: Visualizing ELSE/IF with Arrays”

AHK: What is an Array?

Arrays are a damn godsend. More specifically, they’re an easy way to deal with large lists. Why is this useful you ask? Imagine you want to run the same code on multiple items. The items could be numbers, letters, words, full sentences—anything.  By putting those things in a list, or an array, you can loop through hundreds, even thousands, of items with just a few lines of code.

ArrayGif1

Continue reading “AHK: What is an Array?”

AHK: How to Decipher the Caesar Shift with Code

VG JNF N OEVTUG PBYQ QNL VA NCEVY NAQ GUR PYBPXF JRER FGEVXVAT GUVEGRRA JVAFGBA FZVGU UVF PUVA AHMMYRQ VAGB UVF OERNFG VA NA  RSSBEG GB RFPNCR GUR IVYR JVAQ FYVCCRQ DHVPXYL GUEBHTU GUR TYNFF QBBEF BS IVPGBEL ZNAFVBAF GUBHTU ABG DHVPXYL RABHTU GB CERIRAG N FJVEY BS TEVGGL QHFG SEBZ RAGREVAT NYBAT JVGU UVZ

-No idea what this says. Damn you, Caesar.

The Caesar Shift is supposed to be ridiculously easy to decipher. I say supposed to be because while it might be easy to crack, translating the bastard is mind-numbingly painful if you have a substantial block of text.

There are quite a few resources online that’ll do it for you, but for kicks, I wrote an AHK that automates it—if you know how many positions you want to shift.

So How Does the Shift Work?

Continue reading “AHK: How to Decipher the Caesar Shift with Code”

AHK: How to Loop Code through Images

Need to make changes to every pixel in an image? As it turns out, that’s not so difficult with AutoHotkey. From what I’ve been able to gather, all you really need is the height and width of the picture so that the loop knows how many times to run and the XY coordinates of the picture’s upper left corner.

The Code

Note that CoordMode, Pixel, Screen tells the computer to use the XY coordinates relative to the screen rather than the window.

CoordMode, Pixel, Screen

Height:=Height of the Image
Width:=Width of the Image
Xaxis:=X-Coordinate to start at
Yaxis:=Y-Coordinate to start at

loop, %Height%
{
loop, %Width%
{

Do This Code, Xaxis, Yaxis

Xaxis++

}
Xaxis:= Xaxis-Width
Yaxis++
}

How the Loops Work

Continue reading “AHK: How to Loop Code through Images”

AHK: How to Lose Friends & Alienate People with Code

Automating keystrokes is a fun way to spend an afternoon. It’s also an entertaining to wrap your head around the idea of loops and variables. If you’re wanting extra practice, give these a try.

Note: You’ll need AutoHotkey installed for this. If you don’t know what that is, click here.

Important Commands to Note:

run, Name of Program.exe
SendInput Keystrokes to Send
Sleep, Delay in Milliseconds

Loop, # of times to run loop
{
Commands to run
}

All Work and No Play

Take a look at this code.

run, notepad.exe
Loop, 100
{
SendInput All Work And No Play Makes Jack A Dull Boy.
}
return

Keep in mind that everything inside the loop will happen 100 times, so with just 6 lines of code, you can make the computer type this sentence over and over again. In action, it kind of makes your computer seem possessed.

Dull Boy

Continue reading “AHK: How to Lose Friends & Alienate People with Code”

AHK: How to Make a User Interface

I loathe ComputerSpeak.

Missed commas. Misspelled commands. A { instead of a ( because those bastards look exactly alike. Opening the script guarantees that I will make at least one of these errors while updating the code to do something slightly different.

So in order to combat this, I’m making my script a muzzle.

Call it a GUI (Graphical User Interface), call it a window, call it a box-it’s all the same to me. Essentially I’m turning this jumble of script on the right to this nice, soothing thing on the left.

GUI5

In the interest of keeping it simple, let’s make the simplest GUI possible and build up from there.

Continue reading “AHK: How to Make a User Interface”