Skip to content

justacoderq/CS-3500-Software-Practices

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CS 3500 – Software Practices: Snake Game & Spreadsheet Applications

Overview

Welcome to our CS 3500 Software Practices repository! This project showcases two major applications:

  1. Spreadsheet Application: A powerful tool for managing and manipulating data in an interactive spreadsheet interface.
  2. Snake Game: A fun, multiplayer game with a modern twist on the classic Snake mechanics.

Both projects demonstrate thoughtful design, core functionality, and enhanced features to improve user experience and performance.


📊 Spreadsheet Application

About the Spreadsheet Application

The Spreadsheet Application is a tool designed to facilitate data management and manipulation through an intuitive interface. Below is a guide to using the application.

Core Functionality

  • Content Field Setting: Input data into a content field corresponding to each cell in the spreadsheet, enabling dynamic cell value editing.
  • Cell Value and Name Management: Assign a name (e.g., A1, B1) and value (e.g., 10, "Hello") to each cell, making referencing and retrieval easier.
  • Save and Load Functionality: Save your spreadsheet to a file and reload it later, ensuring data is preserved between sessions.

Additional Features

  • Enter Key Functionality: Pressing the "Enter" key saves the cell value and moves focus to the next cell below for faster data entry.
  • Color Coding: Cells are color-coded based on their content:
    • Formula: Yellow
    • Double Values: Green
    • String Values: Red
  • Dark Mode: A dark mode feature for a comfortable viewing experience in low-light environments.
  • Clear Cell Button: Clears the content of the currently selected cell.
  • Clear All Cells Button: Resets the spreadsheet by clearing all cells.

🐍 Snake Game

Welcome to Our Snake Game!

Dive into the Snake Game, where you control a snake, collect powerups, and compete for the highest score!

Gameplay Overview

The game revolves around classic snake mechanics with several modern twists:

  • Control your snake to slither around and collect powerups to grow longer.
  • Snakes cannot pass through walls, resulting in game over if they try.
  • Edge-of-the-world behavior is undefined unless surrounded by walls.
  • Powerups: Collect powerups to increase your snake's length by a fixed amount.
  • Crashing: Crashing into walls or other snakes results in respawning with a shorter snake after a delay.

Game Design

  • Visual Design:

    • Snakes are rendered with colorful, smooth lines (10px stroke width).
    • Powerups are bright red squares (16x16px) with yellow borders.
    • Walls are solid blocks (50x50px) that create obstacles.
  • Game World:

    • The game utilizes two coordinate spaces:
      • World-Space: Centered at (0, 0) with coordinates extending from -worldSize / 2 to +worldSize / 2.
      • Image-Space: The screen's top-left corner is (0, 0), dynamically adjusted to keep the snake centered.

Architecture

The game is structured using three main components:

  1. Model: Tracks all in-game entities, including snakes, walls, powerups, and world size.
  2. Controller: Handles server communication, player inputs, and updates to the model.
  3. View: Renders the game world using Blazor.Extensions.Canvas for a smooth and engaging experience.

Key Features

  • Name Customization: Players can customize their snake's name.
  • Server Connection: Connect to the game via IP address or hostname and select a connection port.
  • Dynamic Rendering: Snakes, powerups, walls, and player scores are rendered in real-time.
  • Player Customization: First 8 players have unique colors, with options for additional players to reuse colors.
  • Crash Animations: Snakes flash red briefly when crashing.
  • Powerup Effects: Powerups provide satisfying visual feedback when collected.
  • Zoom: Use the 'm' and 'n' keys to zoom in and out of the game world.
  • Disconnect Button: A dedicated button allows players to disconnect (reconnection is not yet implemented).

Performance and Design Considerations

  • High Performance: Optimized for smooth gameplay, even at 50+ FPS.
  • Polished Animations: Including smooth score updates, crash effects, and zoom animations.
  • User-Friendly Design: Thoughtful user experience with seamless interactions and feedback.

📄 License

This project is licensed under the MIT License – see the LICENSE file for details. Please do not copy code, it counts under Academic Misconduct


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published