Hayden Walker 2019
This is a portfolio of some of my favourite programs that I wrote during the summer of 2019.
*The programs are arranged alphabetically (By folder name, not by title)
NOTE: The following dependencies are required in order to successfully run some of these programs. These dependencies are *not* included in the Python Standard Library.
*Matplotlib plotting library (for the Collatz Conjecture program)
*Pygame (for the aquarium program as well as Conway's Game of Life)
------------------------------------------------------------------------------------------------------------
Title (Date)
*Skills
Desc.
------------------------------------------------------------------------------------------------------------
Aquarium (19 August) [Requires Pygame]
*Pygame
*Importing sprites
*Random library
*Object-oriented programming
*Multiple instances of a class
*Each instance is unique and randomized
*Game loop
*Math operators
*Multiplication
*Conditionals
*Functions
*Methods
A simple aquarium. A random number of fish are spawned, each being an instance of the Fish class. Each is randomly assigned one of four breeds, and each has a randomly assigned speed. The fish will change directions when they come in contact with the screen's edge. Furthermore, each 50 millisecond cycle, each fish has a 1% chance (for each axis) of changing direction on its own, regardless of its position.
------------------------------------------------------------------------------------------------------------
Binary to Decimal Converter (18 August)
*String slicing
*Reversing
*Concatenation
*Iterables
*Conditionals
*Math operators
*Powers
A simple binary to decimal converter; will accept an arbitrtary amount of bytes of arbitrary lengths.
------------------------------------------------------------------------------------------------------------
Caesar Cypher (25 July)
*Iterables
*Conditionals
*For Loops
*List wrapping
*Functions
Takes an encryption key (n) from 0-25 and moves each character ahead n spaces in the alphabet. If the letter reaches z, it wraps back to a.
------------------------------------------------------------------------------------------------------------
Cash register (3 August)
*Rounding
*While Loops
*Conditionals
*Functions
Takes a sales total and amount tendered, then calculates change and lists the amount of each denomination of change to return.
------------------------------------------------------------------------------------------------------------
Collatz Conjecture (7 August) [Requires Matplotlib]
*A Classic Algorithm
*While Loops
*Conditionals
*Math operators
*Modulus
*Floor division
*Addition
*Matplotlib Graphing Library
Takes a positive integer (n), and depending on its parity, will either divide it by 2 or multiply it by 3 then add 1, and repeat the whole process until the integer is equal to 1. It will then display a graph where x is the number of steps and y is the value of n.
------------------------------------------------------------------------------------------------------------
Conway's Game of Life (22 August) [Requires Pygame]
*A Cellular Automaton
*Random Library
*PyGame
*Rectangles
*Conditionals
*Iteration
*Object-Oriented Programming
*Functions
*Methods
*Game Loop
Generates 100 squares that can each be either living or dead; each 1-second "generation," if a living square has less than two or more than three living neighbours, it will die from either underpopulation or crowding. If a dead square has exactly three living neighbours, it will become living, via reproduction.
------------------------------------------------------------------------------------------------------------
Line/square drawing (27 July)
*Tkinter GUI Library
*Canvas
*Buttons
*Inputs
*Random library
*Object-Oriented Programming
*For Loops
*Functions
*Methods
A GUI application that takes a number (n) and, depending on which button is pressed, will generate either n lines or n rectangles, all of random size, position, and colour. It will display the last action completed in a status bar at the bottom.
------------------------------------------------------------------------------------------------------------
Hangman (5 August)
*Random Library
*Reading from a text file
*For Loops
*Game Loop
*Conditionals
*Iterables
*Functions
A game of hangman that pulls words from a 100-word text file.
------------------------------------------------------------------------------------------------------------
Minefield/Minesweeper (20 July)
*System commands
*Random Library
*Wrapping
*Iterables
*Conditionals
*Functions
*Game loop
A game that draws a 5x5 grid, in which a random number of randomly placed mines are hidden. Goal: Clear the board without hitting a mine.
------------------------------------------------------------------------------------------------------------
Pig Latin (19 July)
*String slicing
*String concatenation
*Conditionals
Converts a word into "Pig Latin;" i.e. if the word begins with a vowel, it will add "ay" to the end, and if it begins with a consonant, it will move the first letter to the end of the word and then add "ay."
------------------------------------------------------------------------------------------------------------
Recursive Guessing Game (24 August)
*Recursion
*Conditionals
*Math operators
*Floor division
*Addition
The user chooses a number between 0 and 100 (unknown to the computer), and the computer will guess it. A light project that I included because of recursion.
------------------------------------------------------------------------------------------------------------
Monty Python's Python Soundboard (31 July)
*Tkinter GUI Library
*Buttons
*Lambda Expressions
*Object-Oriented Programming
*Playing audio files
A just-for-fun soundboard of clips from Monty Python's Life of Brian. Fun Fact: The Python Programming Language is named after Monty Python!