This repository is now archived.
This code is simply an example of the projects our college tells us to perform. They help us illustrate our skills and interest in computer graphics, database integration and object oriented design, as a sophomore, helping the teachers orient us in a better direction.
We have tried our best to make sure that comprehending this project is greatly simplified; by use of this README, and the internal documentation within the code.
This Project is a game, similar to the T-Rex Runner game found in Chrome browsers, but with a logical twist. It's been christened the Logical Maze Runner, and this game is intended to provide the user with a once in a lifetime experience (we believe the player might never wish to play again)
This 2D retro game provides the player with a magic wand, and this wand is able to yield two weapons: a fire weapon and a water weapon. Similarly, the player is faced with two adversaries, a fire monster and a water monster. The player is able to kill the adversary by yielding a weapon of it's opposite type, i.e. fire kills water, and water kills fire.
The crux of this game is the wave-like speed control... This is implemented by the runner.Game.updateGameSpeed()
function, which constantly updates the speed of the game by modifying the frame-rate, in a sine-wave like fashion. The game gradually increases its speed(representing a wave) and then gradually decreases the speed(representing the passing of a wave).
The project also has the score module, that saves its data into an SQL database(we were restricted from using noSQL technologies because we had to comply to the project instructions).
This project contains a Config.java
file, which contains a public class with all the constants you can edit! It's amazing the types of things that can be modified, and the flexibility that awaits to be discovered. Another few important things;
- The project resources, like fonts(
.ttf
), audio(.wav
), and images(.png
) are in theres/
folder of the project directory. - The SQL connector library, in a jar file, in the
lib/
folder of the project directory. - The actual code, in the
runner/
folder, under therunner.*
package.
The tileslow.png
file, is designed to contain all the player images(as a single image), and the image data is loaded in the form of tiles into the program. This means that subimages of the main image are created. Not only does this save memory, but it also prevents the creation of too many streams, which turns out to be largely beneficial. Also, a lot of rectangular bound configuration variables need to be modified as well(found in the Config.java
file)...
Based on the MySQL database configuration setup within your system, you will need to modify the database connection, the username and password in the list of DB variables in Config.java
.
(default configs are "jdbc:mysql://localhost:3306/runnerscoreDB", "root", ""), scores: (name, score).
This means you are expected to have an SQL server, with an account bearing the username root, having an empty password, a database runnerscoreDB, and a table called scores with two columns: name & score
This project can be easily executed by opening a terminal/CMD at the project root directory, and typing in the following commands,
javac runner/*.java
jar cvfm Runner.jar MANIFEST.MF runner/*.class lib/* res/*
java -jar Runner.jar
This should run the project as an executable jar file.
I am sharing my opinion here, but honestly, Java is a language entering that phase where only maintainers need to know about it(like PHP). I agree that learning Java does help educate budding engineers about the basic concepts of Object Oriented Programming, but other than that, I would recommend the newer generation of developers to take to newer and more abstract languages. DevSecOps(more info here) is a huge ecosystem, and I do not wish to bias minds with a list of languages that must be learnt. In the end, engineering is about solving problems your way, and helping the masses, including the engineering community. How you implement a solution, which frameworks/platforms you choose, do not matter unless it may lead to problems in the future.
This project has been uploaded to Github, and is not intended to portray any interest towards game development, and it should just be viewed as a project written by an individual interested in learning Computer Science as a whole. Thank you for reading through this document!