I was inspired by the 3D pyramid hologram videos on the internet. Holograms of jellyfish, fireworks, birds and much more. Here's an example:

As a result, I begged to ask the question, can it be used as an interactive tool, whether it be a game like snake, or as a tool for everyday life.

What it does

Takes the classic old-school two-dimensional snake game and brings it into the 21st century with a three-dimensional component. Simple interface with key commands (r to start a new game, s to start the game, up and down for the y-direction, left and right for the x-direction, c and space for the z-direction.

How I built it

I built it using a java GUI setup. Using a simple 2D game that was placed on multiple Panels in a JFrame, with a lot of related components that needed to communicate with each other to synchronize the motion of the snake.

Challenges I ran into

Initially, I was trying to get all my JPanels to respond to key/action listeners. However, I noticed that focus was the issue so I had to learn how to key bind and then manipulate the key binding for each JPanel to produce the desired effect.

Accomplishments that I'm proud of

I am proud that I was able to implement this game in Java because I have heard Java's GUI is not the most user-friendly and multiple people recommended I start over with Python instead. However, I stuck course and persevered.

What I learned

I learned that the future is within our hands. People often use the same technologies, recycling the same APIs and hardware like Alexa and the Hololens. I just wanted to show that something new can be done that can make people question the technological process.

What's next for 3D Snake Hologram

Possible interaction between a webcam and the 3D pyramid hologram interface. Allowing recognition and reactions to nearby motions or gestures. I think this is a piece of hardware that I can be proud of because I don't need anything external other than my monitor, plexiglas and code.

Built With

  • java
  • keybindings
  • jframe
  • jpanels
Share this project: