Watch the bytes move
Sneekie has no "snake object". The snake, the walls, the hearts and the arrows are just
characters living in the screen's memory, and the game reads and writes that memory directly. Steer
below and watch it happen: the screen on top and the raw memory beneath it
are the same bytes. Every move is a few peeks and pokes — shown live
on the right. Eat a heart and a club pops up somewhere; the four arrows patrol on their own.
Each cell is two bytes (character, then a brightness/color attribute), addressed by offset = (row − 1) × 160 + (col − 1) × 2. This is a 22×15 corner of the real 80×25 screen — same formula, same 160-byte row stride.
That's the whole trick behind the 1988 code. See it in the source on the explained page, or next to the JavaScript port on the migration page.