Disperse

Client:

Winona State University Computer Science Program

Medium:

Xcode, Swift (UIKit), images supplied by professor

Goal:

Learn concepts of iOS development and the Swift programming language in an engaging way

Description:

A card game where the goal is to strategize your moves so that you aren't the player to remove the last card from the screen. There are two players, and each player can remove up to four cards per turn.

The Beginning

This project was given to me via a university course in my computer science program and was my first experience with iOS development and Swift in general after being taught Java for so long.

Prior to this I had no experience in either of these things but had a solid programming background and a good amount of interest in creating programs on mobile devices. I had recognized the massive potential of the mobile platform a while before this, so having an opportunity to explore this medium in the classroom was a great experience.

What Was Learned

• Swift syntax

• Xcode 

• Behind the scenes flow

• Gesture recognizers

• User controls (sliders, buttons, etc.)

• Table Views

• UIKit

• Model View Controllers

• Animation

• Alerts

• Saving data to a text file

The Final Result

By the end of the semester, I had a fully working card game app. I had a solid understanding of the Swift language and the Xcode IDE as well. I also now have a collection of commented code that has been reviewed by professors that I can always look back on when I need a refresher or a reminder on how to do things in the future, which will be a valuable resource for me!

The most important thing I took away from this course was a drive to learn more. This class really interested me from a hybrid creator’s point of view, simply because of how visual all the programming was, and how easy it was for me to create UI designs with code, something that was extremely difficult for me to do with a programming language like Java. This opened up my eyes to the possibilities of it, and pulled me into the UI/UX design and mobile programming mentality.