Home » 2013 - 14 Academic Year » Creative Freedom in Computer Programming

# Creative Freedom in Computer Programming

### Pages

By Max Hinkley, V Form

When I was younger, my favorite subjects were always math and science. I loved to do experiments, to try and find the answer to something my way, and to use my own creativity rather than a formula. As I grew up and advanced into more serious science, I became less and less engaged and interested. The more rigid, method-based style of solving problems that high school science courses offer did not captivate me nearly as much. I did not mind those problems, but I no longer enjoyed them. Math, in the same way, lost much of its appeal. I still enjoy the feeling of satisfaction that comes from solving a difficult problem, but I feel stultified by the lack of creativity, when there is no space to figure out the problem my own way.

When I signed up for Robotics in the fall semester, I had never taken any class involved in computer science. Although we were mostly focused on designing and building robots, we did enough programming to let me know that I enjoyed it. In this spring semester, I am fortunate to be taking Computer Science. My teacher, Mr. Roche, introduced us to programming through Scratch, a simple, visual, and object based language that is run by MIT. What makes scratch so appealing is that it does not have any of the confusing syntax of more advanced languages, meaning that it is easy for beginners like me to pick up. I have created many projects in Scratch, but there are two specific ones that I would like to share.

1. Shapes

When I made Shapes, I wanted to make a project that would show perspective in a 3D world. Instead of focusing on graphics, I focused on making the project work points on a 3D Cartesian coordinate system. There are only 2 shapes loaded on the project, but its beauty is that to add a shape all one needs to do is program in the new coordinates. The basic premise of the project is that there are X, Y and Z values for each “sprite” in the program, which represent the depth, and vertical and horizontal positions of the sprites. To get the screen position (what the user sees), the height is divided by the depth to show the height on the screen, and the horizontal position is divided by the depth to get the horizontal position on the screen. I had originally intended to use the project as a way to view the actual sprites, but I had issues with layering, meaning that sprites in the distance would sometimes appear in front of closer sprites, so I decided to switch over to using the sprites merely as points on the screen and to draw lines between them to make a 3D shape.

2. Mech War

Mech War is the biggest and most complicated project that I have completed. It is a top view game, where the user plays as a machine that has to survive successive waves of enemies. This project is the one that I dedicated the most time to, and it feels the most like a real game. The concept behind this project is not nearly as complicated as the concept of Shapes, but it took longer because it is a much more extensive project. The basic idea is that the user controls one sprite, which has to evade and destroy other sprites, which constantly chase it. As a time saving and lag reducing measure, I made templates for each sprite, which make clones of themselves when called upon. This means that I did not have to individually write code for each sprite, and that if I wanted to change the code for a type of sprite, I only had to do it once. I also dedicated a lot of time to graphics, which paid off in the way the game looks.

Max Hinkley, a V Former, is from Waldoboro, ME and lives in Coe House.  He enjoys playing basketball and tennis, and Max will be volunteering at Brantwood Camp this summer.