Skip to content

ThomasOli/SoccerApp

Repository files navigation

Football Player Comparison

https://www.youtube.com/watch?v=-e-zvkDJkCs

Problem

Being a football fan can be challenging, especially when searching for information about favorite teams and players scattered across the vastness of the internet. Comparing players from different leagues is a common desire, but the process can be cumbersome and lack directness.

Motivation

Football fans often follow multiple leagues and have favorite players across various clubs. The motivation behind this project is to facilitate the exploration of connections between players through shared teams or matches played against each other.

Features Implemented

Our website enables users to compare any two football players directly. The comparison mechanism involves traversing a graph to determine if one player has beaten the other in any common games. If not, the algorithm checks for indirect connections through players who have defeated one another. The result includes the number of nodes traversed, time taken, and maximum memory usage during the pathfinding process.

image (2)

Description of Data

The dataset utilized encompasses information about soccer clubs worldwide, games played in the last 10 years, and details about players active during the same period. It also includes comprehensive information about player appearances in all games over the specified timeframe.

Tools/Languages/APIs/Libraries Used

C++: Used for processing CSV files, organizing data into classes, and implementing backend functionalities. Javascript and React, Vite, React-graph-vis: Employed to build the frontend website and visualize the comparison results. Algorithms Implemented Breadth-First Search (BFS) and Depth-First Search (DFS): Utilized on an adjacency list to determine the better player between two individuals. Additional Data Structures/Algorithms Used Adjacency List: Stores information about game wins, where each player is a node in the graph, and directed edges represent victories. Classes: Created for players and clubs, utilizing vectors and unordered_maps to efficiently store and manage data.

Distribution of Responsibility and Roles

Thomas: Frontend development, website building, and visualization. Implemented BFS and DFS algorithms for pathfinding. Edward: Backend development in C++, processing CSV files, and creating the adjacency matrix for data storage. Aryan: Worked on both frontend and backend, transformed C++ generated data into JSON format for website integration.

Analysis

Changes After Proposal We scaled back on initially planned algorithms, opting out of Dijkstra's algorithm due to its suitability for weighted graphs, while ours is unweighted.

Big O Worst Case Time Complexity

Data Processing Functions (e.g., read_CSV): O(m) time, where m is the number of lines in the CSV file. BFS and DFS: O(V + E), where V and E are the numbers of vertices and edges, respectively, in the graph. Our project streamlines football player comparisons, offering fans a user-friendly way to explore the connections between their favorite players across different leagues.

IMG_3312 IMG_3313

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages