Code emulator challenge win for prize

is it ok if i submit 2 things

yes

@coder_07 @cookieclickerer33 may i see some beta versions of your projects

@coder_07 @cookieclickerer33 the challenge is coming to a close remember to submit your projects on October 15

Yeah I didn’t have a lot of time to work on it unfortunately and when I did I had other stuff to work on as well

Not sure if it’s Gonna get finished

that’s ok just submit what you have

Okay is it alright if I remake brainfudge (cannot say real name due to yk) instead of snap?

sure the goal was never to recreate snap it was to code anything that you could code with

I said that at the start

Well here it is!

https://snap.berkeley.edu/snap/snap.html#present:Username=cookieclickerer33&ProjectName=Brainfudge

Current indexed byte means the value inside the place in memory that is currently being written to
Indexed byte is the place in memory that is being written to

I added a few new functions to make up for the fact that I couldn’t quite figure out coma so I made it set the indexed byte at the current indexed byte to the indexed byte. This unfortunately means a lot of already existing programs don’t work in this

For example

If c3 is equal to 1 and , is ran then c1 is set to 3

New functions :
( and )

These work like [ and ] but the opposite conditions
( will only run if the value is NOT zero
And ) will only run if the value is zero

? Sets the indexed byte to the value in the current indexed byte

For example if c3 is equal to 1 then it sets the byte that will be edited by the next instruction to c1

! Sets the current indexed byte to the current functions position in the line
For example if we are on instruction 5 and c3 is being written to it would set c3 to 5

{ and }

Still being added..
Works the same as ( and ) but uses the pointer as the conditional instead of the stored byte

This isn’t warped so you can do functions that have either an omega run ammount that is rediculously high or functions that have an infinite length

By default you have 100 memory cells instead of 30000 cells but you can increase this to whatever value you want

I might rewrite this in the future to use the streams library so you can have an infinite* number of memory cells

@codegang

I have

I'm not sure if it counts, but you can program with it.

yes

also I know what “brainfudge” is

So uh, the blocks did that glitch where they get really long but for some reason out it spat this when I removed the inputs???

Brainfudge script pic 2
Brainfudge script pic
if imported it’s just a normal item of list block
I have less than zero clue as to how

maybe it is so close to a normal list block that snap just thinks it is

I added an update. Here’s the full function list and what they do
Byte/memory cell means the value inside the current Byte being written to
Memory\index means the number the byte is, for example c3 would be the third byte index
Pointer means the current instruction being run
(“the”s are so it doesn’t mess up the formatting)

The + increments the byte by 1
The - subtracts 1 from the byte
The > moves the index right by 1
The < moves the index left by 1
The . Makes the sprite say the byte
The [ sees if the byte is 0, if it is move the pointer to the next ]
The ] sees if the byte isn’t zero, if it isnt, it moves it to the nearest [
The , sets the byte indexed at the value of the current byte to the current position of the index

New functionality:

The ( and ) are like [ and ] but with the rules reversed, if the value is not zero and ( is run it will jump to ). If ) is run and the value is zero it will jump to (

The ? Makes the index pointer go to the indexed byte at the current byte
So if we were at c3 and c3’s value as set to 10 and ? Is run we would change the byte being written to to be c10

The ! Sets the byte to the position of the instruction pointer

The ^ sets the byte index to the value of the current byte like ? But when it jumps it sets the byte it’s going to to the index of the previous byte index

For example if c3 was set to 10 and ^ is run, the new byte being edited would be c10 and c10 would be set to 3 because that’s the byte we jumped from

The { and } work like [ and ] except they run what’s inside until the memory index is equal to 1

Pressing space runs the program
Pressing c clears the program
Pressing e let’s you load code
And pressing Q exports the code

Text engine controls are

Down arrow to go down a line or make a new line if you are at the bottom
Up arrow to go up a line
Backspace to delete a letter
Enter makes a new line below the current line regardless of where you are

If you are on mobile use the up and down blocks to move the line up and down, and use the “mobile keyboard” block by clicking the text input, then clicking off of the text input without closing the keyboard

wow that’s a lot of new stuff if you’re doing this I wonder what @coder_07 might do

If you have any ideas it would be really really easy to add new features so just give ‘‘em to me!

maybe you could add the ability to convert your brainfudge to JavaScript