Coder Social home page Coder Social logo

black-earth's Introduction

Black Earth

A Scorched Earth clone, made for fun.

Overview

Our goal is to create a clone of the popular MS-DOS game Scorched Earth, using the Python Arcade Library.

Contribute

We will try to follow a feature-branch development pattern.

  • Identify a feature to work on or bug to fix (preferrably create or use a Github Issue)
  • Create a branch
  • Complete your work in your branch
  • Create a pull request to merge your branch into main

Environment

Since we are developing a Python application here, we recommend using a virtual environment. Since Python Arcade requires Python 3.6 or higher, we recommend creating the virtual environment using a python3 command:

shell_prompt$: python3 -m venv .venv

Once you have created and activated your virtual environment, synchronize your packages with the listed requirements.txt file in the repository.

(venv_name) shell_prompt$: pip install -r requirements.txt

When new packages need to be installed, please update the requirements.txt file by running:

(venv_name) shell_prompt$: pip freeze -l > requirements.txt

This will ensure that other developers will be using the same Python packages and versions as you, and that we all stay in sync.

License

Notes on license?

Other

ANy other stuff?

black-earth's People

Contributors

cgrooves avatar thespy0 avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

black-earth's Issues

Tank turret stops accepting input, stuck high or low

I've noticed in a couple of cases that when I'm controlling the tank turret, it will suddenly go really fast to one side or the other, depending on which arrow-key I've been favoring, and will not let up. This seems to be especially noticeable if you're trying out the code in #14 and you press spacebar while holding down left or right arrow keys.

This indicates some bug in the turret-control logic, and ought to be resolved.

Controllable tank angle

Acceptance Criteria:

  • Left/Right buttons can cause the tank's angle to increase and decrease (bounded at 0 and 180 degrees)
  • We can visually see the tank turret moving and displaying the angle
  • (optional) Text display of the angle on the HUD

Implement sequential and synchronous firing modes

In order for the gameplay to not stink, we want to implement the logic so that the game will process either a single fire event or all fire events before moving on to accept more inputs.

Acceptance Criteria

  • When firing, gameplay "stops" until firing is complete (i.e. bullets have completely detonated)
  • Able to trigger sequential (one-at-a-time config and fire) or synchronous (one-at-a-time config, then all fire) gameplay mode with options

Project titled incorrectly in README.md

We have the wrong title in the README for the project. Should also add some sections such as "Development", "Documentation", "Introduction" or "Overview", once we get into it more.

Player Turns

The players can take turns firing the projectile at each other. Back-and-forth, back-and-forth.

Acceptance Criteria:

  • Game play is now that players can take turns firing projectiles at each other
  • Some visual indicator of whose turn it is

Tank Object

Object that resembles a tank.

Criteria:

  • Tank body
  • Controllable barrel

Destructible Ground

We want to have destructible ground: explosions should take out chunks of the ground, ideally overhangs should collapse, the whole "dirt" concept.

Bullet projectile 1.0

Acceptance Criteria:

  • Bullet can be fired from a player tank on fire command
  • Bullet visibly follows basic ballistic trajectory using player tank inputs (angle, power)
  • Bullet disappears upon hitting the ground

Tank as a sprite and collisions

The Tank needs to be a Sprite, no longer a hand-drawn image using arcade.Shape stuff. This will involve finding/creating a tank sprite image, learning to load it into the game, and setting the tank image and collision. Might end up being two sprites (one for the tank, one for the turret).

Acceptance Criteria

  • Tank is a sprite
  • Tank added to physics engine

Encapsulate HUD

Turn HUD into a class that is instantiated in the main Game Window.

Should have methods for:

  • update: update the state of the HUD
  • draw: render the HUD to the screen

Can just be the same text that's currently being written, should just be in a class to make it cleaner and easier to read.

Main Window Display

Make the main game display window where we can see sky and ground (they don't have to actually be interact-able, just create a visual backdrop for the game).

Player tanks on main window

We need a couple of player tanks that we can drop into the main window.

Acceptance Criteria:

  • Player tank sprites/images selected and stored in a logical place in the repo
  • Two player tanks of different colors displayed on the ground in the main window

Encapsulate tank turret

The Tank turret should be a class, and encapsulate its own update and draw methods.

The Tank should have a Turret.

The Turret might have a reference to its parent Tank.

Acceptance Criteria

  • Turret is its own class
  • Tank instantiates Turret
  • Tank updates and draws Turret through Turret's class functions

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.