Giter Club home page Giter Club logo

coconut-run's People

Watchers

 avatar

coconut-run's Issues

Logical sprite hierarchy

The current Sprite hierarchy is:

- Sprite
  - Movable
    - Avatar
    - Block

When incorporating other items (bananas, power ups, etc), this hierarchy
might fail us. For example, we might allow a Coconut to collide with the
Avatar when the Coconut is falling, but disallow this with Bananas.

Thus, I propose a new hierarchy:

- Sprite
  - Movable
    - Avatar
    - Droppable
      - Coconut
      - Banana
      - Heart
      - etc

Original issue reported on code.google.com by elbenshira on 26 Jun 2009 at 1:20

Failed interpolation

The interpolation between logic updates it not working. One problem is that 
each sprite does not have a current_velocity member that the renderer can 
use.

Original issue reported on code.google.com by elbenshira on 16 Jun 2009 at 2:17

shadow under Sprites

Putting a simple circular shadow under the sprites would make it look much
better. See the lol.jpg series on the group uploads for how it could
improve presentation.

Original issue reported on code.google.com by elbenshira on 26 Jun 2009 at 4:55

division by 0

What steps will reproduce the problem?
1. catch '1', '/'
2. catch '0'
3. division by 0 error

What is the expected output? What do you see instead?
Not sure what we should output. Maybe nothing, until the 0 is popped off?
I.e. catch python's eval() division by zero exception.

Original issue reported on code.google.com by elbenshira on 18 Jul 2009 at 10:59

Avatar item feature

The player will be able to pimp out Coco with items. Items increase Coco's
abilities.

Item categories:
- head gear
- necklace

Original issue reported on code.google.com by elbenshira on 26 Jun 2009 at 5:00

real physics engine

Chipmunk (http://code.google.com/p/chipmunk-physics/) is a physics engine
for 2d apps. There is a python wrapper for it, pymunk
(http://code.google.com/p/pymunk/).

Physics implementation is rather unnecessary, but still cool. Maybe
sometime in the future.

Original issue reported on code.google.com by elbenshira on 2 Aug 2009 at 5:04

Make collision obvious to player

Special effects (visual and auditory) should occur after a
collision(coconut w/ avatar) to make that collision noticeable to the player.

Examples: avatar sprite reacts, sound, text displayed

Original issue reported on code.google.com by elbenshira on 14 Jun 2009 at 6:11

regexify Op.oprnd()

An operand is any rational number. Thus, we should use a regex expression
to check if a string is a an operand.

Original issue reported on code.google.com by elbenshira on 17 Jul 2009 at 4:54

joystick support

Allow joystick support. Paul has a 360 controller. Get at it ;).

Original issue reported on code.google.com by elbenshira on 10 Jul 2009 at 12:42

Visual health indicator

The number of lives should be represented not with a number, but with hearts.

Original issue reported on code.google.com by elbenshira on 24 Jun 2009 at 2:22

numbers append after caught

What steps will reproduce the problem?
1. catch a number (e.g. 4)
2. catch another number (e.g. 3)
3. now we have a VALID number 43

What is the expected output? What do you see instead?
We should not see 43 and it should not be valid. We should see two seperate
numbers 4 3, and it is not valid.

Please use labels and text to provide additional information.

Original issue reported on code.google.com by elbenshira on 16 Jul 2009 at 5:13

Coconuts won't die

The coconuts don't disappear, despite having been asked nicely to do so.

Original issue reported on code.google.com by jasontbradshaw on 17 Jun 2009 at 10:26

Banana basket feature

You can only collect bananas if you are carrying a basket. A basket can
only hold a certain number of bananas. The more bananas in the basket, the
slower Coco moves.

Original issue reported on code.google.com by elbenshira on 27 Jun 2009 at 1:46

coco runs off screen

New state machine allows coco to run off screen.

Possible solutions:
ugly hacks.. think harder, elben

Original issue reported on code.google.com by elbenshira on 2 Aug 2009 at 1:12

flexible ms between frames

In Animatable, each state should have its own mspf value. We should be able
to set this value when we set a state to an animation sequence.

Original issue reported on code.google.com by elbenshira on 26 Jul 2009 at 7:57

Coconut collision with ground visual/auditory improvements

Coconuts hitting the ground should be visually and auditory more pleasing.

Examples:
 * shadow that increases in size as coconut gets closer to ground
 * dirt rises from ground
 * coconuts bounce after hitting ground (and avatar)
 * coconuts roll

Original issue reported on code.google.com by elbenshira on 14 Jun 2009 at 6:16

avatar_vel should be encapsulated inside Avatar

coconut_run.py currently has an avatar_vel variable that controls the speed 
of avatar movement. Different avatars, however, can have different 
velocities. In other words, Avatar should have a max_vel member.

Original issue reported on code.google.com by elbenshira on 16 Jun 2009 at 8:21

limit expression size

Currently, we can have an infinite (until out of memory) number of operands
and operators. We need to design a limit on expression size, as part of the
game play.

Example:
- start with a low number of oprnds and optrs (e.g. 3). Increase this as
level increases or as you "buy" more room.

Original issue reported on code.google.com by elbenshira on 17 Jul 2009 at 11:48

Featureful backdrop

The backdrop (background landscape) should be more than an image. We will 
eventually have animated backdrops with multiple levels.

To do this, we need a Backdrop class that can handle multiple surface layers 
and animated surfaces.

Original issue reported on code.google.com by elbenshira on 16 Jun 2009 at 3:25

use logging API from stdlib

We should be logging stuff for our own future benefit. Check out Python's 
Logging library.

Original issue reported on code.google.com by elbenshira on 27 Jul 2009 at 4:31

create Game class for saving/loading game state

Player should be able to save current state of game and load it at a later
time.

Some of the things Game should hold:
- player's name
- # of bananas
- # of lives
- items bought
- avatar stats
- etc

Original issue reported on code.google.com by elbenshira on 26 Jun 2009 at 1:15

coconut fall acceleration

Implement (realistic) acceleration for falling coconuts.

Original issue reported on code.google.com by elbenshira on 14 Jun 2009 at 7:12

Intelligent FPS Management

Instead of locking the frame-rate down to some arbitrary constant
(currently 60 FPS), we should have it dynamically adapt based on how fast
the machine is currently rendering it.

A sprite's movement speed should adapt based on the current frame-rate, and
should appear to move at the same real-world speed regardless of whether
the machine is rendering the level at 6 or 600 FPS.

How to: http://www.gamedev.net/reference/articles/article1382.asp 

Original issue reported on code.google.com by elbenshira on 14 Jun 2009 at 6:07

better file path computation

We are manually compute paths to files: folder+'/'+file

We should be using os.path.join(folder, file), which figures out the path 
arithmetic for your OS.

Original issue reported on code.google.com by elbenshira on 27 Jul 2009 at 7:24

Generalized menu function

We need some way to have different "areas" of the game where things take
place.  Game play is one are, different menus are others.

Original issue reported on code.google.com by jasontbradshaw on 15 Jun 2009 at 8:48

Isolate input handling

Abstract input handling from the main loop into its own function.

Original issue reported on code.google.com by jasontbradshaw on 15 Jun 2009 at 8:53

Correct points system

Right now, the player gains one point per logical frame. This should be one 
point per second, with extra points for picking up special items and such.

Original issue reported on code.google.com by elbenshira on 16 Jun 2009 at 3:29

change resolution to 800*600

Resolution is currently 640*480. We find that 800*600 gives us more much
needed room.

The only work left is to resize all backdrop surfaces to the right
resolution. This should be an automated process so that we can switch
between any resolution with easy.

Original issue reported on code.google.com by elbenshira on 25 Jul 2009 at 11:41

create expression engine

A flexible expression engine is needed for the educational math portion of
cocorun. The expression engine should be able to handle complex math
expressions such as "sin(4 * (4 + 3))".

Ideas:

- Primitive
 - Operand
 - Operator
- Expression

Original issue reported on code.google.com by elbenshira on 8 Jul 2009 at 4:12

sound and music

Write a Sound and Music class.

Original issue reported on code.google.com by elbenshira on 27 Jun 2009 at 2:05

flexible Rect for sprites

Right now, the rect of a sprite obj is tied to the sprite's image. We
should be able to manually specify the dimensions of the rect. This way, we
can crop out the sprite into what is actually part of the sprite and what
is not.

An example of where this is needed is the avatar sprites, which is 96x64px.
But we do not want all 96x64 to count as the sprite.

Original issue reported on code.google.com by elbenshira on 26 Jul 2009 at 8:51

save/load game settings

Make a way to save and load game configurations. Allow everything to be
configurable through this system.

Most of the settings will be hidden from the regular user.

Original issue reported on code.google.com by elbenshira on 25 Jul 2009 at 10:56

Ground level should have more padding

The ground level is currently the bottom edge of the screen. We should
provide a padding between what is "ground" and the screen edge.

A member ground_lvl should be part of the Level class.

Original issue reported on code.google.com by elbenshira on 14 Jun 2009 at 6:40

unary operators limited

Unary operators are currently limited to the following formats:
[sin, 3, ...]
[..., +, sin, 3, ...]

Unary works by operating on the next element. It cannot be sequences as such:
[exp, log, 3]

This is due to limitations in Expr.__str__(). It can only place a
parenthesis after the first right, and cannot tell if right is a unary.

Solution:

Implement a stack for keeping track of when to put parenthesis.

Original issue reported on code.google.com by elbenshira on 18 Jul 2009 at 12:46

save/load game settings

We should be able to save a game settings into a file and load it.

Settings:
- drop frequency
- drop velocity
- etc

Original issue reported on code.google.com by elbenshira on 24 Jul 2009 at 9:07

Improve game manual

Currently, our GameManual (see wiki) consists of little useful information. 
This should eventually be the one-stop place for a player to learn about 
Coco's Fun Coconut Run.

The Quick Guide section should get a player up and running as fast as 
possible. Other sections should go into detail about each feature.

Original issue reported on code.google.com by elbenshira on 16 Jun 2009 at 2:15

Accurate collision detection

Currently, collision detection does not feel real. The Rect that Avatar
uses is just the image size of the avatar (32*64 px). This can be improved
by making avatar.rect the collision rect and some other image_rect the size
of the image.

Original issue reported on code.google.com by elbenshira on 26 Jun 2009 at 5:06

Organize classes in a logical manner

Create a cocolib.py that stores all the classes used in coconut_run.py.

Original issue reported on code.google.com by elbenshira on 25 Jun 2009 at 3:03

increase delay in "d" key

What steps will reproduce the problem?
1. start game
2. collect coconuts
3. hit "d" to remove the last coconut caught
4. more than one coconut (expression) is removed due to very low repeat key
delay

What is the expected output? What do you see instead?

We should only see one expression be removed. Instead, we see a lot of
expression being removed, even if we try to hit and release the "d" key as
fast as possible.

Possible solution:

Only remove once per "d" key press down.

Original issue reported on code.google.com by elbenshira on 16 Jul 2009 at 4:40

eval() accepts expressions that we don't want

1. We catch, in order, "3", "+", "-", "3"
2. This expression is: "3+-3"
3. Python evaluates this as: 3 + (-3) = 0

We, however, would not want this. "3+-3" is an invalid expression because
we consider "+-" as two operators next to each other.

Thus, we must write our own parser that distinguishes operators versus
operands. The rules may be:

Let U = unary operator,
    B = binary operator, and
    E = valid expression.

E is valid iff at least one of the following holds:
 1) E = a number
 2) E = E B E
 3) E = U E

Original issue reported on code.google.com by elbenshira on 10 Jul 2009 at 2:57

Erratic avatar movement

Rapidly pressing the left or right arrow keys causes the avatar to jump in
that direction.

Original issue reported on code.google.com by jasontbradshaw on 17 Jun 2009 at 8:46

better lives visual display

If lives > 14, hearts go off screen.

Find better way of display lives (maybe HEART X a, where a = num of lives).

Original issue reported on code.google.com by elbenshira on 27 Jun 2009 at 10:51

animate sprite

Any sprite should be able to animate. From outside the sprite, animation
should be automatic. The user should not have to (and perhaps should not be
able to) animate the sprite manually.

Animation code may be complex, and does interplay with both logical and
graphical aspects of a sprite. Hence, we should strive to hide its
rendering complexity when working in the logical.

Original issue reported on code.google.com by elbenshira on 8 Jul 2009 at 5:21

allow unary operators in expression engine

Even though there is built in acknowledgement of unary operators (e.g.
sin(), exp()) in the expression engine, there isn't full implementation
support. 

The biggest reason is that currently, if our Expr looks like: e = ["sin",
"3"], then str(e) ==> "sin3" instead of "sin(3)".

Original issue reported on code.google.com by elbenshira on 17 Jul 2009 at 3:32

can't move Coco and press other buttons at same time

What steps will reproduce the problem?
1. hold left arrow
2. press "d"
3. Coco stops moving left

What is the expected output? What do you see instead?
Coco should continue moving left and whatever "d" does should happen.

Possible Solution(s):
Instead of moving Coco after we detect a left arrow key down, we set some
flag that will move Coco left forever until we see a left arrow key up.

Original issue reported on code.google.com by elbenshira on 18 Jul 2009 at 11:38

Make health indicator transitions smooth

When you gain or lose health, the health indicator (hearts) should not
appear/disappear abruptly.

Some ideas:
- fade in/out
- scale in/out
- scale in, "pop" out (need new sprite)

Original issue reported on code.google.com by elbenshira on 26 Jun 2009 at 5:03

create an installer or write instructions

We need installing and starting up instructions for Windows, Linux, and Mac
OS X.

We might want to check out http://www.pyinstaller.org/.

Questions:
- if we don't use pyinstaller and do it manually, do we need to include
python and pygame or show user where to get it?

Original issue reported on code.google.com by elbenshira on 18 Jul 2009 at 5:57

basket should follow head movement

The basket should follow Coco's head up/down movement. Easiest solution is
to make the basket part of the Coco sprite.

Original issue reported on code.google.com by elbenshira on 2 Aug 2009 at 6:58

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.