Giter Club home page Giter Club logo

battleship's Introduction

Battleship

Real-time online multiplayer battleship TUI game for the AP Computer Science Principles 2021 Performance Task written in Dart. Most of the code is uncommented but somewhat self-documenting.

Table of Contents

Architecture

This project contains both the game client and the centralized game server. The server is responsible for keeping track of the game state and coordinating the clients for each game.

Clients communicate with the server using HTTPS (for general API stuff) and WebSockets (for gameplay).

Game data (boards, ships, cells, etc.) are serialized to strings when sent over the network.

Requirements

  • Dart >=2.17.0

Building and running

Directly

Run the battleship.dart file in the bin directory.

dart run bin/battleship.dart

Concatenation

Concatenate bin/battleship.dart and all of its dependencies into a single file.

make concat

The result will be at build/main.dart.

Watch mode

Re-concatenate the files every time a file changes.

make watch

Google Docs mode

Concatenating in Google Docs mode will place an extra space at the beginning of each line for easy copy-paste.

make gdocs

Compilation

Compile the game into an executable.

make dist

The executable will be at build/battleship.

Usage

battleship

  • Prints a help message.

battleship [--ascii] client [server_address]

  • Run the battleship game client, connecting to the server at the given origin (hostname:port; yes, port is required), or localhost:8080 if no origin is given.
  • If --ascii is specified, the game will use ASCII art instead of Unicode characters, which might not be supported by all terminals or fonts.

battleship server [address]

  • Start a battleship game server, listening on the given hostname and port, or localhost:8080 if no address is given.

battleship's People

Contributors

calico32 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.