Memory Game

×

Memory Game

In 2021 - 2022 I created a memory game using Python and Pygame as part of my Advanced Higher Project. This involved the full development cycle through design, development, testing, and evaluation. The final documentation was over 200 pages and was well reviewed by the SQA.

The game featured a working main menu where you could customise your settings for accesibility and also features a leaderboard where players could compete and compare scores. The game followed a simple pattern of being shown various objects (power ups, grass or bombs)
from there the user had to remember where everything was an click it and once the level was over a larger level was then generated and the cycle was repeated.
score was calculated by time taken, how many squares were clicked and how many powerups were collected.

Memory Game 1 Memory Game 2 Memory Game 3 Memory Game 4

Java Card Game

×

Java Card Game

As part of my 2022 module "Software Development 1" I was tasked with creating a simple card game which would allow the user to play a game and earn "money" this revolved around creating an object of a class and adding additional features on top of that in a suitable manner so that the player could replay games, check their balance and increase their bets.


Sadly, I no longer have access to this code and as such can't display any photographs.

File Analyser

×

File Analyser

As part of my 2023 module "Programming Fundamentals" I was tasked with creating a C program that would take a file input and would return various information such as:

  • Total number of lines and characters in the file
  • Total number of comments (lines starting with //)
  • Total number of variables declared (outputted names of the variables to a .s file)
This project was a lot smaller than the other modules coursework and as such was only graded out of 24 and this coursework received 21, which awarded a merit.

File Analyser 1 File Analyser 2 File Analyser 3 File Analyser 4

Binary Search Tree

×

Binary Search Tree

As part of my 2023 module "Programming Fundamentals" I was tasked with creating and implemtning a binary search tree algorithim in c++. As part of the implementation storage on the stack and heap had to be managed and discarded appropriately

The project was well reviewed and receieved 31/36 overall, which awarded a merit.
Currently unable to run the source code to show the outputs so here are some lovely photos of the code.

Binary Search Tree 1 Binary Search Tree 2 Binary Search Tree 3 Binary Search Tree 4

Bash Docker Round-Robin

×

Bash Docker Round-Robin

As part of my 2023 module "Operating Systems" I was required to create and implement a bash program which would sort through a series of text files in a round robin style (1 file from each folder, over and over until all files were processed)
it would take the files from a series of 3 dockers to simulates "folders" and would assemble the text from each file into a main text file where it would read as a coherent story.
The program offered additional functionality allowing the user to remove/add any text by searching through the file.
This coursework was incredibly well received and was awarded 100% as all functionality had been implemented well with the selection of bash/linux commands.
Currently unable to run the source code to show the outputs so here are some lovely photos of the code.

Binary Search Tree 1 Binary Search Tree 2 Binary Search Tree 3 Binary Search Tree 4

Pcap Analyser

×

Pcap Analyser

As part of the module "Scripting for Cybersecurity and Networks" I was tasked with creating a program that would read in a .pcap file from wireshark and would analyse the entire file and give out

  • Number of Packets per Traffic Type (Timestamps, Mean Packet Length)
  • Emails, urls, filenames
  • Number of Packets Sent to and from Each address
  • Generated graphs on packets per minute and weighted network graph (matplotlib)

This coursework was quite large and had to be created modularly which was a nice experience.
There was a few issues with my coursework with some of the graphs and as such was only awarded 31/40 but the experience creating the coursework was great.

Pcap Analyer 1 Pcap Analyer 2 Pcap Analyer 3 Pcap Analyer 4 Pcap Analyer 5 Pcap Analyer 6

Card Counter

×

Card Counter

Card Counter

Card Counting is a way of playing blackjack in which you play blackjack in a way which will give you an advantage over the "house" and is often prohibbted

The game was created as the concept has always intrigued me and I wanted a way to figure it out while still having fun playing blackjack as most alternatives, only focus on guessing the count
and not actually playing the game or increasing your "money".

Card Counter 1 Card Counter 2

Amazon Job Poster

×

Amazon Job Poster

Amazon Warehouse posts jobs on the website jobsatamazon.co.uk and during my time of being an unemployed student I would often look their for any part-time or full-time jobs that would suit my schedule.
These jobs would often come and go very quickly as they are often in high demand, the website offers a notification system for email or phone number to inform you when any jobs are posted, however, after being signed up
for over 3 years I have received just a handfull of messages so clearly something isn't right. I created multiple versions orignally the program manually controlled your browser but this wasn't ideal if you wanted to use the computer
at the same time so a couple months later I managed to make it use the same api that the website uses so it now functions in the command prompt just like you are opening the website but without having to actually do anything.
This application has been incredibly useful for me and has informed me of countless jobs near me through email notifcation.

Amazon Job Poster Example

Battleships

×

Battleships

In 2024 as part of the module "Algorithms and Data Strucutres" I created the game battleships to be played in command prompt, the game was coded in python and allowed the user to place various difffernet types of ships and calculate if they could place them or not, then it let the user play against 3 different types of ai easy, medium or hard. Each AI used a different method for calculating attacks with easy just randomly selecting a square. Medium would randomly select until it hit 1 then it would hit squares near the first hit. Hard would use the same as medium but be on a larger board.

The program was great fun to make and followed a simple main game loop for checking if all ships were destroyed.

The project was well reviewed and received a merit

Battleships 1 Battleships 2 Battleships 3 Battleships 4

Web Browser Cleaner

×

Web Browser Cleaner

In 2025, with lots of concerns about privacy on the internet I decided to think about small changes that I could make and decided on a script where I could input a series of sites and the browser history would auto delete for example youtube. Why wouldn't I just wipe my history? Didn't want to have to keep logging in but if I log into a site then add the website to the browser application it will wipe the browser history while still keeping me logged in.

Currently published on the Chrome Web Store
https://chromewebstore.google.com/detail/url-history-cleaner/mdgcjfinoaodgPNGlpcejmafoblcemgk

History Cleaner 1 History Cleaner 2

Nested JSON to CSV

×

Nested JSON to CSV

During 2024 I came across a large dataset and wanted to try running it with a different application but the application would only allow the data to be loaded by
JSON or CSV, but the dataset was in nested JSON and every internet alternative I could find at the time just altered the code in a way that was not correct and didn't output correctly so I decided to create my own.

The script is currently up on github!
https://github.com/calmc4/NestedJsonToCSV

VBSP.exe Expanded

×

VBSP.exe Expanded

The Source Game Engine utilises vbsp.exe to compile its maps however, the source engine has lots of different games all created at different points in time resulting in inconsistent
vbsp.exe values for example a game might support 60000 brushes in a map and be able to run it fine and another source game might only support 5000 and as such vbsp.exe will only allow you to compile for 5000 despite the game limit being 60000.
The only thing actually stopping vbsp.exe from running and compiling is just if statements in the code and all I did was use hxd and ghidra to look for lines related to brushes, vertexes and brushides and increase these limits
Then it all just seemed to work, but it was great fun looking for the code and finding and translating the positioning to hxd so I could edit it. No pictures as there is no change to default vbsp.exe output

×