Skip to content

Dimural/UofTCG

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UofTCG - Pokémon Battle Card Game (CSC207 Final Project)

Created by: Anvi, Brandon, Dimural, Jenny, Sara, and Teppi

UofTCG is a Pokémon inspired battle card game built following the clean architecture rules in Java. Players can build custom teams, select movesets, battle AI of different difficulties, battle friends, and obtain new Pokémon by opening packs.

1. Overview

UofTCG is a desktop-based card battle game that focuses on battling rather than collecting.
The game uses real Pokémon data retrieved from PokéAPI and applies Clean Architecture principles throughout.

Core gameplay:

  1. Open Packs to acquire Pokémon
  2. Build teams of your favourite Pokémon
  3. Select moves
  4. Battle AI or another player

2. Features

2.1 Pack Opening

  • Open booster packs using in-game currency (1000)
  • Reveal 5 random Pokémon (with 5% of obtaining shiny)
  • Gain 50 extra currency for obtaining duplicates
  • Automatic collection updating

2.2 Pokémon Collection

  • Visual grid view of available Pokémon
  • Artwork, stats, moves, types
  • Filter by collected and shiny collected

2.3 Team Building

  • Select up to 3 Pokémon to add to a team
  • Teams saved for use in battle

2.4 Movesets

  • Choose up to 4 moves per Pokémon
  • Move data sourced from PokéAPI

2.5 Battle System

  • Player vs Player
  • Player vs AI (powered by Groq LLM API)
  • Turn-based with implemented win conditions

3. Architecture

This project uses Clean Architecture (CA).

3.1 Entities

  • Ability
  • AIPlayer
  • Battle
  • DamageCalculator
  • Deck
  • Item
  • Move
  • MoveTurn
  • Pack
  • Player
  • Pokémon
  • Stats
  • SwitchTurn
  • Turn
  • User
  • UserPlayerAdapter

3.2 Use Case Layer

Contains all business logic and application rules.

  • BattleAIInteractor
  • BattlePlayerInteractor
  • BuildDeckInteractor
  • ViewCollectionInteractor
  • OpenPackInteractor
  • PickMovesetInteractor

3.3 Interface Adapters

Includes:

  • Controllers
  • Presenters
  • ViewModels
  • Data Access Interfaces

3.4 Frameworks & Drivers

  • Swing-based Views
  • JSON file storage
  • API fetch utilities
  • Concrete Data Access classes (JsonUserDataAccess)

All dependencies point inward as required by CA.


4. External APIs

4.1 PokéAPI

Used for:

  • Pokémon data
  • Stats, moves, types
  • Sprites

Data is fetched once, then saved locally as JSON.

4.2 Groq LLM API

Used for AI move selection during Player vs AI battles.


5. How to Play

5.1 Starting the Game

  1. Run the Main within the app package
  2. The main menu will appear with navigation options:
    • View Collection
    • Open Pack
    • Build Deck
    • Battle vs AI
    • Battle vs Player

5.2 Viewing your Collection

  1. Click on View Collection
  2. Browse through your Pokémon
  3. Starter Pokémon include Charizard, Blastoise, and Venusaur
  4. Select a Pokémon to view:
    • Stats
    • Types
    • Moves
  5. You can filter to see your owned Pokémon

5.3 Building a Deck

  1. Navigate to Build Deck
  2. Select Pokémon from your collection to add
  3. Teams must follow size constraints (up to 3 Pokémon)
  4. Save the team to use it in battle

5.4 Choosing Moves

  1. From Build Team, select a Pokémon in your team
  2. Choose up to 4 moves from the available move list
  3. Save the moveset for that Pokémon
  4. Moves are used directly in battles

5.5 Battling Another Player

  1. Select Battle vs Player from the main menu
  2. Each player chooses their saved team
  3. Players alternate turns selecting moves.
  4. A battle ends when one player defeats 3 opposing Pokémon.

5.6 Battling the AI

  1. Select Battle vs AI.
  2. Choose your team and AI difficulty
  3. The AI selects moves
  4. Turns alternate between you and the AI
  5. Defeat three enemy Pokémon to win
  6. Winning results in earning 500 currency

ENJOY!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%