Skip to content
Snippets Groups Projects
Commit 3d48a80d authored by Andrew Hum's avatar Andrew Hum
Browse files
parents 9db9bd08 77a35777
No related branches found
No related tags found
No related merge requests found
No preview for this file type
......@@ -55,6 +55,8 @@
\midrule
2/3/2020 & 1.0 & Project Drivers and Project Issues\\
2/8/2020 & 1.1 & Completed Functional Requirements\\
2/8/2020 & 1.2 & Completed Non Functional Requirements\\
2/9/2020 & 1.3 & Final Revision\\
\bottomrule
\end{tabularx}
......@@ -70,23 +72,23 @@
\subsection{The Purpose of the Project}
For all time, humans have played games for entertainment, as a pass-time, or to relieve stress. In the last forty years, humans have had the ability to create games on the computer as well. Over time, these games have only improved in their complexity and design, as well as generated billions of dollars in revenue for the entire gaming industry. Our focus is not on profit however, we care most about giving the players a seamless, satisfying experience when playing the mini games. Thus, we are focusing on making visual and difficulty enhancements to the pre-existing mini games.
For all time, humans have played games for entertainment, as a pass-time, and as a way to relieve stress. In the last few decades, humans have had the ability to create games that run on the computer as well. Over time, these games have only improved in their complexity and design, as well as generated billions of dollars in revenue for the entire gaming industry. Our focus is not on profit however, we care most about giving the players a seamless, satisfying experience when playing the mini games. Thus, we are focusing on making visual and difficulty enhancements to a pre-existing set of mini games.
\subsection{The Stakeholders}
\subsubsection{The Client}
\begin{itemize}
\item The client(s) for the product are Dr. Asghar Bokhari and the SFWRENG 3XA3 Teaching Assistants. As clients, they will administer the development of the product. They will also determine the degree to what the product delivers on the requirements.
\item The clients for the product are Dr. Asghar Bokhari and the SFWRENG 3XA3 Teaching Assistants. As clients, they will administer the development of the product as well as offer assistance and clarification wherever possible. They will also determine the degree to what the product delivers on the requirements.
\end{itemize}
\subsubsection{The Customers}
The intended customers of the product are any individuals with the ability to download the product online. This includes a child, up to an elder. The product is created to entertain its users and give them a joyful experience.
The intended customers of the product are any individuals with the ability to download the product online. This includes a child, up to a senior citizen. The product is created to entertain its users and give them a joyful experience.
\subsubsection{Other Stakeholders}
All other stakeholders include all current developers as well as any future developers who wish to improve upon the project themselves.
All other stakeholders include all current developers as well as any future developers who wish to further improve upon the open-source project themselves.
\subsection{Mandated Constraints}
......@@ -94,22 +96,22 @@ The system is to be built under the following constraints
\begin{itemize}
\item The product must run successfully on at least Windows and MacOS.
\item The product must be able to be installed in less than 1 hour by only installing the executable file.
\item The product must be able to be installed in less than 30 minutes by only installing the executable file.
\item The product must not require any specialized hardware which the common user may not have.
\item The product must free of cost to all users.
\item The product must be sufficiently complete by March 20, 2020.
\item The product must contain at least one playable mini-game.
\item Development of the product must not exceed \$0.
\item Development cost of the product must not exceed \$0.
\item The mini-game(s) must have a visual and/or difficulty improvement to be considered "updated".
\end{itemize}
\subsection{Naming Conventions and Terminology}
**** SET SHORTER/SINGLE NAMES FOR EVERYTHING. E.G. CALLING THE WHOLE SYSTEM/PRODUCT/ETC. ONE NAME ***
Not applicable.
\subsection{Relevant Facts and Assumptions}
User characteristics should go under assumptions.
It is assumed that the pygame and/or the tkinter libraries are sufficient to update the mini games. Also, the mini games will be either visually enhanced or with new difficulty levels; both will be true only if time permits the developers to achieve this.
\section{Functional Requirements}
......@@ -240,24 +242,122 @@ Event Number & Summary\\
\section{Non-functional Requirements}
\subsection{Look and Feel Requirements}
NFR1
\begin{itemize}
\item DESCRIPTION: The games should run at a suitable, fast, stable frame rate
\item RATIONALE: In order for the game's performance feels responsive and the animations feel "smooth", a high frame rate is needed
\item FIT CRITERION: The game should run at a consistent 30 fps or more
\item PRIORITY: HIGH
\end{itemize}
NFR2
\begin{itemize}
\item DESCRIPTION: The overall theme of our arcade app should be visually appealing
\item RATIONALE: The colours of the games should capture the user's attention to keep their interest
\item FIT CRITERION: The colours used by our games should abide by the color theory, to ensure important areas of the game stands out.
\item PRIORITY: HIGH
\end{itemize}
\subsection{Usability and Humanity Requirements}
NFR3
\begin{itemize}
\item DESCRIPTION: The UI should be non intrusive and easy to use
\item RATIONALE: In a fast paced, competitive game the UI should interfere with the user's
ability to play the game as little as possible.
\item FIT CRITERION: Ensure that most of the screen is dedicated to the game-play elements
of the game
\item PRIORITY: HIGH
\end{itemize}
NFR4
\begin{itemize}
\item DESCRIPTION: The game-play should be intuitive and easy to learn with minimal instructions
\item RATIONALE: In order to attract an international user-base, the games should be very
easy understand with minimal English instructions
\item FIT CRITERION: The game should use pictorial tutorials, have easy to understand game-play
and appropriate visual effects
\item PRIORITY: MEDIUM
\end{itemize}
\subsection{Performance Requirements}
NFR5
\begin{itemize}
\item DESCRIPTION: The game should load quickly and effortlessly
\item RATIONALE: In order to ensure a good user experience, the app should keep any
"non gaming" time to a minimum.
\item FIT CRITERION: Ensure that the game is properly optimized to keep loading times under
20 seconds.
\item PRIORITY: MEDIUM
\end{itemize}
NFR6
\begin{itemize}
\item DESCRIPTION: The game should have minimal input lag.
\item RATIONALE: To avoid latency/discrepancies between what the user sees and what the user is doing,
input lag should be minimized as much as possible.
\item FIT CRITERION: Ensure that the game is updated within a quarter of a second of user input.
\item PRIORITY: HIGH
\end{itemize}
\subsection{Operational and Environmental Requirements}
NFR7
\begin{itemize}
\item DESCRIPTION: The arcade app should be easily accessible to the end user on any OS and machine
\item RATIONALE: Many end users will have a wide variety of computers with different processors and OSs
\item FIT CRITERION: The arcade app needs to be able to run on a wide variety of end user
computers
\item PRIORITY: HIGH
\end{itemize}
\subsection{Maintainability and Support Requirements}
NFR8
\begin{itemize}
\item DESCRIPTION: Maintenance should be kept to a minimum.
\item RATIONALE: Maintenance of the app will be kept to a minimum, in order to not
intefere with the user or to split the user-base between different software versions.
\item FIT CRITERION: The game arcade app should be released with at least 90% of errors resolved.
\item PRIORITY: LOW
\end{itemize}
\subsection{Security Requirements}
NFR9
\begin{itemize}
\item DESCRIPTION: Games app should not allow players to modify any in game data, attributes or properties
that are not intended to be tampered with.
\item RATIONALE: Cheating should be prohibited in a competitive setting.
\item FIT CRITERION: An experienced player should know the result of any actions in the game.
\item PRIORITY: LOW
\end{itemize}
\subsection{Cultural Requirements}
NFR10
\begin{itemize}
\item DESCRIPTION: The product will not purposefully be offensive to any religious or ethnic group.
\item RATIONALE: Being offensive to any racial or religious groups will limit the player base.
\item FIT CRITERION: The content of the game will not include any material that may be offensive to any religious or ethnic groups.
\item PRIORITY: HIGH
\end{itemize}
\subsection{Legal Requirements}
NFR11
\begin{itemize}
\item DESCRIPTION: The product must not break the law.
\item RATIONALE: Mini-Arcade must not break the law.
\item FIT CRITERION: Do not break any laws.
\item PRIORITY: HIGH
\end{itemize}
\subsection{Health and Safety Requirements}
NFR12
\begin{itemize}
\item DESCRIPTION: The product must not cause any adverse health effects.
\item RATIONALE: Playing games on a screen can cause various injuries, such as repetitive strain injuries
or eye strain which we should take care to avoid.
\item FIT CRITERION: We will have popups to alert the user that they should take a
break after an extended period of play (1 hour or more)
\item PRIORITY: MEDIUM
\end{itemize}
This section is not in the original Volere template, but health and safety are
issues that should be considered for every engineering project.
......
"""Pong, classic arcade game.
Exercises
1. Change the colors.
2. What is the frame rate? Make it faster or slower.
3. Change the speed of the ball.
4. Change the size of the paddles.
5. Change how the ball bounces off walls.
6. How would you add a computer player?
6. Add a second ball.
"""
from random import choice, random
from turtle import *
from freegames import vector
def value():
"Randomly generate value between (-5, -3) or (3, 5)."
return (3 + random() * 2) * choice([1, -1])
ball = vector(0, 0)
aim = vector(value(), value())
state = {1: 0, 2: 0}
def move(player, change):
"Move player position by change."
state[player] += change
def rectangle(x, y, width, height):
"Draw rectangle at (x, y) with given width and height."
up()
goto(x, y)
down()
begin_fill()
for count in range(2):
forward(width)
left(90)
forward(height)
left(90)
end_fill()
def draw():
"Draw game and move pong ball."
clear()
rectangle(-200, state[1], 10, 50)
rectangle(190, state[2], 10, 50)
ball.move(aim)
x = ball.x
y = ball.y
up()
goto(x, y)
dot(10)
update()
if y < -200 or y > 200:
aim.y = -aim.y
if x < -185:
low = state[1]
high = state[1] + 50
if low <= y <= high:
aim.x = -aim.x
else:
return
if x > 185:
low = state[2]
high = state[2] + 50
if low <= y <= high:
aim.x = -aim.x
else:
return
ontimer(draw, 50)
setup(420, 420, 370, 0)
hideturtle()
tracer(False)
listen()
onkey(lambda: move(1, 20), 'w')
onkey(lambda: move(1, -20), 's')
onkey(lambda: move(2, 20), 'i')
onkey(lambda: move(2, -20), 'k')
draw()
done()
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment